【实例】仿购物车原理-高级Action应用二(通过DispatchAction方式)
2015-02-13 09:55
429 查看
本篇文章是对上一篇文章"【实例】仿购物车原理-高级Action应用一(普通传参方式)"功能进行完善。
通过DispatchAction类把删除和添加购物车的方法,归纳到一个Action里面。
1.使用DispatchAction方法的流程
1.1建立一个DispatchAction,并给定参数method,编写处理函数
1.2在Jsp中用action路径?method=方法名称方式提交(注意method=post)
1.3DispatchAction类必须引用import org.apache.struts.actions.DispatchAction;包
1.4需要在struts-config.xml配置文件中增加parameter="method"属性
缺陷:jsp页面中要传递的参数要认识Action内的方法
部分代码如下
buy.jsp页面(页面对删除功能进行了完善)
ActionForm页面(BuyForm.java)
Action页面(BuyAction.java)
struts-config.xml配置文件
通过DispatchAction类把删除和添加购物车的方法,归纳到一个Action里面。
1.使用DispatchAction方法的流程
1.1建立一个DispatchAction,并给定参数method,编写处理函数
1.2在Jsp中用action路径?method=方法名称方式提交(注意method=post)
1.3DispatchAction类必须引用import org.apache.struts.actions.DispatchAction;包
1.4需要在struts-config.xml配置文件中增加parameter="method"属性
总结
好处:通过DispatchAction类把删除和添加购物车的方法,归纳到一个Action里面。缺陷:jsp页面中要传递的参数要认识Action内的方法
部分代码如下
buy.jsp页面(页面对删除功能进行了完善)
</pre><pre>
<%@ page language="java" pageEncoding="gb2312"%> <%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean"%> <%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html"%> <%@ taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic"%> <html> <head> <title>添加图书到购物车</title> </head> <body><!--参数add与delete必须要和Action.java内的方法一致--> <!--/buy.so?method=add中的method必须要和配置文件中的parameter="method"一致--> <html:form action="/buy.so?method=add" method="post"> 请填写您要买的图书 : <html:text property="book"/><br/> <html:submit value="点击提交到购物车"/> </html:form> <hr/> <logic:present name="cart"> <logic:iterate id="book" name="cart"> <bean:write name="book"/> <html:link action="/buy.so?method=delete" paramId="Book" paramName="book">删除</html:link><br/> </logic:iterate> </logic:present> </body> </html>
ActionForm页面(BuyForm.java)
public class BuyForm extends ActionForm { //生成book成员属性的get与set方法 private String book; }
Action页面(BuyAction.java)
/* * Generated by MyEclipse Struts * Template path: templates/java/JavaClass.vtl */ package guo_demo5.action; import java.io.UnsupportedEncodingException; import java.util.ArrayList; import guo_demo5.form.BuyForm; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.apache.struts.actions.DispatchAction; //使用DispatchAction 必须引用这个包 public class BuyAction extends DispatchAction { public ActionForward add(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { BuyForm buyForm = (BuyForm) form; String book = buyForm.getBook(); try { book = new String(book.getBytes("ISO-8859-1")); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } HttpSession session = request.getSession(); ArrayList cart =(ArrayList)session.getAttribute("cart"); if(cart==null){ cart = new ArrayList(); session.setAttribute("cart", cart); } cart.add(book); return new ActionForward("/buy.jsp"); } //删除方法 public ActionForward delete(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { // TODO Auto-generated method stub String book = request.getParameter("Book"); try { book = new String(book.getBytes("ISO-8859-1")); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } HttpSession session = request.getSession(); ArrayList cart =(ArrayList)session.getAttribute("cart"); cart.remove(book); return new ActionForward("/buy.jsp"); } }
struts-config.xml配置文件
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd"> <struts-config> <data-sources /> <form-beans > <form-bean name="buyForm" type="guo_demo5.form.BuyForm" /> </form-beans> <global-exceptions /> <global-forwards /> <action-mappings > <action attribute="buyForm" input="/buy.jsp" name="buyForm" path="/buy" scope="request" parameter="method"<span style="white-space:pre"> </span>//jsp页面之所以能接收到add与delete的参数值,全靠这个属性 type="guo_demo5.action.BuyAction"> <set-property property="cancellable" value="true" /> </action> </action-mappings> <message-resources parameter="guo_demo5.ApplicationResources" /> </struts-config>
相关文章推荐
- 【实例】仿购物车原理-高级Action应用三(通过MappingDispatchAction方式)
- 【实例】仿购物车原理-高级Action应用一(普通传参方式)
- 【实例】struct框架一个表单两个提交按钮-高级Action应用三(LookupDispatchAction应用)
- asp.net中购物车的两种存储方式Session和Cookie的应用实例
- 购物车的两种存储方式Session和Cookie的应用实例
- asp.net中购物车的两种存储方式Session和Cookie的应用实例
- [网络收集]asp.net中购物车的两种存储方式Session和Cookie的应用实例
- asp.net中购物车的两种存储方式Session和Cookie的应用实例
- Python通过DOM和SAX方式解析XML的应用实例分享
- asp.net中购物车的两种存储方式Session和Cookie的应用实例
- Python通过DOM和SAX方式解析XML的应用实例分享
- [网络收集]asp.net中购物车的两种存储方式Session和Cookie的应用实例
- VI高级命令集锦及VIM应用实例
- iptables高级应用实例(转)
- JPEG 原理详细实例分析及其在嵌入式 Linux 中的应用
- 快速排序原理解析及实例应用
- LINUX高级应用之IPTABLES 实例分析
- RMAN高级应用之Duplicate复制数据库(2)辅助实例
- JPEG 原理详细实例分析及其在嵌入式 Linux 中的应用
- JPEG 原理详细实例分析及其在嵌入式 Linux 中的应用