struts 1.2
涉及到的包:
commons-beanutils.jar : commons-beanutils.jar 提供对Java 反射和自省API的包装.
commons-digester.jar : Digester基于规则的XML文档解析,主要用于XML到Java对象的映射.
commons-fileupload.jar : 上传组件
commons-logging.jar : 目的是提供一套轻量级的中间层日志接口,将项目与具体的日志框架解耦,
从而实现不同日志框架之间的切换
commons-validator.jar :包用来把验证规则程序提取出来,以供重复使用
jakarta-oro.jar : 一个Java工具包用来在 Java 类中进行文本处理的功能,
提供兼容 Perl5 的正则表达式、类 AWK 的正则表达式等。
struts.jar : struts核心包
antlr.jar: 语法分析生成器
servlet_api.jar : Java Servlet API的全部类和接口的详细说明
aspectjweaver.jar : 用于在Spring 2.0中集成AspectJ AspectJ LTW织入器
web.xml 配置解析:
<servlet-name>action</servlet-name> <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
ActionServlet是Struts中最核心的部分,我们从这里开始。它相当于中央控制器,
我们来看看他是怎么样实现核心Control的。它是通过org.apache.struts.action.ActionServlet来实现的,
所有的请求通过它进行中转。它负责接受所有的request,并且产生相对应的response到请求的页面。
但是它怎么知道对应呢?这里就存在一个map文件(我习惯这么叫它)Struts-config.xml,
它包括了resource文件、如何到达下一个页面、下面一个页面是什么、页面的校验规则、
怎么样显示错误信息(如ActionMessage的使用)的定义。
<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>3</param-value> </init-param>
ActionServlet 初始化 config 成员变量 进行赋值
public ActionServlet()//构造函数也已经进行了默认
{
...
config = "/WEB-INF/struts-config.xml";
debug = 0;
...
}
<load-on-startup>0</load-on-startup>
标记容器是否在启动的时候就加载这个servlet。
当值为0或者大于0时,表示容器在应用启动时就加载这个servlet;
当是一个负数时或者没有指定时,则指示容器在该servlet被选择时才加载。
正数的值越小,启动该servlet的优先级越高。
所以tomcat启动时会加载ActionServlet,也就是会执行ActionServlet中的init()方法,
Struts 的初始化实现就是在这里实现的。
<servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping>
ActionServlet收到请求之后,它将会调用RequestProccessor对象来
处理httprequest请求的消息。如checkerrors等。下一步,它根据浏
览器的请求路径、struts-config.xml文件中对应的请求路径和Action Bean
的对应关系来调用对应的Action Bean的excute方法,action bean处理完成之后,
调用业务模型,调用完成之后,将含有返回下一个页面返回信息的ActionForward
对象传给ActionServlet,然后由actionservlet转换到下一个页面返回给浏览器。
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>3</param-value> </init-param> <init-param> <param-name>detail</param-name> <param-value>3</param-value> </init-param> <load-on-startup>0</load-on-startup> </servlet> <servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping>
默认的ActionServlet会从配置文件web.xml中读取如下初始化参数:
application
应用使用的资源包(resources bundle)的基类
factory
用于创建应用的MessageResources对象的MessageResourcesFactory的类名。确省是org.apache.struts.util.PropertyMessageResourcesFactory。
config
Struts的配置文件,确省是/WEB-INF/struts-config.xml。注意这儿是与应用Context关联的相对路径。
content
定义了确省的内容类型和编码格式,它会被自动地被设置到每个response中,如果JSP/Servlet中没有明确的设置。确省是text/html。
debug
调试信息的级别。默认为0,比当前级别高的调试信息会被log到日志文件中。
detail
与debug的作用类似,只是这个detail是initMapping()时专用的。调试信息会被打印到System.out,而不是日志文件。
formBean
ActionFormBean的实现类,确省为org.apache.struts.action.ActionFormBean
forward
应用中使用的ActionForward类,确省是org.apache.struts.action.ActionForward。
locale
指定了确省使用的Locale对象。设为true,当得到一个session时,会自动在session中存储一个以Action.LOCALE_KEY标示的Locale对象,如果session中还没有与Action.LOCALE_KEY绑定的Locale对象。
mapping
应用中使用的ActionMapping类,确省是org.apache.struts.action.ActionMapping。
multipartClass
文件上传使用的MutipartRequestHandler的实现类。确省为org.apache.struts.upload.DiskMultipartRequestHandler
nocache
如果设为true,那么ActionServlet会自动在每个到客户端的响应中添加nocache的HTML头,这样客户端就不会对应用中的页面进行缓存。确省为false
null
如果设置为true,那么应用在得到一个未定义的message资源时,会返回null,而不是返回一个错误信息。确省是true。
maxFileSize
文件上传的大小上限,确省为250M
bufferSize
文件上传时的缓冲区的大小,确省为4M
tempDir
设置用于上传时的临时目录。工作目录会作为一个Servlet环境(Context)的属性提供。
validate
Are we using the new configuration file format?确省为true。
validating
在解析配置XML文件是是否进行有效性的验证。确省为true