从Struts源码看action调用过程,以下代码片断来自struts1.1
struts中所有的请求都是通过ActionServlet转发的,一个action请求首先会传给 ActionServlet,ActionServlet会将其委托给RequestProcessor,RequestProcessor进行一些处理后将调用对应的Action类来执行该请求。
ActionServlet、RequestProcessor、Action的职责
ActionServlet负责通过Struts配置文件初始化Struts应用程序的配置,并负责接受用户请求。
RequestProcessor负责与请求相关的各方面,如选择与请求相关联的Form Bean、用数据填充Form
Bean、验证Form Bean的有效性及选择正确的Action类来执行该请求。
Action是Struts框架的终点和你的应用程序代码的起点。
以下为Action执行过程的详细分析:
ActionServlet继承自HttpServlet它重写了其doGet、doPost方法,这两个方法执行时都会调用ActionServlet 的process(HttpServletRequest request, HttpServletResponse response)方法,这里将会获取一个RequestProcessor的实例,并调用RequestProcessor的process (HttpServletRequest request, HttpServletResponse response)方法,这样用户请求就转到了RequestProcessor
以下为RequestProcessor类的process(HttpServletRequest request, HttpServletResponse response)方法的片断
// Create or acquire the Action instance to process this request
Action action = processActionCreate(request, response, mapping);
if (action == null) {
return;
}
// Call the Action instance itself
ActionForward forward =
processActionPerform(request, response,
action, form, mapping);
// Process the returned ActionForward instance
processForwardConfig(request, response, forward);
这里用户请求的Action被实例化后传给processActionPerform(request, response,action, form, mapping)方法,此方法将调用Action的execute(HttpServletRequest request,
HttpServletResponse response,
ActionForm form,
ActionMapping mapping)方法并返回一个ActionForward,
processForwardConfig(request, response, forward)方法将用户界面转到ActionForward指定的url。
至此用户请求的action就执行完毕了。
分享到:
相关推荐
在这一过程中,Struts作为MVC框架负责后端业务逻辑处理,而ExtJS则作为前端展示库,通过Ajax请求获取Struts返回的数据,并将其渲染为动态树形结构。主要涉及的知识点包括: 1. **ExtJS动态树(TreePanel)**: ExtJS...
最近自学java中的框架-struts写了一些小例子,这都是很经典的程序,如果大家瞧得起要下载去看看,顺便给俺找找不足的地方。我的qq 821865130 email qingtian_hechen@163.com 希望大家能多多给我帮助。在此谢谢各位!...
这将告诉容器如何处理Struts请求。 现在,让我们逐步完成这个过程: 1. 在Eclipse中创建一个新的Dynamic Web Project,设置好项目名称和相关属性。 2. 将Struts的jar包添加到项目的`WEB-INF/lib`目录,并更新项目...
在Struts2框架中,Action类是业务逻辑处理的核心组件,它负责接收并处理来自用户的请求。本实例探讨了如何让一个Action类处理多个请求,这在开发中常见于需要集中处理相似请求的情况,可以提高代码复用性和结构的...
Struts请求处理时序图** Struts框架在接收到用户请求后,ActionServlet首先被调用,接着ActionFormBean封装请求数据,如果验证失败则返回Input视图,否则Action执行并返回ActionForward,ActionForward指导视图的...
- 在`web.xml`中配置Struts的前端控制器(`ActionServlet`),这是所有Struts请求的入口点。同时,这里也需要配置`struts-config.xml`的引入。 7. **运行与测试**: - 配置好所有组件后,将项目部署到服务器,...
在本文中,我们将深入探讨如何将Ajax技术与Struts2框架结合,实现异步请求数据。这种方式能够提高用户体验,因为它允许后台处理数据而无需刷新整个页面。以下是对关键知识点的详细说明: 1. **Ajax(Asynchronous ...
- `src/main/java`:存放Java源代码,包括Action类(处理Struts请求)和模型类(存储预加载数据)。 - `src/main/resources`:可能包含配置文件,如Struts2的配置文件`struts.xml`。 - `src/main/webapp`:Web...
在本文中,我们将深入探讨Struts高级实战进阶的一些关键知识点,包括MVC模式、Struts请求处理时序图、Struts的使用技巧以及实际案例分析。 首先,MVC模式是一种软件设计模式,它将应用程序分为三个主要部分:模型...
Struts提供了动作标签库(JSP标签),如`s:form`、`s:textfield`等,使得在JSP中处理Struts请求变得更加简便。 6. **数据持久化**: 为了实现CRUD操作,项目可能使用了像Hibernate这样的ORM(对象关系映射)工具来...
在Struts2框架中,处理多个请求的方法是通过一个Action类实现多个处理方法。这使得代码结构更加清晰,每个方法对应特定的业务逻辑。以下是Struts2处理多个请求的三种主要方式的详细说明: 1. **动态方法调用 (DMI -...
从用户发起请求开始,经过ActionServlet、ActionForm、Action类、ActionForward,最后到JSP页面展示,这就是一个完整的Struts请求处理流程。在处理过程中,Struts会管理ActionForm的状态,处理异常,并进行视图渲染...
Struts应用需要在这里配置ActionServlet,并设定URL映射规则,比如以".do"结尾的URL通常代表Struts请求。 struts-config.xml文件是Struts应用的特定配置,它定义了组件之间的关联,包括Action的映射、表单Bean的...
以及`RequestProcessor`,它是Struts请求处理的起点,负责将请求路由到正确的`ActionServlet`实例。 在源码中,你还可以学习到Struts如何与Spring、Hibernate等其他框架集成,以及它如何利用国际化、异常处理、主题...
2. **ActionServlet处理**:如果请求被识别为Struts请求,Filter Dispatcher会调用`process()`方法,该方法负责解析请求并根据`struts-config.xml`配置文件找到对应的ActionMapping。 3. **ActionMapping匹配**:...
2. **Struts请求处理时序图**:Struts框架通过ActionServlet接收用户请求,然后根据struts-config.xml配置文件转发到相应的Action,接着Action处理请求并可能使用FormBean封装数据,进行业务处理,最后将结果返回给...
8. **生命周期和工作流程**:一个典型的Struts请求处理流程包括:用户发起请求 -> 过滤器Dispatcher(StrutsPrepareAndExecuteFilter)拦截请求 -> 解析请求参数 -> 创建Action上下文 -> 创建ActionForm对象 -> 调用...
Struts请求处理过程的源码分析涉及到ActionServlet、ActionMapping、ActionForm等类的交互,而digester是Struts用来解析XML配置文件的工具,它使用规则集来实例化和配置对象。 此外,PPT还强调了在使用Struts开发时...
8. **Struts工作流程**:描述一个完整的Struts请求处理流程,从用户发起请求到返回响应的全过程。 9. **实战演练**:可能提供一个或多个实战案例,让新手通过实践加深对Struts的理解。 通过阅读和理解这个文档,...