首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

Struts1核心种之RequestProcessor详解

2012-10-08 
Struts1核心类之RequestProcessor详解Struts框架只允许应用中存在一个ActionServlet类,但是可以存在多个客

Struts1核心类之RequestProcessor详解

Struts框架只允许应用中存在一个ActionServlet类,但是可以存在多个客户化的RequestProcessor类,每个子应用模块都可以有单独的RequestProcessor类,?

?

ActionServlet主要负责初始化,以及介绍请求并找到合适的RequestRrocessor,之后真正干活的是RequestProecssor和Action.?

在ActionServlet的doGet/doPost中会调用process方法而最终会调用RequestProcessor类的process方法.而在process又调用了17个 processXXX其它方法来完成工作。下面介绍这个方法.?

?

?

在RequestProcessor类的process方法中,会访问ControllerConfig、ActionMappig和ActionForward实例的属性,ControllerConfig类和struts配置文件的<controlle>r元素对应,ActionMapping类和<action>元素对应,ActionForward和<forward>元素对应,process方法通过访问这三个类实例的属性来获得相关的配置信息。

?

补充下一下调用RequestUtils的方法:

RequestUtils.applicationInstance(java.lang.String className):通过类名返回一个类实例-------processActionCreate方法中用到。

?

RequestUtils.createActionForm(HttpServletRequest request,ActionMapping mapping,ModulConfig modulConfig,ActionServlet servlet):

先从request或者session中查找ActionForm,如果存在的话就直接返回,否则就创建它的实例,把它存在request或者session范围内,在把它返回。------processActionForm方法中用到

?

RequestUtils.populate(Object obj,HttpServletRequest request):

把Http请求的参数值封装到指定的JavaBean中,请求的参数名和JavaBean的属性名相匹配,当ActionServlet把用户输入的标单数据封装到ActionForm 时,就调用它。-------processPopulate方法中用到。

?

扩展RequestProcessor只需两步即可。

1). 继承RequestProcessor,实现自定义的processXXXXX()处理方法。例如xxxRequestProcessor

2). 在struts-config.xml文件中配置xxxRequestProcessor。用户重写了RequestProcessor ,但Struts 并不知道,必须配置才可以。下面是配置本示例:

?

? 

热点排行