- 浏览: 113846 次
- 性别:
- 来自: 成都
文章分类
最新评论
servlet-cookie和session应用示例:模拟购物车
思路分析:
1. 根据需求抽象出业务对象
User{
usrename;
password;
}
ShoppingCarItem{
product;
num;
}
ShoppingCar{
List<ShoppingCarItem>
}
2. 写Servlet处理请求
...
domain:
servlet:
用户登录页面:
购买页面:
web.xml配置:
1. 根据需求抽象出业务对象
User{
usrename;
password;
}
ShoppingCarItem{
product;
num;
}
ShoppingCar{
List<ShoppingCarItem>
}
2. 写Servlet处理请求
...
domain:
- package cn.itcast.cd.domain;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.UUID;
- public class ShoppingCar {
- private List<ShoppingCarItem> list = new ArrayList<ShoppingCarItem>();
- /**
- * 根据货品和数量往购物车中添加
- * @param product
- * @param num
- */
- public void add(String product,Integer num){
- ShoppingCarItem carItem = new ShoppingCarItem();
- carItem.setNum(num);
- carItem.setProduct(product);
- carItem.setId(UUID.randomUUID().toString());
- list.add(carItem);
- }
- /**
- * 根据唯一的标示删除购物车中对应的明细
- * @param id
- */
- public void remove(String id){
- for (ShoppingCarItem item : list) {
- if(id.equals(item.getId())){
- list.remove(item);
- break;
- }
- }
- }
- public List<ShoppingCarItem> getList() {
- return list;
- }
- }
- package cn.itcast.cd.domain;
- public class ShoppingCarItem {
- private String product;
- private Integer num;
- private String id; //给每一个明细生成一个唯一的id
- public String getProduct() {
- return product;
- }
- public void setProduct(String product) {
- this.product = product;
- }
- public Integer getNum() {
- return num;
- }
- public void setNum(Integer num) {
- this.num = num;
- }
- public String getId() {
- return id;
- }
- public void setId(String id) {
- this.id = id;
- }
- }
- package cn.itcast.cd.domain;
- 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;
- }
- }
package cn.itcast.cd.domain; import java.util.ArrayList; import java.util.List; import java.util.UUID; public class ShoppingCar { private List<ShoppingCarItem> list = new ArrayList<ShoppingCarItem>(); /** * 根据货品和数量往购物车中添加 * @param product * @param num */ public void add(String product,Integer num){ ShoppingCarItem carItem = new ShoppingCarItem(); carItem.setNum(num); carItem.setProduct(product); carItem.setId(UUID.randomUUID().toString()); list.add(carItem); } /** * 根据唯一的标示删除购物车中对应的明细 * @param id */ public void remove(String id){ for (ShoppingCarItem item : list) { if(id.equals(item.getId())){ list.remove(item); break; } } } public List<ShoppingCarItem> getList() { return list; } } package cn.itcast.cd.domain; public class ShoppingCarItem { private String product; private Integer num; private String id; //给每一个明细生成一个唯一的id public String getProduct() { return product; } public void setProduct(String product) { this.product = product; } public Integer getNum() { return num; } public void setNum(Integer num) { this.num = num; } public String getId() { return id; } public void setId(String id) { this.id = id; } } package cn.itcast.cd.domain; 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; } }
servlet:
- package cn.itcast.cd.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 cn.itcast.cd.domain.ShoppingCar;
- 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");
- //1. 获取请求中的参数.
- String product = request.getParameter("product");
- String num = request.getParameter("num");
- //2. 获取到购物车
- //2.1 首先要到session中找一下是否已经有了购物车. 如果有的话就不需要创建了... 直接把货品放到购物车中就可以了
- HttpSession httpSession = request.getSession();
- ShoppingCar shoppingCar = (ShoppingCar)httpSession.getAttribute("SHOPINGCAR_IN_SESSION");
- if(shoppingCar==null){ //说明是第一次购物. 还没有购物车的
- //2.2 如果从session中没有找到购物车. 需要新创建一个购物车并且放到session中.为了下次购物使用这个购物车
- shoppingCar = new ShoppingCar();
- httpSession.setAttribute("SHOPINGCAR_IN_SESSION", shoppingCar);
- }
- shoppingCar.add(product, Integer.parseInt(num));
- PrintWriter pw = response.getWriter();
- pw.println("添加成功<br/>");
- pw.println("<a href='/buy.html'>继续购物</a><br/>");
- pw.println("<a href='/list'>管理购物</a><br/>");
- }
- }
- package cn.itcast.cd.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 cn.itcast.cd.domain.ShoppingCar;
- import cn.itcast.cd.domain.ShoppingCarItem;
- import cn.itcast.cd.domain.User;
- 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");
- HttpSession httpSession = request.getSession();
- //1. 先获取session中的User
- User user = (User) httpSession.getAttribute("USER_IN_SESSION");
- PrintWriter pw = response.getWriter();
- pw.println("当前用户为:"+user.getUsername()+"<br/>");
- //2. 获取session的购物车
- ShoppingCar shoppingCar = (ShoppingCar) httpSession.getAttribute("SHOPINGCAR_IN_SESSION");
- //2.1 如果在session中购物车的话,列出购物车中的明细
- if(shoppingCar!=null){
- for (ShoppingCarItem item : shoppingCar.getList()) {
- pw.println("货品:"+item.getProduct()+" 数量:"+item.getNum()+"<br/>");
- }
- }else{
- //2.2 在session中没有购物车的话.提示用户没有当前用户名购物车
- pw.println("当前用户没有购物车.");
- }
- }
- }
- package cn.itcast.cd.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 cn.itcast.cd.domain.User;
- 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");
- //1. 接收请求中的数据封装对象
- String username = request.getParameter("username");
- String password = request.getParameter("password");
- User user = new User();
- user.setPassword(password);
- user.setUsername(username);
- //2. 将用户方到session中供ListServlet从session中访问到User
- HttpSession httpSession = request.getSession();
- httpSession.setAttribute("USER_IN_SESSION", user);
- PrintWriter pw = response.getWriter();
- pw.println("欢迎:"+username+"<br/>");
- pw.println("<a href='/buy.html'>购物</a><br/>");
- pw.println("<a href='/list'>管理购物</a><br/>");
- }
- }
package cn.itcast.cd.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 cn.itcast.cd.domain.ShoppingCar; 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"); //1. 获取请求中的参数. String product = request.getParameter("product"); String num = request.getParameter("num"); //2. 获取到购物车 //2.1 首先要到session中找一下是否已经有了购物车. 如果有的话就不需要创建了... 直接把货品放到购物车中就可以了 HttpSession httpSession = request.getSession(); ShoppingCar shoppingCar = (ShoppingCar)httpSession.getAttribute("SHOPINGCAR_IN_SESSION"); if(shoppingCar==null){ //说明是第一次购物. 还没有购物车的 //2.2 如果从session中没有找到购物车. 需要新创建一个购物车并且放到session中.为了下次购物使用这个购物车 shoppingCar = new ShoppingCar(); httpSession.setAttribute("SHOPINGCAR_IN_SESSION", shoppingCar); } shoppingCar.add(product, Integer.parseInt(num)); PrintWriter pw = response.getWriter(); pw.println("添加成功<br/>"); pw.println("<a href='/buy.html'>继续购物</a><br/>"); pw.println("<a href='/list'>管理购物</a><br/>"); } } package cn.itcast.cd.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 cn.itcast.cd.domain.ShoppingCar; import cn.itcast.cd.domain.ShoppingCarItem; import cn.itcast.cd.domain.User; 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"); HttpSession httpSession = request.getSession(); //1. 先获取session中的User User user = (User) httpSession.getAttribute("USER_IN_SESSION"); PrintWriter pw = response.getWriter(); pw.println("当前用户为:"+user.getUsername()+"<br/>"); //2. 获取session的购物车 ShoppingCar shoppingCar = (ShoppingCar) httpSession.getAttribute("SHOPINGCAR_IN_SESSION"); //2.1 如果在session中购物车的话,列出购物车中的明细 if(shoppingCar!=null){ for (ShoppingCarItem item : shoppingCar.getList()) { pw.println("货品:"+item.getProduct()+" 数量:"+item.getNum()+"<br/>"); } }else{ //2.2 在session中没有购物车的话.提示用户没有当前用户名购物车 pw.println("当前用户没有购物车."); } } } package cn.itcast.cd.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 cn.itcast.cd.domain.User; 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"); //1. 接收请求中的数据封装对象 String username = request.getParameter("username"); String password = request.getParameter("password"); User user = new User(); user.setPassword(password); user.setUsername(username); //2. 将用户方到session中供ListServlet从session中访问到User HttpSession httpSession = request.getSession(); httpSession.setAttribute("USER_IN_SESSION", user); PrintWriter pw = response.getWriter(); pw.println("欢迎:"+username+"<br/>"); pw.println("<a href='/buy.html'>购物</a><br/>"); pw.println("<a href='/list'>管理购物</a><br/>"); } }
用户登录页面:
- <!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="text" name="password"><br/>
- <input type="submit" value="登录">
- </form>
- </body>
- </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="text" name="password"><br/> <input type="submit" value="登录"> </form> </body> </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>
- <option value="显示器">显示器</option>
- </select> <br/>
- 数量:<input type="text" name="num"><br/>
- <input type="submit" value="购买">
- </form>
- </body>
- </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> <option value="显示器">显示器</option> </select> <br/> 数量:<input type="text" name="num"><br/> <input type="submit" value="购买"> </form> </body> </html>
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">
- <servlet>
- <servlet-name>LoginServlet</servlet-name>
- <servlet-class>cn.itcast.cd.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>cn.itcast.cd.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>cn.itcast.cd.servlet.ListServlet</servlet-class>
- </servlet>
- <servlet-mapping>
- <servlet-name>ListServlet</servlet-name>
- <url-pattern>/list</url-pattern>
- </servlet-mapping>
- </web-app>
相关推荐
- **配置示例**:在`<web-app>`元素中定义`<servlet>`和`<servlet-mapping>`,以便将特定的URL路径映射到具体的Servlet实例。 #### 二、Servlet核心概念 - **Servlet接口**: - **定义**:Servlet接口定义了处理...
当session的概念应用于网络协议时,它通常隐含了“面向连接”和“保持状态”的含义: - **面向连接**: 这意味着在通信双方进行数据交换之前需要先建立一个连接通道,如电话通信。 - **保持状态**: 一方能够记住之前...
Cookie和Session是Web开发中非常重要的概念,它们各自有其优势和局限性。合理地使用这两种技术,可以帮助开发者构建出更加安全、高效的应用程序。在实际应用中,开发者应根据需求选择合适的技术方案。
在IT行业中,尤其是在Web开发领域,Cookie和Session是两种非常重要的技术,用于管理用户状态和保持会话。这里我们深入探讨这两个概念以及它们在Java Web中的应用。 首先,Cookie是客户端存储的小型文本文件,由...
### JSP基础速成精华知识点解析 #### 一、Servlet基础 Servlet是Java Web开发中的一个核心组件,它主要用于...通过本文档的学习,你可以快速掌握JSP和Servlet的基本概念和操作方法,从而更好地应用于实际项目开发中。
本文将深入探讨Cookie和Session两种主要的会话管理方式,并结合一个名为"ShoppingCar"的示例来阐述它们在实际应用中的工作原理。 **一、Cookie** Cookie是由服务器发送到客户端(浏览器)的一小段信息,然后由...
### Java基础会话与状态详解 #### 一、会话管理概述 在Web开发中,会话管理是一项关键的技术,特别是在Java Web应用中。...开发者应根据实际需求合理选择和应用这两种技术,以实现高效且安全的Web应用开发。
- Cookie 用于跟踪用户的状态信息,如用户偏好设置、购物车内容等。 - 当用户访问网站时,服务器可以创建一个 Cookie 并将其发送到客户端,客户端浏览器会将 Cookie 存储起来,并在下次访问同一网站时将其返回给...
- 会话管理是Web应用程序中不可或缺的一部分,通过合理使用Cookie和HttpSession,开发者能够有效管理和维护用户的状态信息,为用户提供更加个性化的服务体验。同时,开发者还需要考虑安全性、性能等因素,选择合适的...
在实际应用中,通常会结合Cookie和Session使用,比如使用Cookie存储Session ID,而服务器端的Session存储用户详细信息。这样既解决了Cookie的存储限制问题,又保证了数据的安全性。 总结一下,Cookie和Session是Web...
Session是一种基于cookie的会话管理机制,当用户首次访问服务器时,服务器会在内存中创建一个session对象,然后将sessionID通过cookie返回给客户端。客户端在后续的每次请求中都会携带这个sessionID,服务器根据...
在这个示例中,我们将探讨如何利用`session`技术来实现一个购物车系统。`session`在Web开发中扮演着重要角色,它能够帮助服务器跟踪用户的会话状态,尤其在用户浏览无状态的HTTP协议时。 首先,我们需要理解`...
本示例是一个基于JSP和Servlet的购物车应用,适合初学者进行进阶学习。 **一、JSP与Servlet基础** 1. **JSP**:JSP是Java的一种视图技术,它允许开发者在HTML或XML文档中嵌入Java代码,从而简化网页动态内容的生成...
这些知识点覆盖了DOM4J的基本使用、Cookie与Session的概念及其区别、Servlet的生命周期和配置、乱码问题的解决方法、转发与重定向的代码实现及区别、JSP内置对象介绍、自定义标签的实现逻辑以及两个编程题的具体解答...
- **Session和Cookie**:用于用户状态管理,如保存登录信息。 - **JDBC(Java Database Connectivity)**:与数据库交互的API,进行数据的增删查改操作。 4. **开发环境与工具** - **IDE**:如Eclipse、IntelliJ...
在“SessionCart”这个文件中,很可能包含了实现上述功能的Servlet代码示例,包括处理用户添加、查看、修改和删除购物车商品的请求,以及与Session相关的操作。通过分析和学习这个示例,可以深入理解Session在实际...
"简单session购物车"是一个基于Java Web技术实现的示例,它利用了Struts框架和Session来实现一个基本的购物车功能。下面我们将深入探讨这个主题。 首先,我们来理解什么是Session。Session是在服务器端保存用户状态...
了解了这些基本概念和操作后,你可以根据CookieServlet-master项目的源代码进一步学习如何在实际应用中操作Cookie。这个项目可以帮助你理解Servlet和Cookie在Web开发中的协同工作方式,以及如何在Java环境中实现这些...