struts1学习笔记4---struts的深入研究

本文深入探讨了Struts框架的初始化机制,包括Tomcat启动时读取web.xml文件进行的初始化工作,以及根据struts-config.xml进行的进一步初始化。同时,文章详细阐述了Struts中Action的线程安全性问题,对比分析了Struts1.x和Struts2的区别,强调了在使用Action时需要注意的线程安全性问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

个人主页(http://hi.youkuaiyun.com/space.php?do=home

1.Struts初始化详解

● Struts入口启动

tomcat启动的时候会读取web.xml文件,对其中的一些信息进行初始化的工作,Struts的启动工作就从这里开始

web.xml中的配置信息入:

在web.xml文件中有如下的配置信息:
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>DEBUG</param-name>
<param-value>2</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>2</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
即表示tomcat启动的时候会初始化org.apache.struts.action.ActionServlet类.
<!-- Standard Action Servlet Mapping -->
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>

●Struts的ActionServlet初始化

根据web.xml进行初始化

根据struts-config.xml进行初始化

●Struts中的Action是在请求时初始化,而不是在而不是在读取配置时初始化,且只初始化一次,Action是线程不安全的,因为所有的请求共享一个Action实例

2.Struts的线程安全性

Struts1和Struts2都是线程不安全的,struts1.x一般不考虑安全性问题,这是因为struts1.x调用方法用到的参数一般都是局部变量,我们用于封装客户端请求参数的ActionForm,也是作为一个参数传入,也是局部变量,局部变量是线程安全的

但如果execute方法中使用了实例变量,就存在线程安全性问题,所以不建议使用,如果非用不可,可以使用同步机制去处理

struts1中的Action实例会被多个请求共享,所以要注意线程安全性问题

struts2中Action为每个请求产生一个实例,因此没有安全性问题


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值