`
dupengtao
  • 浏览: 32914 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

自学Servlet_9_session(购物车)

阅读更多

先把代码附上:

public class IndexServlet extends HttpServlet {

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

		response.setContentType("text/html;charset=UTF-8");//设置浏览器以什么字符代码打开
		response.setCharacterEncoding("UTF-8");//设置response字符
		PrintWriter  out = response.getWriter();
		
		request.getSession();//这里必须要这么写一下,要获取session对象
		
		//1.显示网站所有商品
		out.print("本网站有如下书籍:<br/>");
		Map<String,Book> map = DB.getMap();
		for(Map.Entry<String, Book> entry : map.entrySet()){//map.entry别忘记了
			Book book = entry.getValue();
			String url = "/day07/servlet/BuyServlet?id="+book.getId();
			url = response.encodeURL(url);  //得到重写后的url
//要在浏览器后面加上session的id号码
			out.print(book.getName() + "<a href='"+url+"'>购买</a><br/>");
		}
		
	}

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

}

class DB{
	private static Map<String,Book> map = new HashMap();
	static{
		map.put("1", new Book("1","javaweb开发","老张"));
		map.put("2", new Book("2","jdbc开发","老黎"));
		map.put("3", new Book("3","struts2开发","老张"));
		map.put("4", new Book("4","spring开发","老黎"));
		map.put("5", new Book("5","hibernate开发","老张"));
	}
	
	public static Map getMap(){
		return map;
	}
	
}

class Book implements Serializable{//重点,别忘了实现序列化
	private String id;
	private String name;
	private String author;
	
	public Book() {
		super();
		// TODO Auto-generated constructor stub
	}
	public Book(String id, String name, String author) {
		super();
		this.id = id;
		this.name = name;
		this.author = author;
	}
	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 class BuyServlet extends HttpServlet {

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

		//1.得到用户想买的书
		String id = request.getParameter("id");
		Book book = (Book) DB.getMap().get(id);
		
		//2.把用户买的书加在session中用于管理所有书的集合中了
		HttpSession session = request.getSession();
		Cookie cookie = new Cookie("JSESSIONID",session.getId());
		cookie.setMaxAge(30*60);
		cookie.setPath("/day07");
		response.addCookie(cookie);
		//cookie 没有禁用的时候这么写
		List list = (List) session.getAttribute("list");
		if(list==null){
			list = new ArrayList();
			session.setAttribute("list", list);
		}
		list.add(book);
		
		//3.跳转到购物车显示列表
		//request.getRequestDispatcher("/servlet/ListCartServlet").forward(request, response);
		String url  = response.encodeRedirectURL("/day07/servlet/ListCartServlet");    //实现 url重写
		response.sendRedirect(url);
		
	}

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

}


//显示用户买的所有书(购物车列表显示页面)
public class ListCartServlet extends HttpServlet {

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

		response.setContentType("text/html;charset=UTF-8");
		response.setCharacterEncoding("UTF-8");
		PrintWriter  out = response.getWriter();
		out.print("您购买了如下商品:<br/>");
		
		List<Book> list = (List) request.getSession().getAttribute("list");
		for(Book book : list){
			out.print(book.getName() + "<br/>");
		}
	}

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

}

 

分享到:
评论

相关推荐

    JSP网络开发自学手册

    5. **会话管理**:通过session对象跟踪用户状态,例如购物车中的书籍。 6. **异常处理**:使用JSP的error-page配置或Java异常处理机制捕获并处理错误。 通过研究这个实例,学习者可以深入理解JSP如何与数据库交互,...

    JSP网络开发实例自学手册实例代码

    《JSP网络开发实例自学手册实例代码》是一个针对初学者和进阶者设计的资源集合,旨在通过实际操作帮助读者掌握JSP(Java Server Pages)技术在网络开发中的应用。这个压缩包包含了书中所讲解的各种实例的源代码,...

    JSP网络开发实例自学手册

    3. **会话管理**:理解session对象的使用,如何在用户的多次交互间保存信息,例如购物车功能的实现。 4. **数据库连接与操作**:通过JDBC(Java Database Connectivity)接口连接数据库,执行SQL查询,展示如何在...

    JSP网络开发实例自学手册(项目源码)

    - **购物车和订单系统**:涉及到商品展示、选择、添加到购物车、结算等步骤,可能使用session和cookie来跟踪用户信息。 - **新闻发布系统**:动态生成新闻列表,支持按日期、类别筛选,可能涉及XML或JSON数据交换。 ...

    JSP自学课件(前三章)

    3. **session对象**:提供了一种在用户会话之间存储数据的方法,适用于管理用户登录状态或购物车等。 4. **application对象**:在所有用户间共享数据,适用于全局变量和应用程序级信息。 5. **pageContext对象**:...

    北雨商城系统bay_eshop v2.0.0

    不仅如此,自学者也能从中受益匪浅,因为它提供了一个实际的电子商务平台的开发实例。 首先,让我们深入了解一下这三个核心技术: 1. **jsp(JavaServer Pages)**:JSP是Java Web开发中的视图层技术,它允许...

    JSP第二版课后习题答案.zip

    7. **会话管理**:JSP提供`session`对象来管理用户会话,可以存储和检索用户特定的信息,如购物车、登录状态等。 8. **错误处理**:`&lt;error-page&gt;`指令可以用来配置错误处理,当发生特定的HTTP状态码或异常时,JSP...

    Jsp内置对象参考手册 这是比较全的了 下载使用了好几个 就这个好些

    9. **page对象**:实际上就是当前JSP页面的Servlet实例,提供了对Servlet方法的直接访问,例如getServletConfig()和init()。 **CHM格式的Jsp内置对象参考手册详细阐述了这些对象的使用方法,包括示例代码和最佳实践...

    jsp网上购书系统设计(源代码+设计说明书).zip

    5. **会话管理**:用户登录和购物车功能需要处理会话,了解如何在JSP中使用session对象来保持用户状态。 6. **异常处理**:学习如何在JSP和Servlet中捕获和处理可能出现的异常,保证系统的健壮性。 7. **安全考虑*...

    JAVA与数据库实训总结.pdf

    实训还涉及了会话管理,如使用Session实现购物车功能,但会话结束时购物车信息会被清除。登录后,订单信息将保存在数据库中,通过多表连接处理订单和订单项的存储及查询,进一步理解了数据库的关联操作。 在技术...

Global site tag (gtag.js) - Google Analytics