java|java session 保存买过的商品信息
上代码
商品的信息
/**
*所有商品的信息
*/
public class ShappingLists extends HttpServlet {protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;
charset=UTF-8");
PrintWriter out = response.getWriter();
request.getSession();
//创建session
out.write("本网站有如下书:
");
//展示数据
Set set = DB.getAll().entrySet();
for(Map.Entry me : set){
Book book = me.getValue();
String url = "/Demo2/BuyProductsServlet?id=" + book.getId();
//给url带上sessionId防止浏览器禁用cookies
url = response.encodeURL(url);
out.println(book.getName()+ "购买
");
}
}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);
}}
点击了后进入的存session的界面(过度的界面)
/**
* 购买商品的具体界面
*/
public class BuyProductsServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String id = request.getParameter("id");
Book book = (Book) DB.getAll().get(id);
//得到用户想买的书HttpSession session = request.getSession();
List list = (List) session.getAttribute(ShappingListServlet.session_key);
//得到用户用于保存所有书的容器
if(list==null){
list = new ArrayList();
session.setAttribute(ShappingListServlet.session_key, list);
}
list.add(book);
//服务器跳转的方法
//request.getRequestDispatcher("/servlet/ListCartServlet").forward(request, response);
//浏览器的跳转
String url = response.encodeRedirectURL("/Demo2/ShappingListServlet");
System.out.println(url);
response.sendRedirect(url);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}}
展示够买过的商品信息
/**
*利用 session 显示购买过的商品
*/
public class ShappingListServlet extends HttpServlet {/**
* session 是服务端的技术当用户点击了购买商品后 在本地记录下该商品的信息。挑战到购买界面后进行 展示商品的信息
*
* 注意 一个会话只会保存一份serssion但是 ie8除外 ,ie8不管是打开几个浏览器都是保存的一个serssion
*/public static final String session_key="list";
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;
charset=UTF-8");
PrintWriter out = response.getWriter();
//显示用户购买过的商品
out.write("你购买过的商品有:
");
HttpSession session=request.getSession();
List list=(List) session.getAttribute(session_key);
if(list==null||list.size()==0)
{
out.write("您还没有买过什么商品呢");
return;
}for (Book book : list) {
out.write("商品有"+book.getName()+"
");
}}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}//模拟数据库
public static class DB {
//有序的 map
public static LinkedHashMap map=new LinkedHashMap();
static {
//静态代码块 用于初始化 map的信息
map.put("1", new Book("1","javaweb开发","老张","一本好书"));
map.put("2", new Book("2","spring开发","老黎","一本好书"));
map.put("3", new Book("3","hibernate开发","老佟","一本好书"));
map.put("4", new Book("4","struts开发","老毕","一本好书"));
map.put("5", new Book("5","ajax开发","老张","一本好书"));
}public static Map getAll(){
return map;
}
}//商品的信息
public static class Book {
private String id;
private String name;
private String author;
//作者
private String description;
//描述public Book() {
super();
// TODO Auto-generated constructor stub
}
public Book(String id, String name, String author, String description) {
super();
this.id = id;
this.name = name;
this.author = author;
this.description = description;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
}
}
【java|java session 保存买过的商品信息】星期六 过去了 晚安了
推荐阅读
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- 事件代理
- Java|Java OpenCV图像处理之SIFT角点检测详解
- java中如何实现重建二叉树
- 数组常用方法一
- 【Hadoop踩雷】Mac下安装Hadoop3以及Java版本问题
- Java|Java基础——数组
- RxJava|RxJava 在Android项目中的使用(一)
- java之static、static|java之static、static final、final的区别与应用
- Java基础-高级特性-枚举实现状态机