Struts控制器组件
Struts控制器组件主要包括:
ActionServlet组件:充当Struts框架的中央控制器。
RequestProcessor组件:充当每个子应用模块的请求处理器。
Action组件:负责处理一项具体的业务。
Struts控制器组件主要完成以下任务:
接受用户请求,根据用户请求调用何时得模型组件来执行相应的业务逻辑,获取业务逻辑执行结果,根据当前状态以及业务逻辑执行结果选择合适的视图组件返回给用户。
ActionServlet类
ActionServlet类是Struts框架的核心控制器组件,所有的用户请求都先由它来处理,然后把请求转发给其他组件。只允许有一个ActionServlet类,仅创建一个实例。
Struts框架初始化过程:
加载ActionServlet类,执行init()方法。(时序图见p97)。
RequestProcessor类
对于多应用模块的Struts应用,每个子模块都有各自的RequestProcessor实例。
在ActionServlet的process()方法中一旦确定了正确的子应用模块,就会调用子应用模块的RequestProcessor实例的process()方法来处理。
Action类
Action类是用户起请求和业务逻辑之间的桥梁,每个类充当客户的一项业务代理。在RequestProcessor类预处理请求时,创建Action实例后,就调用自身的processActionPerform()方法,该方法再调用Action的execute()方法。
Action类的execute()方法会返回一个ActionForward对象,他代表Web资源的逻辑抽象。
返回方法:return mapping.findForward("Success");
Action类的局部变量是每个线程独立的,而实例变量时被所有线程共享的。
使用内置的Struts Action类
1.ForwardAction类
负责请求转发,配置文件如下
<action
path="/viewsignin"
parameter="/security/signin.jsp"
type="org.apache.struts.actions.ForwardAction"
scope="request"
name"loginForm"
validate="false"
input="/index.jsp">
</action>
2.IncludeAction类
包含另一个Web组件,配置如下:
<action
path="/sample"
parameter="sampleInclude.jsp"
type="org.apache.struts.actions.IncludeAction"
scope="request"
name"sampleForm"
input="/sample.jsp">
</action>
parameter属性指定要包含的组件。
3.DispatchAction类
继承DispatchAction类,可以在Action中写多个方法,配置如下
<action path="/car"
type="netstore.order.ShoppingCartActions"
scope="request"
input="/order/shoppingcart.jsp"
validate="false"
parameter="method">
<forward name="success" path="/order/shoppingcart.jsp" redirect="true"/>
method请求:
http://localhost:8080/netstore/action/cart?method=addItem&id=2
将调用addItem()方法。
4.LookupDispatchAction类
LookupDispatchAction是DispatchAction的子类,通常主要应用在一个表单中有多个提交按钮,而这些按钮又有一个共同的名字的场合。例子:
jsp片段:
//俩个按钮
<html:submit property="action">
<bean:message key="button.saveorer">
</html:submit>
<html:submit property="action">
<bean:message key="button.checkout">
</html:submit>
实现getKeyMethodMap()方法
protected Map getKeyMethodMap(){
Map map = new HashMap();
map.put("button.saveorder","saveorder");
map.put("button.checkout","checkout");
}
Action中写俩种方法。
Struts配置:
<action path="/processcheckout"
type="netstore.order.ProcessCheckoutAction"
scope="request"
input="/order/shipping.jsp"
name="checkoutForm"
validate="true"
parameter="action">
<forward name="Success" path="/order/payment.jsp"/>
</action>
利用Token解决重复提交
流程:
1.提交前请求转发给PrepareInsertAction调用saveToken(request)方法。创建令牌。
2.在jsp中form标签处理判断session范围是否存在Token。
3.提交表单后,InsertAction处理,首先调用isTokenValid(request)方法判断。
步骤:
1.创建PrepareInsertAction。execute()方法就一个saveToken(request);
2.修改InsertAction,在execute()方法开头添加判断。
3.Struts配置文件
<forward name="insert" path="/prepareinsert.do">
<action path="/prepareinsert"
type=".....ParpareInsertAction">
<forward name="success" path="insert.jsp">
</action>
分享到:
相关推荐
在Struts1中,控制器组件是整个架构的核心,它们负责协调用户请求、业务逻辑和视图之间的交互。本篇将深入探讨Struts1的控制器组件以及动态ActionForm的概念。 **Struts1控制器组件** 1. **ActionServlet组件**: ...
- **Struts控制器组件**:Struts框架中的控制器组件主要负责处理HTTP请求,并根据不同的请求类型调用相应的Action处理类。 - **开发流程**:在使用Struts开发Web应用时,通常会遵循以下步骤: - 定义应用需求 - ...
- **可编程组件**:Struts控制器组件是一组可编程的组件,可以帮助开发者定义应用如何与用户交互。 - **组件实例**:例如,通过Struts可以轻松定义超链接、表单以及自定义的动作,从而简化了与用户交互的过程。 #...
虽然不是视图组件的一部分,但Struts2的拦截器(Interceptor)在视图展现过程中也起着关键作用。拦截器可以处理用户请求,在Action执行前后进行一些预处理或后处理,比如权限验证、日志记录等。这使得视图组件能专注...
Struts控制器,特别是Action,是Struts框架中的核心组件,负责协调用户请求、业务逻辑与视图之间的关系。理解并熟练运用Action,能有效提高Java Web应用的开发效率和质量。通过配置Action,结合模型和视图,可以构建...
本课件主要讲解了Struts框架中的控制器组件及其相关概念。 **第二章 Struts 控制器** 1. **Struts 控制器组件** - **ActionServlet**: 是Struts框架的核心,它是Servlet的子类,处理HTTP请求。ActionServlet负责...
Struts控制器组件主要包括以下几部分: - **超链接和表单**:开发人员可以通过定义超链接和表单来实现用户与Web应用程序的交互。这些超链接和表单通常指向特定的动作。 - **定制动作**:每个动作都是一个实现了`...
2. **Struts控制器组件** 在这一部分,读者将了解到Struts的核心组件——ActionServlet和ActionForm,它们在处理用户请求和更新模型数据方面的作用。ActionServlet作为Web应用的入口点,负责接收请求并转发到相应的...
- **Struts控制器组件**:Struts的核心是其控制器组件,它负责处理HTTP请求并将数据传递给模型对象或视图组件。 - **Struts开发Web应用流程**: - 用户通过浏览器发送请求到服务器。 - 服务器将请求交给Struts控制...
5. Struts控制器组件(Controller) Struts的控制器是ActionServlet,它拦截HTTP请求,解析请求参数,调用相应的Action,然后根据Action的返回结果转发到对应的视图。 6. Struts模型组件(Model) 模型由ActionForm...
##### 4.2 Struts控制器组件 Struts的核心是一个强大的控制器组件,它负责接收用户的请求,调用相应的模型组件处理数据,并将结果转发给视图组件进行渲染。这一机制确保了应用程序各部分之间职责明确,易于扩展和...
1. **Struts控制器组件:** - 控制器是Struts框架的核心组件之一,负责接收用户的请求,并根据请求参数调用相应的业务逻辑处理类。 - **ActionServlet:** - 是Struts控制器的主要实现,它监听HTTP请求并将请求...