读书人

Struts1原理及常识总结

发布时间: 2012-07-23 09:42:19 作者: rapoo

Struts1原理及知识总结
1.Struts1是Apache推出的java web开发领域一个比较早,同时也是使用最广泛的MVC开源框架,对于Struts1的基础不再做说明,本文只总结Struts1开发中的一些小技巧。

2.Struts配置文件中支持通配符:

如:

    <init-param>             <param-name>ConvertNULL</param-name>             <param-value>true</param-value>      </init-param>  



(2).Struts中的动态FormBean:

动态FormBean不需要手动写ActionForm的javaBean,因此没有属性的get/set方法。

动态Form其实就相当于一个HashMap,通过set(属性名)/get(属性名)来设置和获取属性值。

(3).Struts配置文件中<action>的parameter属性可以向action传递参数。

(4).Struts的action配置中,path属性是必须的,type属性是可选的。

type、forwar、include是三者之间必选一个。

其中type和forward不能同时出现,forward中隐含了type。

19.Struts的plug-in:

(1).作用:将自己的一些程序代码插入进Struts中央控制器ActionServlet的生命周期中,即在ActionServlet启动和停止的过程中加入自己的代码,但不需要编写ActionServlet的子类,相比ContextListener的好处在于可以获得Struts内部的一些特定信息。

(2).编写plug-in的步骤:

a.编写实现PlugIn接口的类。

b.在struts配置文件中配置<plug-in>和<set-property>元素。

20.编写自定义的RequestProcessor:

RequestProcessor用于对请求做一些处理,编写自定义请求处理器的方法如下:

(1).编写继承RequestProcessor的类,覆盖其process方法。

(2).在struts的配置文件中通过<controller>元素标签来配置自定义的RequestProcessor类和其相关属性。

21.Struts中的DispatchAction:

(1).使用DispatchAction时,不能覆盖其execute()方法。

(2).在struts配置文件中,action中应配置parameter属性,以区分DispatchAction中不同的方法。

(3).DispatchAction中,有些请求需要ActionForm,而有些请求则不需要,若ActionForm使用了表单校验的话,struts启动时,不需要表单的action就会报空指针异常,解决方法如下:

通常写两个action,需要表单校验的请求放在一个DispatchAction中,不需要表单校验的请求放在另一个DispatchAction中。

22.MappingDispatchAction:

MappingDispatchAction可以让每个请求对应一个独立的配置。其在struts中的配置方法:

Action的parameter属性的值直接为MappingDispatchAction中具体的方法名,即每个请求对应一个独立的配置,而type却对应同一个类。

23.Struts中常用的Action:

(1).ForwardAction与forward属性:

必须配parameter属性,用于跳转到parameter指定的路径。

注意:ForwardAction还可以简化配置,不用配type,直接配forward属性。

(2).IncludeActionn与include属性:

和ForwardAction与forward属性类似。

(3).DownloadAction:

动态生成文件,供浏览器下载,返回StreamInfo类型。

注意:为了顺利下载文件,最好重写DownloadAction的execute()方法,在执行父类的execute()方法之前设置HTTP头信息处理附件,具体代码如下:

response.setHeader(“Content-Disposition”,”attachment;filename=文件名”);

若自定义写servlet处理的话,还需加入response.setContentType(“application/x-MSdownload”);

(4).LocaleAction:

用于改变客户端的语言信息,读取客户端指定的国际化资源文件。

注意:LocaleAction的语言,国家,跳转页面等参数需要从Form表单中获得。

(5).LookupDispatchAction:

覆盖getKeyMethodMap()方法,作用是多个国际化资源文件按钮对应同一个Action中的同一个方法问题。

注意:按钮国际化资源文件只能放在默认文件中。

24.Struts将xml文件中各个元素映射成相应的java对象原理:

Struts使用Apache的digester框架将xml文件中的各个元素映射成为相应的java对象。

(1).Apache的Commons Digester框架是一套xml to Object API,专门用于将XML文档转换成为相关的javaBean对象,它让开发人员不用编写解析XML和组装JavaBean对象的具体代码和细节。

(2).Digester框架内容应用SAX方式去解析XML文档,在解析XML文档过程中,Digester框架按照预先注册好的规则去处理所遇到的XML数据。

(3).为Digester框架注册规则需提供两个要素:模式(描述xml某个元素的方式)和规则(模式匹配时操作)。

Digester内部维护者一个堆栈。

25.Struts中央控制器ActionServlet init()方法的工作原理:

(1).调用initInternal()方法,初始化struts内部使用的国际化资源包。

(2).调用方法读取ActionServlet的初始化配置参数,对于ConvertNULL参数为ConvertUtils注册相应的转换器。

(3).使用Digester框架从web.xml文件中获取ActionServlet的url请求映射路径。

(4).使用Digester从struts配置文件中生成ModuleConfig对象。

(5).根据ModuleConfig对象生成MessageResource对象,DataSource对象,以及PlugIn对象,并冻结ModuleConfig的设置。

26. Struts中央控制器ActionServlet doGet()和doPost(()方法的工作原理:

(1).doGet()和doPost()方法调用process()方法。

(2).process()方法中先得到与struts配置文件相对应的ModuleConfig对象。

(3).从ModuleConfig对象中获取RequestProcessor对象。

Struts配置文件中可以通过<controller>元素来配置RequestProcessor的类和其相关的属性。



转自 http://blog.csdn.net/chjttony/article/details/6099101

读书人网 >开源软件

热点推荐