Servlet综合使用

主要内容:

- 1、购物车类的实现 - 2、按功能模块组织Servlet,利用method属性(或命名为其他)的值进行不同的处理

课堂记录:
1、网上购物系统购物车如何实现:
思路:建立购物车类(实体类),内含:
(1)属性:

  • 商品与商品数量对应数据的集合——采用HashMap数据结构;
  • 商品总金额

(2)方法:

  • 2个属性的SET、GET方法
  • 计算金额的方法
  • 购物车中增加商品的方法(若购物车中没有此商品,则在集合中增加新商品及数量,若已经有此商品,则修改其数量)
  • 购物车中删除商品的方法

另外,为了判断属性值相同,就认定为同一商品,需要在Product类中重写hashCode方法和equals方法。

具体代码为:

Cart类的实现如下:(Cart.java)

package cn.sdut.po;
import java.util.HashMap;
import java.util.Set;
public class Cart {
         HashMap<Product, Integer> goods;
         double totalPrice;
         public Cart()
         {
                   goods=new HashMap();
                   this.totalPrice=0.0;
         }

         public boolean addGoods(Product product,int number)
         {
                   if(goods.containsKey(product))
                   {
                            goods.put(product, number+goods.get(product));
                   }
                   else
                   {
                            goods.put(product, number);
                   }
                   calTotolPrice();
                   return true;
         }
         public boolean removeGoods(Product product)
         {
                   goods.remove(product);
                   calTotolPrice();
                   return true;
         }
         public void calTotolPrice()
         {
                   double sums=0.0;
                   Set<Product> products = goods.keySet();
                   for(Product product:products)
                   {
                            sums+=product.getProprice()*goods.get(product);
                   }
                   this.totalPrice=sums;
         }
         public HashMap<Product, Integer> getGoods() {
                   return goods;
         }
         public void setGoods(HashMap<Product, Integer> goods) {
                   this.goods = goods;
         }
         public double getTotalPrice() {
                   return totalPrice;
         }
         public void setTotalPrice(double totalPrice) {
                   this.totalPrice = totalPrice;
         }
}

Product类的实现如下(Product.java):

 package cn.sdut.po;
public class Product {
         private int proid;
         private String proname;
         private double proprice;
         private int procount;
         private String prosupplier;
         private String propic;      
         public Product() {
                   super();
         }

         public Product(int proid, String proname, double proprice, int procount,
                            String prosupplier, String propic) {
                   super();
                   this.proid = proid;
                   this.proname = proname;
                   this.proprice = proprice;
                   this.procount = procount;
                   this.prosupplier = prosupplier;
                   this.propic = propic;
         }

         public int getProid() {
                   return proid;
         }

         public void setProid(int proid) {
                   this.proid = proid;
         }

         public String getProname() {
                   return proname;
         }

         public void setProname(String proname) {
                   this.proname = proname;
         }

         public double getProprice() {
                   return proprice;
         }

         public void setProprice(double proprice) {
                   this.proprice = proprice;
         }

         public int getProcount() {
                   return procount;
         }

         public void setProcount(int procount) {
                   this.procount = procount;
         }

         public String getProsupplier() {
                   return prosupplier;
         }

         public void setProsupplier(String prosupplier) {
                   this.prosupplier = prosupplier;
         }

         public String getPropic() {
                   return propic;
         }

         public void setPropic(String propic) {
                   this.propic = propic;
         }

         @Override
         public String toString() {
                   return "Product [proid=" + proid + ", proname=" + proname
                                     + ", proprice=" + proprice + ", procount=" + procount
                                     + ", prosupplier=" + prosupplier + ", propic=" + propic + "]";
         }

         @Override
         public int hashCode() {
                   int result = this.proid + this.proname.hashCode();
                   return result;
         }

         @Override
         public boolean equals(Object obj) {
                   if (this == obj)
                            return true;
                   if (obj == null)
                            return false;
                   if (getClass() != obj.getClass())
                            return false;
                   Product other = (Product) obj;
                   if (proid != other.proid)
                            return false;
                   if (proname == null) {
                            if (other.proname != null)
                                     return false;
                   } else if (!proname.equals(other.proname))
                            return false;
                   return true;
         }
}

2、按功能模块组织Servlet,利用method属性(或命名为其他)的值进行不同的处理以用户管理功能为例,建立UserServlet,其中根据method属性的值,进行不同的处理;在页面或Servlet中需要调用该Servlet时,在…../ UserServlet?………后增加处理分支:&method=xxx,如:…../ UserServlet?id=…&method=del …../ UserServlet?id=…&method=byid…../ UserServlet?id=…&method=add …../ UserServlet?id=…&method=update

UserServlet.java示意如下:

package cn.sdut.servlet;
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import cn.sdut.dao.UserDao;
import cn.sdut.po.User;

@WebServlet("/UserServlet")
public class UserServlet extends HttpServlet {
         private static final long serialVersionUID = 1L;
         UserDao userDao = new UserDao();

         public UserServlet() {
                   super();
                   // TODO Auto-generated constructor stub
         }

         protected void doGet(HttpServletRequest request,
                            HttpServletResponse response) throws ServletException, IOException {
                   request.setCharacterEncoding("utf-8");
                   response.setCharacterEncoding("utf-8");
                   String method = request.getParameter("method");
                   switch (method) {
                   case "all":
                            queryAllUsers(request, response);
                            break;
                   case "add":
                            addUser(request, response);
                            break;
                   case "del":
                            delUser(request, response);
                            break;
                   case "update":
                            updateUser(request, response);
                            break;
                   case "byid":
                            queryUserById(request, response);
                            break;
                   case "batchDel":
                            batchDelStudent(request, response);
                            break;
                   case "batchPwdReset":
                            batchPwdReset(request, response);
                            break;
                   case "login":
                            login(request, response);
                            break;
                   case "regist":
                            regist(request, response);
                            break;
                   case "logout":
                            logout(request,response);
                            break;
                   }
         }

         private void logout(HttpServletRequest request, HttpServletResponse response) throws IOException {
                   HttpSession session = request.getSession();
                   session.invalidate();
                   response.getWriter().write("<script>history.go(-1);</script>");
         }

         private void regist(HttpServletRequest request, HttpServletResponse response)
                            throws ServletException, IOException {
                   String msg = "用户注册失败";

                   String name = request.getParameter("name");
                   String password = request.getParameter("password");
                   String sex = request.getParameter("sex");
                   String birthday = request.getParameter("birthday");
                   String[] hobby = request.getParameterValues("hobby");
                   StringBuilder builder = new StringBuilder();
                   if (hobby != null) {
                            for (String str : hobby) {
                                     builder.append(str).append(",");
                            }
                   }
                   builder.deleteCharAt(builder.length() - 1);
                   String telephone = request.getParameter("telephone");
                   String address = request.getParameter("address");
                   User user = new User();
                   user.setName(name);
                   user.setPassword(password);
                   user.setSex(sex);
                   user.setHobby(builder.toString());
                   user.setAddress(address);
                   user.setBirthday(birthday);
                   user.setTelephone(telephone);
                   user.setType(2);
                   int result = userDao.addUser(user);
                   if (result > 0) {
                            msg = "用户注册成功";
                   }
                   request.setAttribute("msg", msg);
                   request.getRequestDispatcher("/prouser/u_userLogin.jsp")
                                     .forward(request, response);

         }

         private void batchPwdReset(HttpServletRequest request,
                            HttpServletResponse response) throws ServletException, IOException {
                   String msg = "批量修改密码失败!";
                   String[] ids = request.getParameterValues("id");
                   boolean flag = userDao.batchPwdReset("111111", ids);
                   if (flag) {
                            msg = "批量修改密码成功!";
                   }
                   request.setAttribute("msg", msg);
                   request.getRequestDispatcher("/UserServlet?method=all").forward(
                                     request, response);
         }

         private void batchDelStudent(HttpServletRequest request,
                            HttpServletResponse response) throws ServletException, IOException {
                   String msg = "批量删除用户失败!";
                   String[] ids = request.getParameterValues("id");
                   boolean flag = userDao.batchDelUser(ids);
                   if (flag) {
                            msg = "批量删除用户成功!";
                   }
                   request.setAttribute("msg", msg);
                   request.getRequestDispatcher("/UserServlet?method=all").forward(
                                     request, response);
         }

         private void queryAllUsers(HttpServletRequest request,
                            HttpServletResponse response) throws ServletException, IOException {
                   List<User> users = userDao.queryUserByCondition(null);
                   request.setAttribute("userList", users);
                   request.getRequestDispatcher("/prouser/m_userMain.jsp").forward(
                                     request, response);
         }

         private void addUser(HttpServletRequest request,
                            HttpServletResponse response) throws ServletException, IOException {
                   String msg = "用户插入失败";

                   String name = request.getParameter("name");
                   String password = request.getParameter("password");
                   String sex = request.getParameter("sex");
                   String birthday = request.getParameter("birthday");
                   String[] hobby = request.getParameterValues("hobby");
                   StringBuilder builder = new StringBuilder();
                   if (hobby != null) {
                            for (String str : hobby) {
                                     builder.append(str).append(",");
                            }
                   }
                   builder.deleteCharAt(builder.length() - 1);
                   String telephone = request.getParameter("telephone");
                   String address = request.getParameter("address");
                   User user = new User();
                   user.setName(name);
                   user.setPassword(password);
                   user.setSex(sex);
                   user.setHobby(builder.toString());
                   user.setAddress(address);
                   user.setBirthday(birthday);
                   user.setTelephone(telephone);
                   user.setType(2);
                   int result = userDao.addUser(user);
                   if (result > 0) {
                            msg = "用户插入成功";
                   }
                   request.setAttribute("msg", msg);
                   request.getRequestDispatcher("/UserServlet?method=all").forward(
                                     request, response);
         }

         private void delUser(HttpServletRequest request,
                            HttpServletResponse response) throws ServletException, IOException {
                   String msg = "用户删除失败";
                   int userid = Integer.parseInt(request.getParameter("userid"));
                   int result = userDao.delUser(userid);
                   if (result > 0) {
                            msg = "用户删除成功";
                   }
                   request.setAttribute("msg", msg);
                   request.getRequestDispatcher("/UserServlet?method=all").forward(
                                     request, response);
         }

         private void updateUser(HttpServletRequest request,
                            HttpServletResponse response) throws ServletException, IOException {
                   String msg = "用户修改失败";
                   int id = Integer.parseInt(request.getParameter("id"));
                   String name = request.getParameter("name");
                   String password = request.getParameter("password");
                   String sex = request.getParameter("sex");
                   String birthday = request.getParameter("birthday");
                   String[] hobby = request.getParameterValues("hobby");
                   StringBuilder builder = new StringBuilder();
                   if (hobby != null) {
                            for (String str : hobby) {
                                     builder.append(str).append(",");
                            }
                   }
                   builder.deleteCharAt(builder.length() - 1);
                   String telephone = request.getParameter("telephone");
                   String address = request.getParameter("address");
                   User user = new User();
                   user.setId(id);
                   user.setName(name);
                   user.setPassword(password);
                   user.setSex(sex);
                   user.setHobby(builder.toString());
                   user.setAddress(address);
                   user.setBirthday(birthday);
                   user.setTelephone(telephone);
                   user.setType(2);
                   System.out.println(user);
                   int result = userDao.updateUser(user);
                   if (result > 0) {
                            msg = "用户修改成功";
                   }
                   request.setAttribute("msg", msg);
                   request.getRequestDispatcher("/UserServlet?method=all").forward(
                                     request, response);
         }

         private void queryUserById(HttpServletRequest request,
                            HttpServletResponse response) throws ServletException, IOException {
                   int userid = Integer.parseInt(request.getParameter("userid"));
                   User user = userDao.queryUserById(userid);
                   request.setAttribute("user", user);
                   System.out.println(request.getContextPath()
                                     + "/prouser/m_updateUser.jsp");
                   request.getRequestDispatcher("/prouser/m_updateUser.jsp").forward(
                                     request, response);
         }

         // 用户登录
         private void login(HttpServletRequest request, HttpServletResponse response)
                            throws ServletException, IOException {
                   String name = request.getParameter("name");
                   String password = request.getParameter("password");
                   User user = userDao.login(name, password);
                   if (user != null) {
                            request.getSession().setAttribute("user", user);
                            if (user.getType() == 1) {// 管理员
                                     response.sendRedirect(request.getContextPath()
                                                        + "/promanager/main.jsp");
                            } else if (user.getType() == 2) {// 普通用户
                                     response.sendRedirect(request.getContextPath()
                                                        + "/servlet/QueryAllProduct");
                            }
                   } else {
                            // 登录不正确,重新登录或者进行注册
                            String msg = "未查到此用户,请继续登陆或注册!";
                            request.setAttribute("msg", msg);
                            request.getRequestDispatcher("/prouser/userLogin.jsp").forward(
                                               request, response);
                   }
         }

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

}

布置作业:
自己根据IMOOC视频资料学习过滤器和监听器。
Java Web开发技术应用——过滤器 http://www.imooc.com/learn/213
JAVA Web开发技术应用——监听器 http://www.imooc.com/learn/271

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值