struts2近期总结
初始概念:struts2是web.xml进行配置的一个过滤器,当web项目启动的时候,这个过滤器就会生效。
一、Struts执行流程
1、首先,启动tomcat,加载应用的web.xml
2、实例化并初始化过滤器()
Web.xml配置过滤器
3、加载struts.xml配置文件
Struts.xml配置<struts.xmls>
4、客户端发送请求:hello.action()
5、请求到达过滤器()
6、截取请求的动作名称hello,并从struts.xml中找()hello
7、找到后,实例化动作类
8、调用对应的动作方法 ‘method=“sayHello”’,方法有返回值(String)
9、根据返回值,找到name取值对应的结果视图
10、返回jsp页面
二、struts加载
Struts有很多配置文件,加载顺序是default.properties–>struts-default.xml–>struts-plugin.xml–>struts.xml–>struts.properties–>web.xml。
当web应用被tomcat加载的时候,struts2的配置文件就已经被加载过了。
三、修改struts的访问后缀
第一种方式:
在struts.xml的配置文件中添加 <constant name="struts.action.extension" value="do"></constant>
第二种方式:
在src下创建struts.properties
添加struts.action.extension=htm
注:如果这样配置会覆盖struts.xml的配置
第三种方式:
在web.xml中配置
附加:配置struts的开发模式
如图,在struts.xml中做如下配置
开发模式的好处:可以显示更多详细的错误信息
四、Action元素
用途:配置动作类
属性:name、class、method
知识点:动作类的三种写法。(牛客面试题)
1、直接在写个Action类,不需要继承任何类,然后在 struts.xml中配置。
2、写个Action类实现Action接口,然后实现excute方法.
3、写个Action类继承ActionSuport类【推荐使用这种方式】
注:ActionSupport是实现Action接口的类。
五、Struts的拦截器
Struts默认的拦截器配置在struts-default.xml文件中,应用场景:例如登录…
1、创建个拦截器,继承Abastract方法,实现intercept方法
2、在struts.xml中配置拦截器,拦截器需要配置后才可使用。
六、ContextMap
1、动作类的生命周期: 动作类是多例的,每次动作访问,动作类都会实例化。所以是线程安全的。与Struts1的区别是,struts1的动作类是单例的。
2、请求数据存放:在每次动作执行前,核心控制器StrutsPrepareAndExecuteFilter都会创建一个ActionContext和ValueStack对象。且每次动作访问都会创建。这两个对象存储了整个动作访问期间用到的数据。并且把数据绑定到了线程局部变量(ThreadLocal)上了。所以是线程安全的。
3、Context存储数据 (使用s:debug查看contextMap的数据)