Struts2 运行流程
2019-09-04 07:20:53来源:博客园 阅读 ()
Struts2 运行流程
1、在web.xml中使用Struts的核心过滤器拦截所有请求。
<filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
2、核心过滤器在struts.xml中根据name找到指定的action,调用此action的拦截器、拦截器栈对请求进行预处理。
<package name="action" namespace="/" extends="struts-default"> <action name="loginAction" class="action.LoginAction"> <result name="teacher">/teacher.jsp</result> <result name="student">/student.jsp</result> <result name="error">/error.jsp</result> </action> </package>
有2种配置action的方式,一种是在struts.xml中配置,另一种是使用约定,约定xxx.action对应XxxAction类,约定需要插件支持。
Servlet是使用Filter(过滤器)对请求进行预处理,Action是使用Interceptor(拦截器)对请求进行预处理。一组拦截器组成一个拦截器栈。
<package>有必需属性 extends="struts-default",即此<package>的配置继承struts-default.xml中 <package name="struts-default"></package> 的配置。
缺省拦截器配置时,会自动调用struts-default包中的默认拦截器栈来处理。
3、利用反射创建此action的实例(调用空参的构造器),再调用此action的setter方法将请求参数赋给成员变量。
4、调用指定的方法来处理请求,并返回一个String类型的值。
<package name="action" namespace="/action" extends="struts-default">
<action name="loginAction" class="action.LoginAction" method="">
<result name=""></result>
<result name=""></result>
</action>
</package>
先找这个action有没有设置method属性,如果有method属性,且action类中有指定的方法,就调用指定的方法;
缺省method属性时,默认调用execute()。
5、按照<action>里配置的<result>,根据返回的字符串,确定要调用的页面。
6、根据struts.xml中配置的页面调用方式,调用页面,作为响应,返回给浏览器。
<action name="loginAction" class="action.LoginAction">
<result name="teacher" type="redirect">/teacher.jsp</result>
<result name="student" type="dispatcher">/student.jsp</result>
<result name="error">/error.jsp</result>
</action>
可以在<result>中配置逐个配置,也可以在<package>下统一配置。
<package name="action" namespace="/" extends="struts-default"> <result-types> <result-type name="redirect" class="org.apache.struts2.result.ServletRedirectResult" default="true"/> </result-types> <action name="loginAction" class="action.LoginAction"> <result name="teacher">/teacher.jsp</result> <result name="student">/student.jsp</result> <result name="error">/error.jsp</result> </action> </package>
这种配置需要设置为默认值才有效 default="true" 。
注意:<package>对子元素的顺序是有要求的。
如果没有配置方式,会调用继承的struts-default中的配置(默认为dispatcher,转发)。
原文链接:https://www.cnblogs.com/chy18883701161/p/11453948.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- Java学习之第二天 2020-06-11
- 架构设计 | 异步处理流程,多种实现模式详解 2020-06-04
- Java必备主流技术流程图,写得非常好! 2020-05-29
- 微服务项目持续集成部署流程简介 2020-05-27
- Spring MVC必须知道的执行流程 2020-05-23
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash