Servlet——利用Session完成的简单购物车
1.创建登录页面
login.html
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>登录</title> </head> <body> <form action="/login" method="post"> 姓名:<input type="text" name="username" /><br /> 密码:<input type="password" name="password" /><br /> <input type="submit" value="登录" /> </form> </body> </html>
2.购物页面
buy.html
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>购买</title> </head> <body> <form action="/buy" method="post"> 货品:<select name="product"> <option value="鼠标">鼠标</option> <option value="光盘">光盘</option> <option value="手机">手机</option> </select><br /> 数量:<input type="text" name="number" /><br /> <input type="submit" value="购买" /> </form> </body> </html>
3.实体类的创建
/day8_shopping_car/src/com/myself/domain/Car.java
package com.myself.domain; import java.util.ArrayList; import java.util.List; /** * 购物车类,可添加,删除和获取购物车项 * @author Jungor * */ public class Car { // 用于存放CarItem(购物车项)的list private List<CarItem> list = new ArrayList<CarItem>(); /** * 获取购物车中的所有购物车项 * @return 包含所有购物车项的List */ public List<CarItem> list() { return list; } /** * 添加购物车项到购物车 * @param carItem 需要添加的购物车项 */ public void add(CarItem carItem) { this.list.add(carItem); } /** * 从购物车中删除购物车项 * @param id 需要删除的购物车项ID */ public void remove(String id) { for (int i = 0; i < list.size(); i++) { if (list.get(i).getId().equals(id)) { list.remove(i); break; } } } }
/day8_shopping_car/src/com/myself/domain/CarItem.java
package com.myself.domain; /** * 购物车项,包含id,货品名,数量 * @author Jungor * */ public class CarItem { private String id; private String product; private Integer number; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getProduct() { return product; } public void setProduct(String product) { this.product = product; } public Integer getNumber() { return number; } public void setNumber(Integer number) { this.number = number; } }
/day8_shopping_car/src/com/myself/domain/User.java
package com.myself.domain; /** * 用户类,用于封装用户登录信息 * @author Jungor * */ public class User { private String username; private String password; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } @Override public String toString() { return "User [" + username + ", " + password + "]"; } }
4.创建Servlet
/day8_shopping_car/src/com/myself/servlet/BuyServlet.java
package com.myself.servlet; import java.io.IOException; import java.io.PrintWriter; import java.util.UUID; 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 com.myself.domain.Car; import com.myself.domain.CarItem; import com.myself.domain.User; /** * 购买时需要的Servlet,可以将一个购物车项添加到购物车 * @author Jungor * */ public class BuyServlet extends HttpServlet { @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 设置编码 request.setCharacterEncoding("UTF-8"); response.setContentType("text/html;charset=UTF-8"); // 获取打印流 PrintWriter out = response.getWriter(); // 获取货品名称 String product = request.getParameter("product"); Integer number = null; // 数量 try { // 接收到的是一个String,将其转换为Integer,如果转换失败,则向页面输出提示信息 number = Integer.parseInt(request.getParameter("number")); } catch (NumberFormatException e) { out.println("数量非法,<a href='/buy.html'>重新填写</a><br/>"); return; //e.printStackTrace(); } // 通过JSESSIONID,获取session对象,如果没有获取到,则新创建一个session对象 HttpSession session = request.getSession(); // 在session中获取user属性的对象 User user = (User) session.getAttribute("user"); // 在session中获取car属性的对象 Car car = (Car) session.getAttribute("car"); // 只有当用户已登录,且货品和数量不为空时,才允许添加项到购物车 if (user != null && product != null && number != null) { CarItem carItem = new CarItem(); // 创建购物车项 // UUID.randomUUID().toString(),一个随机且不重复的字符串,方便购物车项的查询 carItem.setId(UUID.randomUUID().toString()); carItem.setProduct(product); carItem.setNumber(number); // 如果购物车为空,则创建一个购物车,并添加到Session if (car == null) { car = new Car(); session.setAttribute("car", car); } car.add(carItem); out.println("购买成功<br/>"); out.println("<a href='/buy.html'>继续购买</a><br/>"); out.println("<a href='/list'>管理列表</a><br/>"); } else { out.println("<a href='/login.html'>请登录</a><br/>"); } } }
/day8_shopping_car/src/com/myself/servlet/DeleteServlet.java
package com.myself.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 javax.servlet.http.HttpSession; import com.myself.domain.Car; import com.myself.domain.User; /** * 删除购物加中的购物车项 * @author Jungor * */ public class DeleteServlet extends HttpServlet { @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 设置编码 request.setCharacterEncoding("UTF-8"); response.setContentType("text/html;charset=UTF-8"); // 获取输出流 PrintWriter out = response.getWriter(); // 获取session,如果使用JSESSIONID没有找到则创建一个 HttpSession session = request.getSession(); // 获取session中属性名为user的对象 User user = (User) session.getAttribute("user"); // 获取session中属性名为car的对象 Car car = (Car) session.getAttribute("car"); // 接收需要删除的购物车项的id String id = request.getParameter("id"); // 如果用户已登录,则向下执行,否则向页面输出提示信息 if (user != null) { // 当car对象存在时,才从此购物车中删除购物车项,且转入的id也不为空 if (car != null && id != null && !"".equals(id)) { car.remove(id); out.println("删除成功<br/>"); out.println("<a href='/buy.html'>继续购买</a><br/>"); out.println("<a href='/list'>管理列表</a><br/>"); } else { out.println("也还没车车..."); } } else { out.println("还没登录,禁止操作。<a href='/login.html'>返回登录</a>"); } } }
/day8_shopping_car/src/com/myself/servlet/ListServlet.java
package com.myself.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 javax.servlet.http.HttpSession; import com.myself.domain.Car; import com.myself.domain.CarItem; import com.myself.domain.User; /** * 用于显示购物车里面的内容 * @author Jungor * */ public class ListServlet extends HttpServlet { @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 设置编码 request.setCharacterEncoding("UTF-8"); response.setContentType("text/html;charset=UTF-8"); // 获取输出流 PrintWriter out = response.getWriter(); // 获取session,如果使用JSESSIONID没有找到则创建一个 HttpSession session = request.getSession(); // 获取session中属性名为car的对象 Car car = (Car) session.getAttribute("car"); // 获取session中属性名为user的对象 User user = (User) session.getAttribute("user"); // 如果user对象为空,则表示还没登录,要求用户登录后才能进行操作 if (user == null) { out.println("还没登录。<a href='/login.html'>请登录</a>"); return; } out.println("<b>" + user.getUsername() + "</b> 的购物车<br/>"); // 如果car对象为空,表示还没创建购物车,如果不为空,就表示有购物车,可以依次输出其内容 if (car != null) { for (CarItem carItem : car.list()) { out.println("商品:" + carItem.getProduct() + " 数量:" + carItem.getNumber() + " <a href='/delete?id=" + carItem.getId() + "'>删除</a>"); out.println("<hr>"); } } else { out.println("还没购物车,所以没内容"); } } }
/day8_shopping_car/src/com/myself/servlet/LoginServlet.java
package com.myself.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 javax.servlet.http.HttpSession; import com.myself.domain.User; /** * 用户登录,将登录信息封装成一个User对象,并添加到Session * @author Jungor * */ public class LoginServlet extends HttpServlet { @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 设置编码 request.setCharacterEncoding("UTF-8"); response.setContentType("text/html;charset=UTF-8"); // 获取输出流 PrintWriter out = response.getWriter(); // 接收到的参数 String username = request.getParameter("username"); String password = request.getParameter("password"); // 获取session,如果使用JSESSIONID没有找到则创建一个 HttpSession session = request.getSession(); // 获取session中属性名为user的对象 User user = (User) session.getAttribute("user"); // 如果user对象为空,用户名和密码不为空,则将登录信息封装为一个User对象,并添加至session中 if (user == null && username != null && !"".equals(username) && password != null &&!"".equals(password)) { // 将username和password封装成一个User对象 user = new User(); user.setPassword(password); user.setUsername(username); // 将对象添加到session中 session.setAttribute("user", user); out.println("欢迎回来:<b>" + user.getUsername() + "</b> <a href='/logout'>注销</a><br/>"); out.println("<a href='/buy.html'>购物</a><br/>"); out.println("<a href='/list'>管理购物</a>"); } else if (user != null && username == null && password == null) { //当user对象不为空,但username和password为空,直接读取session中user对象 out.println("欢迎回来:<b>" + user.getUsername() + "</b> <a href='/logout'>注销</a><br/>"); out.println("<a href='/buy.html'>购物</a><br/>"); out.println("<a href='/list'>管理购物</a>"); }else { // 当前面条件不满足时,向页面输出提示信息 out.println("<a href='/login.html'>重新登录</a>"); } } }
/day8_shopping_car/src/com/myself/servlet/LogoutServlet.java
package com.myself.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 javax.servlet.http.HttpSession; import com.myself.domain.User; /** * 用户注销 * @author Jungor * */ public class LogoutServlet extends HttpServlet { @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 设置编码 request.setCharacterEncoding("UTF-8"); response.setContentType("text/html;charset=UTF-8"); // 获取session HttpSession session = request.getSession(); // 注销,让session失效,同时清除user和car在session中的对象 session.invalidate(); // 注销后,重定向到登录页面 response.sendRedirect("/login.html"); } }
5.web.xml注册
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jps</welcome-file> </welcome-file-list> <!-- 用户登录 --> <servlet> <servlet-name>LoginServlet</servlet-name> <servlet-class>com.myself.servlet.LoginServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>LoginServlet</servlet-name> <url-pattern>/login</url-pattern> </servlet-mapping> <!-- 将购物车项添加到购物车 --> <servlet> <servlet-name>BuyServlet</servlet-name> <servlet-class>com.myself.servlet.BuyServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>BuyServlet</servlet-name> <url-pattern>/buy</url-pattern> </servlet-mapping> <!-- 列出购物车项 --> <servlet> <servlet-name>ListServlet</servlet-name> <servlet-class>com.myself.servlet.ListServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>ListServlet</servlet-name> <url-pattern>/list</url-pattern> </servlet-mapping> <!-- 删除购物车中的购物车项 --> <servlet> <servlet-name>DeleteServlet</servlet-name> <servlet-class>com.myself.servlet.DeleteServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>DeleteServlet</servlet-name> <url-pattern>/delete</url-pattern> </servlet-mapping> <!-- 注销 --> <servlet> <servlet-name>LogoutServlet</servlet-name> <servlet-class>com.myself.servlet.LogoutServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>LogoutServlet</servlet-name> <url-pattern>/logout</url-pattern> </servlet-mapping> </web-app>
相关推荐
jsp+servlet+jdbc实现简单的购物车实例,购物数据通过session存储 1、加入购物车时,把数据保存在session中 2、点击系统退出时,购物车中的数据插入到数据库购物车表 3、再次登录时,查询数据库购物车表的数据加载到...
基于jsp_servlet_session完成的图书查询及购物车案例-内含有MySQL数据库 采用三层架构模式进行开发的本案例、重在研究使用session完成购物车功能。
4.进行验证码收发操作,系统进入后展示商品列表,利用c标签将db入库的数据进行动态渲染,el表达式进行数据取值展示,添加购物车利用ajax请求 5.进行添加购物车、移除购物车的技术实现,根据所添加的购
jsp+servlet+jdbc实现简单的购物车实例,购物数据通过session存储 项目描述 帮学妹写的一个简单上机题:jsp+servlet购物车 购物车使用session保存数据 系统退出时,购物车中数据入库。 运行环境 jdk7+tomcat7+...
servlet session 购物车,servlet session 购物车,servlet session 购物车,servlet session 购物车,希望对大家有帮助。
用servlet jsp实现简单购物车 jsp显示页面 使用了jstl
通过JSP加Servlet技术实现简易的购物车功能,适合初学JSP的程序猿参考该代码理解JSP与客户端页面相结合的强大功能
JSP+Servlet+Session 实现简单的购物车原理,通过Session订单信息
利用session技术,实现一个小小的购物车例子
javaee 简单 购物车 JSP Servlet JAVAbeenjavaee 简单 购物车 JSP Servlet JAVAbeenjavaee 简单 购物车 JSP Servlet JAVAbeenjavaee 简单 购物车 JSP Servlet JAVAbeenjavaee 简单 购物车 JSP Servlet ...
详细题目描述可参照博客内文章。。。。。。。。。。。。。。。。。。。。。
jsp+servlet +hibernate 购物车系统
利用jsp的MVC模式实现简单的购物车,不过这个有很多还不完善的,后续会继续编写上传的
JSP 在servlet中使用session 猜数字
session及其跟踪机制cookies,URlRwriting Session对象用来解决客户端发送多个请求时来用户请求信息的存储问题
应用Servlet实现购物车
一个基于Session的在线购物车,数据全部存储在Session中,验证码登录,无需数据库,简单易懂
jsp+servlet+javabean_实现的简单网上购物车(附源码)
利用 jsp 、 javabean 、 servlet 、session等知识点,结合相关设计模式、 以及软件工程的相关知识, 设计一个网站购物车, 用于记录客户的购物订单, 并能对购物车中商品信息进行查询、修改、删除、清空等操作,...