快上网专注成都网站设计 成都网站制作 成都网站建设
成都网站建设公司服务热线:028-86922220
网站建设
移动开发
小程序开发
运维推广
网站推广
网站推广
运维外包
运维外包
网站报价
经典案例
网站知识
关于我们
网站建设知识
十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
各种Action的实用场合
不同的
Action
类处理不同的用户请求,并不意味着一个
Action
类只能执行一个操作。在
Action
类中可以聚合多个操作。基本原则是一个
Action
与一个业务操作相关联。例如商品的增、删、改、查可以放到一个
Action
类中实现,而购物车功能不能和用户注册功能放到同一个
Action
类中。[@more@]Struts中预定义的
Action
类:
1. ForwardAction类:类似于
forward>功能,在Struts中尽量避免直接调用jsp(会失去了MVC风格),当仅仅需要从一个JSP页面到另一个JSP页面的请求转发操作时,并不需要一个真正的
Action
,ForwardAction类专门用于请求转发,不进行任何其他业务操作(MVC中控制器的作用),这样做的好处是控制器可以预处理请求。
具体使用ForwardAction类只需在配置文件中声明,无需编写代码:
<
action
input=”/index.jsp”
name=”loginForm”
scope=”request”
validate=”false”
path=”/homepage”
type=”org.apache.struts.actions.ForwardAction”
parameter=”/shop/homepage.jsp” />
parameter属性用于指定往哪里转发。Path、type、parameter三个属性为必须,其他可忽略。
2. IncludeAction类:类似于
动作或Servlet中的RequestDispatcher的include()方法功能。
<
action
input=”/index.jsp”
mane=”loginForm”
scope=”request”
validate=”false”
path=”/homepage”
type=”org.apache.struts.actions.IncludeAction”
parameter=”/shope/includepage.jsp” />
3. DispatchAction类:常用于在一个
Action
类中完成一组紧密相关的业务操作,例如增、删、改、查,可以减少重复编程。不同于一般的
Action
类,创建一个扩展DispatchAction类的子类时,不必覆盖execute()方法,而是创建一些实现具体业务操作的方法,这些方法和execute()方法有一样的参数和返回值,以及声明可能抛出的异常,例如:
Public final class UserAction extends DispatchAction{
Public ActionForward add(ActionMapping mapping,ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
Throws Exception{
If(log.isDebugEnabled())
Log.debug(“Entering ‘add’ method”);
User user = new User();
User.addRole(new Role(“admin”));
UserForm userForm = (UserForm)convert(user);
updateFormBean(mapping,request,userForm);
return mapping.findForward(“edit”);
}
public ActionForward delete(ActionMapping mapping,ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
Throws Exception{
…………….删除用户的代码写在这里。
Return mapping.findForward(“viewUsers”);
}
在配置DispatchAction类时,需要指定parameter属性为method,例如:
<
action
path=”/users”
type=”包名. UserAction”
name=”userForm”
scope=”request”
input=”/userlist.jsp”
parameter=”method”
validate=”false”
>
<
forward
name=”edit” path=”/WEB-INF/shop/userEdit.jsp” redirect=”false”>
<
forward
name=”viewUsers” path=”/WEB-INF/shop/userlist.jsp” redirect=”false”>
action
>
4. LookupDispatchAction类:是DispatchAction的子类,不同之处在于DispatchAction类使用请求参数的值确定调用哪种方法,而LookupDispatchAction类利用请求参数值,反向查询资源绑定,并将它与类中的一种方法匹配。通常用于在有多个同名提交按钮的表单的场合。例如:
页面代码如下(具有相同的按钮名称“
action
”,但是每个按钮的值都不同):
action=”/shop/cart”>
….
action”>
….
action”>
….
action”>
这里提交按钮的名字
action
与配置文件中的parameter属性值一致。假定在资源文件中已经定义了键为cart.update和cart.checkou和cart.remove的消息资源。
配置文件如下:
<
action
path=”/carts”
type=”包名.CartAction”
name=”userForm”
scope=”request”
input=”viewcart.jsp”
parameter=”
action
”
validate=”false”>
<
forward
name=”success” path=”/shop/viewcart.jsp” redirect=”false”/>
action
>
CartAction.java代码如下:(导入java.util.Map,实现方法:getKeyMethodMap())
Protected Map getKeyMethodMap(){
Map map = new Map();
Map.put(“cart.update”,”updateCart”);
Map.put(“cart.checkout”,”checkout”);
Map.put(“cart.remove”,”removeCart”);
Return map;
}
然后分别实现updateCart、checkout、removeCart方法,每种方法的方法签名与execute方法一致。
当CartAction被触发时,它根据传入按钮的值到消息资源文件中找到相应的键,再由getKeyMethodMap方法返回的Map对象映射到相应的方法。
5.AwitchAction类:主要用于在不同的模块之间切换操作,详见Struts多模块开发。
网页名称:各种Action的实用场合
转载注明:
http://6mz.cn/article/gpgido.html
其他资讯
什么是域名解析?新手怎么进行域名解析?
.CN域名和.COM域名哪个更有投资价值?哪个好
域名怎么来的?为什么有的平台注册不了域名?
2019年最好用的5个seo工具推荐
注册国外域名有什么不同方式?新手要注意哪几点?