Struts2执行流程及环境搭建

struts2和struts1一样,都是应用在web层的框架,不过,它不是基于struts1升级而来,而是一个基于webWork的全新框架,webWork框架是继struts1之后推出的开源框架。

struts2和struts1在体系结构上是有很大差别的,struts2中需要用户实现的组件及元素有:Action类、strusts.xml。去掉了struts1中的actionForm,换了一种新的传递表单数据的方式。通过代码看一下区别吧。

下面是一个简单的登录。

1.页面

    <form id="form" action="user/logon" method="post" name="UserForm">  
        <input type="text" id="userName" name="user.userName" >  
        <input type="text" id="passWord" name="user.passWord">  
        <input type="submit" value="登录">  
    </form>  

2.需要引入的jar以及配置文件的编写。
这里写图片描述

web.xml文件

<filter>  
    <filter-name>struts2</filter-name>  
    <filter-class> org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>  
    <!--struts2的struts.xml文件的默认路径是在src下,如果为了将配置文件集中放置到一个地方,需要在配置过滤器时指定配置文件。同时还需要指定struts-default.xml和struts-plugin.xml这两个配置文件。现在strtus.xml是放在src/config下的-->  
    <init-param>  
<param-name>config</param-name>  
<param-value>struts-default.xml,struts-plugin.xml,config/struts.xml</param-value>  
    </init-param>  
 </filter>  
 <filter-mapping>  
   <filter-name>struts2</filter-name>  
   <url-pattern>/*</url-pattern>  
 </filter-mapping>  

struts.xml文件核心配置文件

    <struts>  
        <!--struts-default是必须要继承的  -->  
        <package name="pac" namespace="/" extends="struts-default">  
            <action name="user" class="com.tgb.struts2.action.LogonAction" >  
                <result name="success">/success.jsp</result>  
                <result name="error">/error.jsp</result>  
            </action>  
        </package>  

    </struts>  

3.Action实现类

    public class LogonAction {  
        private User user;   
        //get、set方法  
        public String execute() throws Exception{  
            if("liusong".equals(user.getUserName())&&"liusong".equals(user.getPassWord())){  
                return "success";  
            }else{  
                return "error";  
            }  
         }  
    }  

Action可以继承ActionSupport,也可以采用不继承方式。

接收参数:可以建一个实体类来获取页面数据,就像struts1中的form,但是不需要继承ActionForm,也可以直接在action中定义userName和passWord属性来接收表单数据,但是struts2不支持直接在action的方法中直接加形参接收参数,这个在springMVC中是支持的。

下面是struts2官网中关于struts2运行流程的图解,非常清晰:
这里写图片描述

客户端发出请求,该请求经过一些过滤器,最后到达FilterDispacherFilterDispacher根据配置文件的信息,判断该请求是否需要某个action,并找到对应的action,action的方法被执行后,根据返回结果在配置文件中匹配相应的页面或者重定向请求,最后将结果返回到客户端。

如果想了解struts2内部更细致的执行流程,可以参考下面在网上摘录的一段描述:

 1. 客户端向服务器发出请求

 2. 请求经过一系列的过滤器,最终到达FilterDispatcher

 3. ActionMapper判断是否需要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy

 4. actionProxy通过ConfigurationManager读取配置文件,根据截取的url找到对应的Action

 5. ActionProxy创建一个ActionInvocation实例

 6. ActionInvocation调用Action的execut方法

 7. ActionInvocation根据struts.xml配置找到对应的返回结果
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看rEADME.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看rEADME.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通;、 3本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看ReAdmE.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值