session共享问题

Posted zuiaimiusi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了session共享问题相关的知识,希望对你有一定的参考价值。

1.cookie和session的区别:

                              session              cookie

保存的位置               服务端                客户端

保存的内容               Object                String

 

2.

String getContextPath() 虚拟路径

String getRealPath(String name)虚拟路径相对的绝对路径(虚拟路径)

 

index.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" import="java.util.Date" %>
<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>
<%="当前项目的虚拟路径:"+application.getContextPath()+"<br/>"%>
<%="虚拟路径的绝对路径"+application.getRealPath("/untitled_war_exploded")%>
<%! String name,pwd; %> 
<% int flag=0; //在缓存中寻找用户名和密码 Cookie[] cookies=request.getCookies();
for(Cookie cookie:cookies)

{ if(cookie.getName().equals("uname"))
{ name=cookie.getValue(); flag++;
}
if(cookie.getName().equals("upwd"))

{ pwd=cookie.getValue(); flag++; }
} if(flag!=2)

{ out.print("cookie fail"); }

else out.print("cookie success"); %>
<form action="register.jsp"method="post">
用户名:<input type="text" name="uname" value="<%=(name==null?"":name)%>"><br/>
密码:<input type="password" name="upwd" value="<%=(pwd==null?"":pwd)%>"><br/>
<input type="submit" value="register"><br/>
</form>
</body>
</html>

register.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%
    //设置编码
    request.setCharacterEncoding("utf-8");
    String name=request.getParameter("uname");
    String pwd=request.getParameter("upwd");
    Cookie cookie=new Cookie("uname",name);
    Cookie cookie1=new Cookie("upwd",pwd);
    response.addCookie(cookie);
    response.addCookie(cookie1);
    //response.sendRedirect("success.jsp");
    if(name.equals("z")&&pwd.equals("z")){
        //只有登入成功,session中才会存在uname/upwd
        session.setAttribute("uname",name);
        session.setAttribute("upwd",pwd);
        session.setMaxInactiveInterval(60*30);
        //response.sendRedirect("success.jsp");
        out.print("sessionId   "+session.getId());
        Cookie cookie2=new Cookie("uname",name);//cookie服务端产生
        response.addCookie(cookie2);
        request.getRequestDispatcher("success.jsp").forward(request,response);//响应给客户端
    }else
        response.sendRedirect("index.jsp");
%>
<br/>
</body>
</html>

success.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>title</title>
</head>
<body>
登入成功!!
<%
    out.println("sessionId   "+session.getId());
    Cookie[] cookies=request.getCookies();
    for(Cookie cookie:cookies){
        if(cookie.getName().equals("JSESSIONID")){
            out.print("JSESSIONID   "+cookie.getValue());
        }
    }
    //String name=request.getParameter("uname");
    String name=(String)session.getAttribute("uname");
    //如果用户没有登录,而是通,过地址栏访问success.jsp,则必然获取到的name值为null
    //如果没有登入,应该跳转登录页面
    if(name!=null)
    {out.println("登入成功用户"+name);
    %>
<a href="invalidate.jsp">
注销
</a>
<%
    } else
        response.sendRedirect("login.jsp");
%>
</body>
</html>

 

参考:http://www.xuehuile.com/blog/fb1da44cf8b943d5a1a09b234bd1b12d.html

以上是关于session共享问题的主要内容,如果未能解决你的问题,请参考以下文章

spring-session实现session共享案例(单点登录)

C#-WebForm-★内置对象简介★Request-获取请求对象Response相应请求对象Session全局变量(私有)Cookie全局变量(私有)Application全局公共变量Vi(代码片段

SpringBootSecurity学习(09)网页版登录配置Session共享

片段之间的共享数据(父列表视图和子列表视图)

Redis+Tomcat+Nginx集群实现Session共享,Tomcat Session共享

TPPHP同域不同子级域名共享Session单点登录