Board logo

标题: 深入 Struts 1.1(3)ActionServlet [打印本页]

作者: look_w    时间: 2018-7-15 08:56     标题: 深入 Struts 1.1(3)ActionServlet

ActionServlet我们首先来了解 MVC 中的控制器。在 Struts 1.1 中缺省采用 ActionServlet 类来充当控制器。当然如果 ActionServlet 不能满足你的需求,你也可以通过继承它来实现自己的类。这可以在 /WEB-INF/web.xml 中来具体指定。
要掌握 ActionServlet,就必须了解它所扮演的角色。首先,ActionServlet 表示 MVC 结构中的控制器部分,它需要完成控制器所需的前端控制及转发请求等职责。其次,ActionServlet 被实现为一个专门处理 HTTP 请求的 Servlet,它同时具有 servlet 的特点。在 Struts 1.1 中它主要完成以下功能:      
此外,ActionServlet 还负责初始化和清除应用配置信息的任务。ActionServlet 的初始化工作在 init 方法中完成,它可以分为两个部分:初始化 ActionServlet 自身的一些信息以及每个模块的配置信息。前者主要通过 initInternal、initOther 和 initServlet 三个方法来完成。
我们可以在 /WEB-INF/web.xml 中指定具体的控制器以及初始参数,由于版本的变化以及 Struts 1.1 中模块概念的引进,一些初始参数被废弃或者移入到 /WEB-INF/struts-config.xml 中定义。下面列出所有被废弃的参数,相应地在 web.xml 文件中也不鼓励再使用。
ActionServlet 根据不同的模块来初始化 ModuleConfig 类,并在其中以 XXXconfig 集合的方式保存该模块的各种配置信息,比如 ActionConfig,FormBeanConfig 等。
初始化工作完成之后,ActionServlet 准备接收客户请求。针对每个请求,方法 process(HttpServletRequest request, HttpServletResponse response) 将被调用。该方法指定具体的模块,然后调用该模块的 RequestProcessor 的 process 方法。
1
2
3
4
5
6
protected void process(HttpServletRequest request,
        HttpServletResponse response)
        throws IOException, ServletException {
    RequestUtils.selectModule(request, getServletContext());
    getRequestProcessor(getModuleConfig(request)).process(request, response);
}




RequestProcessor 包含了 Struts 控制器的所有处理逻辑,它调用不同的 processXXX 方法来完成不同的处理。下表列出其中几个主要的方法:
方法功能processPath获取客户端的请求路径processMapping利用路径来获得相应的 ActionMappingprocessActionForm初始化 ActionForm(如果需要)并存入正确的 scope 中processActionCreate初始化 ActionprocessActionPerform调用 Action 的 execute 方法processForwardConfig处理 Action 返回的 ActionForward




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0