您的位置:首页 > 编程语言

用session实现购物车(含设计分析及源代码)part3

2011-11-20 15:43 477 查看
最后的servlet层的编写:

首先是简单商品展示页(IndexServlet.servlet):

package cn.zc.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import cn.zc.domain.Product;
import cn.zc.service.ProductServiceImpl;

public class IndexServlet extends HttpServlet {

/**
*
*/
private static final long serialVersionUID = 1L;

/**
* Constructor of the object.
*/
public IndexServlet() {
super();
}

/**
* Destruction of the servlet. <br>
*/
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}

/**
* The doGet method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to get.
*
* @param request the request send by the client to the server
* @param response the response send by the server to the client
* @throws ServletException if an error occurred
* @throws IOException if an error occurred
*/
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();

ProductServiceImpl psi=new ProductServiceImpl();//数据库service层
List<Product> entities=psi.findAll();//得到数据库数据

out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
out.println("<HTML>");
out.println("  <HEAD><TITLE>A Servlet</TITLE>");
out.println("<style>a{text-decoration:none;color:#666;font-size:20px;}");
out.println("a:hover{font-size:22px;color:#f00;}");
out.println("</style>");
out.println("</HEAD>");
out.println("  <BODY>");

out.println("    <ul style=\"list-style:none;text-align:left;\">");
for (int i=0;i<entities.size();i++){
out.println("<li><a href=\"BuyServlet?id="+(i+1)+"\">"+"商品名称:  "+
//每个列出商品的名称和价格做成超链接点击时提交给BuyServlet
entities.get(i).getName()+"    参考价格:  "+
entities.get(i).getPrice()+"</a></li>");
}
out.println("    </ul>");

out.println("<br><br>");
out.println("<a href=\"ShowCart\">查看购物车</a>");// 查看购物车连接跳转到ShowCart.servlet
out.println("  </BODY>");
out.println("</HTML>");
out.flush();
out.close();
}

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request,response);
}

/**
* Initialization of the servlet. <br>
*
* @throws ServletException if an error occurs
*/
public void init() throws ServletException {
// Put your code here
}

}


点击商品超链接后显示商品的详细信息(BuyServlet.servlet):
package cn.zc.servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import cn.zc.domain.Product;
import cn.zc.service.ProductServiceImpl;

public class BuyServlet extends HttpServlet {

/**
*
*/
private static final long serialVersionUID = 1L;

/**
* Constructor of the object.
*/
public BuyServlet() {
super();
}

/**
* Destruction of the servlet. <br>
*/
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}

/**
* The doGet method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to get.
*
* @param request the request send by the client to the server
* @param response the response send by the server to the client
* @throws ServletException if an error occurred
* @throws IOException if an error occurred
*/
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();

ProductServiceImpl psi=new ProductServiceImpl();//数据库service层
int id=Integer.parseInt(request.getParameter("id"));
Product entity=psi.findById(id);//查找出指定id的商品

out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
out.println("<HTML>");
out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
out.println("  <BODY>");

out.println("    <table border=\"1px\" width=\"500px\" height=\"200px\">");
out.println("      <tr height=\"50px\">");
out.println("        <td>商品名:</td>");
out.println("        <td>"+entity.getName()+"</td>");
out.println("        <td>实惠价:</td>");
out.println("        <td>"+entity.getPrice()+"</td>");
out.println("      </tr>");
out.println("      <tr>");
out.println("        <td>介绍:</td>");
out.println("        <td colspan=\"3\">"+entity.getSummary()+"</td>");
out.println("       </tr>");
out.println("    </table>");
out.println("<br>");
out.println("<form action=\"CarServlet\" method=\"post\">");
//点击下面的“加入购物车”提交按钮将数据提交给CarServlet提示用户已添加至购物车
out.println("<input type=\"hidden\" value=\""+id+"\" name=\"id\">");
out.println("购买数量:<input type=\"input\" name=\"buyNum\">");
out.println("<input type=\"submit\" value=\"加入购物车\">");
out.println("<br><br>");
out.println("<a href=\"IndexServlet\">返回首页继续购物</a>");
out.println("</form>");
out.println("  </BODY>");
out.println("</HTML>");
out.flush();
out.close();
}

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

doGet(request,response);
}

/**
* Initialization of the servlet. <br>
*
* @throws ServletException if an error occurs
*/
public void init() throws ServletException {
// Put your code here
}

}


确认信息(CartServlet.servlet):

package cn.zc.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import cn.zc.domain.CarProduct;
import cn.zc.domain.Product;
import cn.zc.service.ProductServiceImpl;

public class CarServlet extends HttpServlet {

/**
*
*/
private static final long serialVersionUID = 1L;

/**
* Constructor of the object.
*/
public CarServlet() {
super();
}

/**
* Destruction of the servlet. <br>
*/
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}

/**
* The doGet method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to get.
*
* @param request
*            the request send by the client to the server
* @param response
*            the response send by the server to the client
* @throws ServletException
*             if an error occurred
* @throws IOException
*             if an error occurred
*/
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
ProductServiceImpl psi = new ProductServiceImpl();// 数据库service层
int id = Integer.parseInt(request.getParameter("id"));
Product entity = psi.findById(id);// 查找出指定id的商品
HttpSession session = request.getSession();// 创建session

/* 将加入购物车的商品id和购买数量存储到car购物车对象中 */
CarProduct carProduct = new CarProduct(entity, Integer.parseInt(request
.getParameter("buyNum")));
List<CarProduct> car = (List<CarProduct>) session.getAttribute("product");// 用列表存储CarProduct对象
if(car==null){
car=new ArrayList<CarProduct>();
}
car.add(carProduct);// 添加新加入购物车的商品
session.setAttribute("product", car);

out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
out.println("<HTML>");
out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
out.println("  <BODY>");
out.print("   物品 :  " + carProduct.getName()
+ "  已加入购物车!购买数量是:  "
+ carProduct.getBuyNum());
out.println("<br><br>");
out.println("<a href=\"IndexServlet\">返回首页继续购物</a>");
out.println("<a href=\"ShowCart\">查看购物车</a>");
out.println("  </BODY>");
out.println("</HTML>");
out.flush();
out.close();
}

/**
* The doPost method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to
* post.
*
* @param request
*            the request send by the client to the server
* @param response
*            the response send by the server to the client
* @throws ServletException
*             if an error occurred
* @throws IOException
*             if an error occurred
*/
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

doGet(request, response);
}

/**
* Initialization of the servlet. <br>
*
* @throws ServletException
*             if an error occurs
*/
public void init() throws ServletException {
// Put your code here
}

}


购物车信息(ShowCart.servlet):

package cn.zc.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import cn.zc.domain.CarProduct;

public class ShowCart extends HttpServlet {

/**
*
*/
private static final long serialVersionUID = 1L;

/**
* Constructor of the object.
*/
public ShowCart() {
super();
}

/**
* Destruction of the servlet. <br>
*/
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}

/**
* The doGet method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to get.
*
* @param request
*            the request send by the client to the server
* @param response
*            the response send by the server to the client
* @throws ServletException
*             if an error occurred
* @throws IOException
*             if an error occurred
*/
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();

out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
out.println("<HTML>");
out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
out.println("  <BODY>");
showCar(request, response);// 调用查看购车函数
out.println("  <br><br><a href=\"IndexServlet\">返回首页继续购物</a>");
out.println("  </BODY>");
out.println("</HTML>");
out.flush();
out.close();
}

public void showCar(HttpServletRequest request, HttpServletResponse response)
throws IOException {// 查看购物车函数
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
List<CarProduct> car;

HttpSession session = request.getSession();
if (session.getAttribute("product") == null) {
out.println("  你还没有买东西哟!");
} else {
car = (List<CarProduct>) session.getAttribute("product");
Double totalMoney = 0.00;// 消费总金额
out.println("    <table border=1px>");
for (CarProduct entity : car) {//以表格形式显示以购买商品信息
out.println("     <tr><td>商品名:</td><td>" + entity.getName()
+ "</td><td>单价:</td><td>" + entity.getPrice()
+ "<td>购买数量:</td><td>" + entity.getBuyNum()
+ "</td></tr>");
totalMoney += entity.getBuyNum() * entity.getPrice();
}

out.println("      <tr><td colspan=5>消费总额小计(RMB):</td><td>"
+ totalMoney + "</td></tr>");
out.println("    </table>");
}
}

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

doGet(request, response);
}

/**
* Initialization of the servlet. <br>
*
* @throws ServletException
*             if an error occurs
*/
public void init() throws ServletException {
// Put your code here
}

}


这样我们的session购物车就简单的完成了。还有许多小缺点和bug希望各位积极提出意见。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐