📄 shopaction.java
字号:
/*
* Generated by MyEclipse Struts
* Template path: templates/java/JavaClass.vtl
*/
package book;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
/**
* MyEclipse Struts
* Creation date: 09-19-2007
*
* XDoclet definition:
* @struts.action path="/shopAction" name="shoppingForm" input="/bookshopping.jsp" scope="request" validate="true"
* @struts.action-forward name="bookshopping" path="/bookshopping.jsp"
* @struts.action-forward name="bookinfo" path="/bookinfo.jsp"
*/
public class ShopAction extends Action {
/*
* Generated Methods
*/
/**
* Method execute
* @param mapping
* @param form
* @param request
* @param response
* @return ActionForward
*/
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
//这是处理购物车的Action类
SeeDataBean obj=new SeeDataBean();
//引入ActionForm
ShoppingForm shopform= ( ShoppingForm) form;
//为了节省内存开销,购物车保留在一个会话中
//只保留两个数据,一个是主键,另一个是数量
//首先一定要得到session对象
//购物车本身就是一个哈西表,这里为 tb,会话的名字为shopping
//数先需要根据请求的情况决定会话的内容
javax.servlet.http.HttpSession session=request.getSession();
java.util.Hashtable tb=new java.util.Hashtable();
if (session.getAttribute("shopping") != null)
tb=(java.util.Hashtable)session.getAttribute("shopping");
//这个是加入购物车的动作
if (request.getParameter("Pa") != null) {
//如果是ID值的请求,则在会话中增加一个内容
//条件,原来有的数量将加一,原来没有则加入新的内容
String myID = request.getParameter("Pa");
if (tb.containsKey(myID))
{
int v= Integer.parseInt((tb.get(myID)).toString()); // tb.put(myID.trim(),);
v++;
tb.put(myID.trim(),String.valueOf(v));
}
else
tb.put(myID.trim(),"1");
session.setAttribute("shopping",tb);
}
//这个是修改请求的动作
if (request.getParameter("AddValue") != null) {
//如果是修改值请求,在名称域中取得名称子串
String nameField =shopform.getBook();
if (nameField != null && nameField.trim().length() > 0)
//从请求中取得session名对应的值设到会话变量中
tb.put(nameField.trim(),shopform.getNumber());
session.setAttribute("shopping",tb);
//下面是删除请求的动作
} else if (request.getParameter("DeleteValue") != null) {
//如果是删除值请求,在会话对象中删除名称对应的会话变量名和值
if (tb.containsKey(shopform.getBook()))
tb.remove(shopform.getBook());
session.setAttribute("shopping",tb);
}
//下面要构造购物车的表和下拉列表的内容
//把有关数据库的查询加入到一个哈西表里面去
java.util.Hashtable booktb=new java.util.Hashtable();
//这是提供给下拉列表的内容
java.util.Hashtable selecttb=new java.util.Hashtable();
//通过查询决定本地的表有些什么内容
//遍历,利用一下枚举
java.util.Enumeration sessionNames1 =tb.keys();
//定义主键
String name;
//构造查询条件
String mywhere="where id < 0 ";
while (sessionNames1.hasMoreElements()) {
name = (String)sessionNames1.nextElement();
mywhere+=" or id="+name+" ";
}
//由查询条件决定数据
String[][] bookarray=obj.selectrow("select * from booktable "+mywhere);
//加入哈西表,每行数据都是一个数组
for (int k=0;k<bookarray.length;k++)
{
String[] bk=new String[4];
bk[0]=bookarray[k][1];
bk[1]=bookarray[k][2];
bk[2]=bookarray[k][3];
bk[3]=bookarray[k][4];
booktb.put(bookarray[k][0],bk);
}
//下面构造传出的数组
//遍历,利用一下枚举
java.util.Enumeration sessionNames =tb.keys();
//购物车显示数组
String[][] xs=new String[tb.size()][6];
int i=0;
while (sessionNames.hasMoreElements()) {
name = (String)sessionNames.nextElement();
String[] array=new String[4];
array=(String[])booktb.get(name);
xs[i][0]=array[0];
xs[i][1]=array[1];
xs[i][2]=array[2];
xs[i][3]=array[3];
xs[i][4]=tb.get(name).toString();
//计算合计数
double titl=Integer.parseInt(xs[i][4])*
Double.parseDouble(xs[i][3]);
//格式化输出,防止小数点后面出现很多的九
xs[i][5]= java.text.NumberFormat.getInstance().format(titl);
i++;
//同时也把下拉列表的内容填上
String[] selectsee=(String[])booktb.get(name);
selecttb.put(name, selectsee[1].toString());
}
//把两个表都加入进请求列表
request.setAttribute("shoppinglog", xs);
request.setAttribute("selecttable", selecttb);
//转向bookshopping
return (mapping.findForward("bookshopping"));
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -