博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Struts2部分
阅读量:6501 次
发布时间:2019-06-24

本文共 3392 字,大约阅读时间需要 11 分钟。

Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。

Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架。其全新的Struts 2的与Struts 1的体系结构差别巨大。

Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与API完全脱离开,所以Struts 2可以理解为WebWork的更新产品。

虽然从Struts 1到Struts 2有着太大的变化,但是相对于WebWork,Struts 2的变化很小。

体系结构

应用流程注解
当 收到请求(HttpServletRequest)它将请求传递给一个标准的的过滤链包括(ActionContextCleanUp)过滤器。
经过Other filters(SiteMesh ,etc),需要调用FilterDispatcher核心控制器,然后它调用ActionMapper确定请求哪个Action,
ActionMapper返回一个收集Action详细信息的ActionMaping对象。
FilterDispatcher将控制权委派给ActionProxy,ActionProxy调用配置管理器(ConfigurationManager) 从配置文件中读取配置信息(struts.xml),然后创建ActionInvocation对象。
ActionInvocation在调用Action之前会依次的调用所用配置拦截器(Interceptor N)一旦执行结果返回结果字符串ActionInvocation负责查找结果字符串对应的(Result)
然后执行这个Result Result会调用一些模版(JSP)来呈现页面。
拦截器(Interceptor N)会再被执行(顺序和Action执行之前相反)最后响应(HttpServletResponse)被返回在web.xml中配置的那些过滤器和核心控制器(FilterDispatcher)。

 

Struts 2资源包的目录结构

apps:官方提供的Struts 2应用实例

docs:官方提供的Struts 2文档

lib:Struts 2 发行包及其依赖包

src:Struts 2对应的源代码

 

Action接口中常量字符串的逻辑含义

SUCCESS 表示程序处理正常,并返回给用户成功后的结果
NONE 表示处理正常结束,但不返回给用户任何东西
ERROR 表示处理结果失败
INPUT 表示需要更多用户输入才能顺利执行
LOGIN 表示需要用户正确登录后才能顺利执行

 

 
需要的依赖
javaee
javaee-api
5
org.apache.struts
struts2-core
2.3.4.1
org.apache.struts.xwork
xwork-core
2.3.4.1

配置Struts2

在web.xml中

struts2_helloworld
struts2
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
struts2
/*
index.jsp

 创建控制类HelloWorld

 
import com.opensymphony.xwork2.Action; public class HelloWorld implements Action {
@Override public String execute() throws Exception {
return SUCCESS; } }
 

 创建index.jsp

 

<%@ taglib prefix="s" uri="/struts-tags" %><%--  Created by IntelliJ IDEA.  User:  Date: 2018/11/15  Time: 9:26  To change this template use File | Settings | File Templates.--%><%@ page contentType="text/html;charset=UTF-8" language="java" %>    Title    

====

配置struts.xml

    
    
       
      
        
      
/hh.jsp
  

效果图

 实现通配符

 <?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
        "http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
    <package name="struts06" namespace="/" extends="struts-default">
        <action name="*_*" class="day06.{1}" method="{2}">
            <result name="{2}">/{1}/{2}.jsp</result>
        </action>
    </package>
</struts> 
 

public class PatternAction extends ActionSupport{

  public String list(){
    ((Map<String,Object>)ActionContext.getContext().get("request")).put("msg","Result类型");
   return "list";
  }

  public String add(){

    return SUCCESS;
  }
}

 
list.jsp     Title        list

效果

转载于:https://www.cnblogs.com/s122/p/9974716.html

你可能感兴趣的文章
java内部类访问外部类变量 final_Java内部类引用外部类中的局部变量为什么必须是final问题解析...
查看>>
java编程思想第四章_《JAVA编程思想》学习笔记——第四章 控制执行流程
查看>>
java 栈帧与类的关系_深入理解Java虚拟机之类运行时栈帧结构
查看>>
php中删除评论怎么做的,详解PHP如何实现评论回复删除功能
查看>>
macports 安装php,「macports」MacOS 中 MacPorts 安装和使用 - 金橙教程网
查看>>
php 审计 for linux,for linux是什么意思
查看>>
matlab里面连接器是什么,Oops - an error has occurred
查看>>
matlab建立桌面图标,在ubuntu16.04上创建matlab的快捷方式(实现方法)
查看>>
matlab 识别率,【caffe-Windows】识别率批量输出——matlab实现
查看>>
MATLAB里面的mghglobal函数,Matlab讨论区 - 声振论坛 - 振动,动力学,声学,信号处理,故障诊断 - Powered by Discuz!...
查看>>
smarty使用php代码,笑谈配置,使用Smarty技术_php
查看>>
oracle数据实际值限制,c# – Oracle数据库TNS密钥“数据源”的值长度超过了’128’的限制...
查看>>
silk v3 decoder php,解码转换QQ微信的SILK v3编码音频为MP3或其他格式
查看>>
延时关机命令 linux,windows定时关机和linux定时关机的方法(shutdown命令)
查看>>
linux内核最早延迟,工作队列是实现延迟的新机制,从2.5版本Linux内核开始提
查看>>
linux的操作命令文档,Linux文档操作命令
查看>>
linux不能访问80端口,lunux开放80端口(本地访问不了linux文件可能是这个原因)...
查看>>
linux查看与开启sshd服务,[转载]linux查看与开启sshd服务
查看>>
android单位转换小程序,微信小程序中rpx与rem单位转换
查看>>
html绝对定位重叠,HTML_firefox下绝对定位元素重叠造成不可点击问题,重构地图网站过程中碰到的,f - phpStudy...
查看>>