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,它解析请求参数,根据配置的Action Mapping找到对应的Action类,然后调用该Action的execute()方法执行业务逻辑。ActionServlet是Struts的核心,它将用户...
- **Action实例管理**:对于首次被调用的Action类,ActionServlet会创建其实例,并将其放入缓存中以便后续复用。 - **表单数据填充**:如果配置文件中指定了对应的ActionForm,则从HTTP请求中提取数据填充至...
- `<servlet-class>`指定了这个servlet的实现类为`org.apache.struts.action.ActionServlet`。 - `<init-param>`元素用于配置初始化参数,这里指定了两个配置文件:`/WEB-INF/struts-config.xml`和`/WEB-INF/struts-...
在Struts框架中,我们可以继承org.apache.struts.action.ActionServlet类,创建自己的ActionServlet子类。在子类中,我们可以重写init()方法,以便在Servlet初始化时执行一些自定义的操作。 例如,我们可以创建一个...
1. **子类化**:可以通过继承 `ActionServlet` 类来创建子类,从而覆盖或添加新的行为。 2. **拦截器**:使用拦截器(Interceptors)来扩展 ActionServlet 的功能,例如添加预处理步骤、后处理步骤等。 3. **配置...
5. `ActionServlet`调用`Action`类的`execute`方法,将`ActionForm`对象作为参数传递,`Action`类在此处处理业务逻辑,这可能包括与数据库交互、调用服务层方法等。 6. `Action`执行完成后,会返回一个`Action...
在web应用的部署描述文件web.xml中配置ActionServlet后,当服务器启动或有第一个请求到达时,就会加载并初始化ActionServlet类。初始化过程中,ActionServlet的init()方法会被调用,这是初始化Struts应用的关键。 ...
##### 3.2 ActionServlet类 `ActionServlet`类是Struts框架的核心控制器,它监听HTTP请求,并根据配置将请求转发给相应的`Action`类处理。 - **ActionServlet配置**: 配置`ActionServlet`的行为,如初始化参数等。...
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 ...
- `<servlet>`元素配置ActionServlet类。 - `<servlet-name>`指定ActionServlet的名称,便于在配置文件中引用。 - `<servlet-class>`指定ActionServlet的完整类路径。 - `<init-param>`配置初始化参数,如`...
ActionServlet类** ActionServlet是Struts中的前端控制器,它继承自HttpServlet,并实现了Servlet接口。ActionServlet负责接收用户的HTTP请求,解析请求参数,并根据`struts-config.xml`文件中的配置找到相应的...
##### 1.2 ActionServlet类 ActionServlet是Struts框架的核心控制器,它继承自HttpServlet,负责处理HTTP请求。ActionServlet通过解析配置文件,决定调用哪个Action来处理请求,并将结果转发给相应的视图。其关键...
Struts框架结构主要由JSP页面文件、struts-config.xml配置文件、action类、action servlet类、action form bean等组件所组成。在Struts框架结构中,视图主要是由客户化标签和JSP文件所构成,中间没有任何模型数据或...
##### 1.4 ActionServlet类 `ActionServlet`是Struts框架的核心控制器,继承自`HttpServlet`类。它处理所有的HTTP请求,并负责调度到相应的Action实例进行处理。 ###### 1.4.1 ActionServlet配置 在`web.xml`文件...