zoukankan      html  css  js  c++  java
  • Session 简单购物车

    package session.test;

    import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.LinkedHashMap;
    import java.util.List;
    import java.util.Map;

    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;

    //代表网站,列出所有书籍
    public class SessionDemo1 extends HttpServlet {

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

            response.setCharacterEncoding("UTF-8");
            response.setContentType("text/html);charset=UTF-8");
            PrintWriter out = response.getWriter();
           
            //输出网站商品
            out.write("本网站有如下书籍:<br/>");
            Map<String,Book> map = Db.getAll();
            for(Map.Entry<String,Book>entry:map.entrySet()) {
                Book book = entry.getValue();
                out.println("<a href='/session/servlet/SessionDemo2?id="+book.getId()+"' target='_blank'>"+book.getName()+"</a><br/>");
               
            }
           
            //2,显示用户看过的商品
            out.print("<br/>您曾经浏览过的商品:<br/>");
            HttpSession session= request.getSession(false);
            if(session==null) {
                out.write("尚未购买商品<br/>");
                return;
            }
            out.write("购物车中商品:<br/>");
            List<String> list = (List)session.getAttribute("list");
            for(String str:list) {
                out.write(str+"<br/>");
            }
        }

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

        }
       

    }

    class Db{
        //private Map map = new HashMap();
        private static Map<String,Book> map = new LinkedHashMap<String,Book>();
        static {
            map.put("1",new Book("1","水浒传","施耐庵","名著"));
            map.put("2",new Book("2","三国演义","罗贯中","名著"));
            map.put("3",new Book("3","西游记","吴承恩","名著"));
            map.put("4",new Book("4","红楼梦","曹雪芹","名著"));
            map.put("5",new Book("5","金-瓶梅","笑笑生","名著"));
        }
       
        public static Map<String, Book> getAll() {
            return map;
        }
    }

    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;
        }

    }

    package session.test;

    import java.util.List;
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.LinkedList;

    import javax.servlet.ServletException;
    import javax.servlet.http.Cookie;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;

    //购买servlet
    public class SessionDemo2 extends HttpServlet {

        public void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
           
            response.setCharacterEncoding("UTF-8");
            response.setContentType("text/html);charset=UTF-8");
            PrintWriter out = response.getWriter();

            //根据用户带过来的id,显示相应商品的详细信息
            String id = request.getParameter("id");
            Book book = (Book)Db.getAll().get(id);
            out.write(book.getId() + "<br/>");
            out.write(book.getName() + "<br/>");
            out.print(book.getAuthor() + "<br/>");/////////////////////////////
            out.write(book.getDescription() + "<br/>");
           
            //构建session
           
            HttpSession session = request.getSession();
            //用集合来保存买的东西。
            List list = (List) session.getAttribute("list");
            if(list==null) {
                list = new ArrayList();
                session.setAttribute("list", list);
            }
               
            list.add(book);
            //session.setAttribute("list", list);

    //        request.getRequestDispatcher("/servlet/SessionDemo1").forward(request, response);
    //        this.getServletContext().getRequestDispatcher("/servlet/SessionDemo1").forward(request, response);
            response.sendRedirect(request.getContextPath()+"/servlet/SessionDemo3");//
        }


        private String buildSession(String id, HttpServletRequest request) {

            //bookHistory = null
           
            String bookHistory = null;
            Cookie cookies[] = request.getCookies();
            for(int i=0;cookies!=null&&i<cookies.length;i++) {
                if(cookies[i].getName().equals("bookHistory"));
                    bookHistory = cookies[i].getValue();
                   
            }
           
            if(bookHistory==null) {
                return id;
            }
           
            LinkedList<String> list = new LinkedList<String>(Arrays.asList(bookHistory.split("\,")));
            if(list.contains(id)) {
                list.remove(id);
               
            }else {
                if(list.size()>=3) {
                    list.removeLast();
                }
            }
            list.addFirst(id);
           
            StringBuffer sb = new StringBuffer();
            for(String bid : list) {
                sb.append(bid + ",");
            }
            return sb.deleteCharAt(sb.length()-1).toString();
        }

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

        }

    }

    package session.test;

    import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.List;

    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;

    public class SessionDemo3 extends HttpServlet {

        /**
         * The doGet method of the servlet. <br>
         *
         * This method is called when a form has its tag value method equals to get.
         *
         * @param request the request send by the client to the server
         * @param response the response send by the server to the client
         * @throws ServletException if an error occurred
         * @throws IOException if an error occurred
         */
        public void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {

            response.setCharacterEncoding("utf-8");
            response.setContentType("text/html;charset=utf-8");
            PrintWriter out = response.getWriter();
            out.write("<br/>");
            out.write("<br/>");
           
            //2,显示用户看过的商品
            out.print("<br/>您曾经浏览过的商品:<br/>");
            HttpSession session= request.getSession(false);
            if(session==null) {
                out.write("尚未购买商品<br/>");
                return;
            }
            out.write("购物车中商品:<br/>");
            List list = (List)session.getAttribute("list");
            for(Object str:list) {
                Book book = (Book)str;
                out.write(book.getName()+"<br/>");
            }
           
        }


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


        }

    }

    客户端无法存cookie的情况,把sessionID存到地址栏。

    request.getSession();//先创建session不然下面这句不会有效果

    ……

    String url = response.encodeRedirectUrl(url);

    对于重定向的url:

    String url = response.encodeRedirectURL(……);

    session Id存在地址栏,如果客户端支持cookie会自动存在cookie里,否则才会存在地址栏

  • 相关阅读:
    常用数据结构之字符串
    c++知识点总结--友元&运算符重载
    c++知识点总结-模板特化
    c++知识点总结--new的一些用法
    linux socket c/s上传文件
    STL之算法使用简介
    【bzoj2733】 HNOI2012—永无乡
    【bzoj3132】 Sdoi2013—森林
    【bzoj1483】 HNOI2009—梦幻布丁
    【bzoj3091】 城市旅行
  • 原文地址:https://www.cnblogs.com/flying607/p/3453481.html
Copyright © 2011-2022 走看看