`
takkymj
  • 浏览: 128202 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ActionServlet 类

阅读更多
Struts 的入口是 ActionServlet.此类在 Struts 应用程序中负责拦截工作。ActionServlet 的一个实例接受到一个 HttpRequest 对象时,无论这是通过 doGet() 方法还是 doPost() 方法收到的 , 都会调用 process() 方法来处理该请求。 ActionServlet组件:充当Struts框架的中央控制器

ActionServlet的process方法

  protected void process(HttpServletRequest request, HttpServletResponse response)    

        throws IOException, ServletException {    

        //根据request里的信息从servlet Context里找到相应的子模块Module Config,和它下面的Message Resources,并放到request里,使其他组件可以方便的供request里取得应用配置信息和消息资源.

        ModuleUtils.getInstance().selectModule(request, getServletContext());    

//取出MoudleConfig实例config  ModuleConfig config = getModuleConfig(request);    

    //根据config里这个子模块的信息,从servletcontext里,取出这个子模块的RequestProcessor实例

        RequestProcessor processor = getProcessorForModule(config);    

    //如果processor实例为空,就新建一个.同时放到servletcontext里.    

        if (processor == null) {    

           processor = getRequestProcessor(config);    

        }    

//调用RequestProcessor的process方法处理,    

        processor.process(request, response);    

    }   

struts Action 方法分发dispatch

在struts1中,我们知道在客户端发送“url.do”时由前端控制器ActionServlet分派给RequestProcessor来处理客户请求,最后分发给相应的应用程序控制器Action来处理业务,那么在一个应用程序中,如果有n个业务请求就需要n个action来处理,相应就需要n个action类文件,一个Action中只有一个execute方法,如果我们把某一个功能模块的所有方法放在一个Action类文件中,把不同的业务放在不同的方法中,并且由ActionServlet统一进行分发,岂不妙哉!在struts1中DispatchAction给我们提供了解决方法。比如:

定义

public abstract class DispatchAction extends Action

这是一个抽象的Action,它会根据request 中的parameter来执行相应的方法。通个这个Action类可以将不同的Action集中到一个Action文件中来

Struts-config.xml:

<action path="/saveSubscription"

type="org.apache.struts.actions.DispatchAction"

name="subscriptionForm"

scope="request"

input="/subscription.jsp"

parameter="method"/>

在Action中要有相应的方法:

Public class TestAction extends DispatchAction{

public ActionForward delete(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response) throws Exception

public ActionForward insert(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response) throws Exception

public ActionForward update(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response) throws Exception

}

这样,我们就完成了action中方法的分发。可以大大减少action文件的数量。



本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/yakihappy/archive/2009/03/10/3977032.aspx
分享到:
评论

相关推荐

    ActionServlet demo

    当用户提交表单或点击链接时,请求会被发送到ActionServlet,它解析请求参数,根据配置的Action Mapping找到对应的Action类,然后调用该Action的execute()方法执行业务逻辑。ActionServlet是Struts的核心,它将用户...

    ActionServlet深入探讨

    - **Action实例管理**:对于首次被调用的Action类,ActionServlet会创建其实例,并将其放入缓存中以便后续复用。 - **表单数据填充**:如果配置文件中指定了对应的ActionForm,则从HTTP请求中提取数据填充至...

    Struts 源码学习之ActionServlet

    - `&lt;servlet-class&gt;`指定了这个servlet的实现类为`org.apache.struts.action.ActionServlet`。 - `&lt;init-param&gt;`元素用于配置初始化参数,这里指定了两个配置文件:`/WEB-INF/struts-config.xml`和`/WEB-INF/struts-...

    Web.xml中配置Struts[参考].pdf

    在Struts框架中,我们可以继承org.apache.struts.action.ActionServlet类,创建自己的ActionServlet子类。在子类中,我们可以重写init()方法,以便在Servlet初始化时执行一些自定义的操作。 例如,我们可以创建一个...

    structs in action中文完全版\9. 扩展 ActionServlet.pdf

    1. **子类化**:可以通过继承 `ActionServlet` 类来创建子类,从而覆盖或添加新的行为。 2. **拦截器**:使用拦截器(Interceptors)来扩展 ActionServlet 的功能,例如添加预处理步骤、后处理步骤等。 3. **配置...

    Struts1框架执行原理(附Action、ActionServlet、ActionForm工作机制)

    5. `ActionServlet`调用`Action`类的`execute`方法,将`ActionForm`对象作为参数传递,`Action`类在此处处理业务逻辑,这可能包括与数据库交互、调用服务层方法等。 6. `Action`执行完成后,会返回一个`Action...

    Struts1.2源码解读

    在web应用的部署描述文件web.xml中配置ActionServlet后,当服务器启动或有第一个请求到达时,就会加载并初始化ActionServlet类。初始化过程中,ActionServlet的init()方法会被调用,这是初始化Struts应用的关键。 ...

    Struts中文手册

    ##### 3.2 ActionServlet类 `ActionServlet`类是Struts框架的核心控制器,它监听HTTP请求,并根据配置将请求转发给相应的`Action`类处理。 - **ActionServlet配置**: 配置`ActionServlet`的行为,如初始化参数等。...

    Struts中文手册[文字版][中文]

    1.4. ActionServlet类6 1.4.1. ActionServlet配置6 1.4.2. ActionServlet方法7 1.5. ActionMapping 类8 1.6. Action 类.8 1.6.1. Action 类的方法.9 1.7. ActionForm类9 1.8. ActionForward 类.10 1.9. 错误处理.11 ...

    Struts学习笔记

    - `&lt;servlet&gt;`元素配置ActionServlet类。 - `&lt;servlet-name&gt;`指定ActionServlet的名称,便于在配置文件中引用。 - `&lt;servlet-class&gt;`指定ActionServlet的完整类路径。 - `&lt;init-param&gt;`配置初始化参数,如`...

    struts架构和标签库介绍

    ActionServlet类** ActionServlet是Struts中的前端控制器,它继承自HttpServlet,并实现了Servlet接口。ActionServlet负责接收用户的HTTP请求,解析请求参数,并根据`struts-config.xml`文件中的配置找到相应的...

    Struts架构和标签库介绍

    ##### 1.2 ActionServlet类 ActionServlet是Struts框架的核心控制器,它继承自HttpServlet,负责处理HTTP请求。ActionServlet通过解析配置文件,决定调用哪个Action来处理请求,并将结果转发给相应的视图。其关键...

    浅析Struts框架下的Java Web应用.pdf

    Struts框架结构主要由JSP页面文件、struts-config.xml配置文件、action类、action servlet类、action form bean等组件所组成。在Struts框架结构中,视图主要是由客户化标签和JSP文件所构成,中间没有任何模型数据或...

    Struts中文手册.pdf

    ##### 1.4 ActionServlet类 `ActionServlet`是Struts框架的核心控制器,继承自`HttpServlet`类。它处理所有的HTTP请求,并负责调度到相应的Action实例进行处理。 ###### 1.4.1 ActionServlet配置 在`web.xml`文件...

Global site tag (gtag.js) - Google Analytics