struts2近期总结

初始概念:struts2是web.xml进行配置的一个过滤器,当web项目启动的时候,这个过滤器就会生效。

一、Struts执行流程

1、首先,启动tomcat,加载应用的web.xml
2、实例化并初始化过滤器()
Web.xml配置过滤器
struts2近期总结
3、加载struts.xml配置文件
Struts.xml配置<struts.xmls>struts2近期总结
4、客户端发送请求:hello.action()
struts2近期总结
5、请求到达过滤器()
6、截取请求的动作名称hello,并从struts.xml中找()hello
7、找到后,实例化动作类
8、调用对应的动作方法 ‘method=“sayHello”’,方法有返回值(String)
9、根据返回值,找到name取值对应的结果视图
10、返回jsp页面
struts2近期总结

二、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中配置
struts2近期总结

附加:配置struts的开发模式
如图,在struts.xml中做如下配置
struts2近期总结
开发模式的好处:可以显示更多详细的错误信息
struts2近期总结

四、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方法struts2近期总结
2、在struts.xml中配置拦截器,拦截器需要配置后才可使用。
struts2近期总结

六、ContextMap

1、动作类的生命周期: 动作类是多例的,每次动作访问,动作类都会实例化。所以是线程安全的。与Struts1的区别是,struts1的动作类是单例的。
2、请求数据存放:在每次动作执行前,核心控制器StrutsPrepareAndExecuteFilter都会创建一个ActionContext和ValueStack对象。且每次动作访问都会创建。这两个对象存储了整个动作访问期间用到的数据。并且把数据绑定到了线程局部变量(ThreadLocal)上了。所以是线程安全的。
3、Context存储数据 (使用s:debug查看contextMap的数据)
struts2近期总结