A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© 936994215 中级黑马   /  2016-6-19 14:43  /  621 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

                【会话】

··什么是会话?
        ··会话可简单理解为:用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话
··会话过程中要解决的一些问题
        ··每个用户与服务器进行交互的过程中,各自会有一些数据,程序要想办法保存每个用户的数据
        ··例如:用户点击超链接通过一个servlet购买了一个商品,程序应该保存用户购买的商品,以便于用户结账servlet时,结账servlet可以得到用户商品为用户结账
        ··思考:用户购买的商品保存在request或servletContext中行不行?

                【保存会话数据的两种技术】
··Cookie
        ··Cookie是客户端技术,程序把每个用户的数据以cookie形式写个用户各自的浏览器,当用户使用浏览器再去访问服务器中的web资源时,就会带着各自的数据去。这样,web资源处理的就是用户各自的数据了
··Session
        ··Session是服务器端技术,利用这个技术,服务器在运行时可以为每一个用户的浏览器创建一个其独享的session对象,由于session为用户浏览器独享,所以用户在访问服务器的web资源时,可以把各自的数据放在各自的session中,当用户再去访问服务器中的其它web资源时,其它web资源再从用户各自的session中取出数据为用户服务

                【Cookie API】
··javax.servlet.http.Cookie类用于创建一个Cookie,response接口也定义了一个addCookie方法,它用于在其响应头中增加一个相应的Set-Cookie头字段。同样,request接口中也定义了一个getCookie方法,它用于获取客户端提交的Cookie。
Cookie类的方法:
        + public Cookie(String name, String value)
        + setValue()与getValue()
        + setMaxAge()与getMaxAge()
        + setPath()与getPath()        default:/day06/servlet/
        + setDomain()与getDomain()        .sina.com
        + getName()

                【Cookie应用】
··显示用户上次访问时间
//用Cookie保存用户上次访问时间
public class CookieDemo1 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.print("您上次访问的时间是:");//print较write方法的区别:print会自动换行
               
                //获得用户的时间Cookie
                Cookie[] cookies = request.getCookies();
                for(int i = 0; cookies != null && i < cookies.length; i++) {
                        if(cookies.getName().equals("lastAccessTime")) {
                                long cookieValue = Long.parseLong(cookies.getValue()); //得到了用户的上次访问时间值
                                Date date = new Date(cookieValue);
                                out.print(date.toLocalString());
                        }
                }
               
                //给用户回送最新的访问时间
                Cookie cookie = new Cookie("lastAccessTime",System.currentTimeMillis()+"");
                cookie.setMaxAge(1*30*24*3600);
                cookie.setPath("/day07");
               
                response.addCookie(cookie);
               
        }



您需要登录后才可以回帖 登录 | 加入黑马