zoukankan      html  css  js  c++  java
  • javaWeb(2)----cookie,session

    cookie:

    cookie.setMaxAge(expiry);  //设置cookie被浏览器保存的时间。 

    expiry:单位秒,默认为-1

                 expiry=-1:代表浏览器关闭后,也就是会话结束后,cookie就失效了,也就没有了。

                 expiry>0:代表浏览器关闭后,cookie不会失效,仍然存在。并且会将cookie保存到硬盘中,直到设置时间过期才会被浏览器自动删除,

                 expiry=0:删除cookie。不管是之前的expiry=-1还是expiry>0,当设置expiry=0时,cookie都会被浏览器给删除。

    setPath("/");  //在该服务器下,任何项目,任何位置都能获取到cookie,

    session:

        持久化session:将保存sessionid的JESSIONID保存在本地;如果不持久化,则session只保存在浏览器的内存里,关闭后session被删除

        session的生命周期:

                    1、什么时候创建session?

                             session="false" 表示当前页面禁用session对象,但是可以使用HttpSession对象

        获取HttpSession对象:

                          1)、request.getSession(boolean create);

                              create为true:若没有HttpSession对象,创建一个关联当前页面的HttpSession对象,若有直接返回关联的,一定会返回HttpSession对象,

                              create为false:没有返回null,有返回true;

                          2)、request.getSession();没有参数的,等同于request.getSession(true);

                    2、销毁HttpSession:

                          调用 session.invalidate(); HttpSession对象立即失效

                          调用 session.setMaxInactiveInterval(5); 五秒后HttpSession对象立即失效

                          在web.xml文件修改失效时间:Tomcat为全局设置(默认30分钟,单位为分钟),web应用的web.xml为局部

        HttpSession的常用方法:

                          session.getId();

                          session.setAttribute("key","value"); 设置属性

                          session.getAttribute("key"); 获取属性

        把cookie禁用了如何跟踪session:利用URL重写session跟踪

                         例:response.encodeUrl("hello.jsp");

                          encodeURL(java.lang.String url) 进行所有URL重写

          encodeRedirectURL(java.lang.String url) 进行重定向 URL重写

    表单的重复提交:

    属于重复提交:

                1)在表单提交到一个servlet,而servlet又通过请求转发的方式响应到JSP(HTML)页面,这时地址栏还保留着servlet的路径,在响应页面点击“刷新”;

                2)在响应页面没有到达时,重复点击提交按钮;

                3)点击返回,再点击提交;

    不属于重复提交:

                点返回,再点击“刷新”原表单,再点击“提交”;

    避免重复提交的方法:使用session

    jsp页面代码:

    <%
        String token=new java.util.Date().getTime()+"";
        session.setAttribute("token",token);
    %>
    <tr>
    <td colspan="2"><input type="hidden" name="token" value="<%=token%>"></td>
    </tr>

    servlet代码:

            HttpSession session=request.getSession();
            String token=request.getParameter("token");
            Object tokenValue=session.getAttribute("token");
            if(tokenValue!=null && token.equals(tokenValue)) {
                session.removeAttribute("token");
            }else{
                response.sendRedirect(request.getContextPath()+"/session/token.jsp");
                //记得return,不然会发生两次重定向
                return;
            }
  • 相关阅读:
    月食照片
    宾得镜头大全与发展史
    月食照片
    关于镜头系数的疑问
    经验和教训
    常用正则表达式
    12月19日
    部長面談
    周六
    异度空间
  • 原文地址:https://www.cnblogs.com/Lemonades/p/10925324.html
Copyright © 2011-2022 走看看