Java中的Session的使用范例

Session原理

        Session对象是保存在服务端的,服务端为了区分不同客户端的请求,会为每一个不同的客户端创建一个会话对象(Session),作为不同客户端用户的唯一标识,起到取分、跟踪的作用。
        每次HTTP请求的时候,客户端都会发送对应的Cookie信息到服务端。第一次创建Session的时候,服务端会在HTTP协议中通知客户端,在 Cookie 里面记录一个Session ID,以后每次请求把这个Session ID发送到服务器,用以在服务端创建具有唯一性的Session对象。如果客户端的浏览器禁用了 Cookie ,一般这种情况下,会使用URL重写的技术,即每次HTTP交互,URL后面都会被附加上一个诸如 sid=xxxxx 这样的参数,服务端据此来识别用户。

Session使用范例:实现用户登录功能,并在主页显示用户ID

  1. 服务端的Session是一个对象,并且有保存键值对的功能。所以每次我们打开主页时,可以使用Ajax请求,查看在服务端对应的该客户端Session中是否保存了用户ID,如果没有,则在主页显示需要登录。
  2. 登录完成后,利用Ajax请求将用户ID和密码传到服务端,服务端连接数据库检查用户ID且密码无误后,将用户ID以键值对的形式保存在Session对象中。
  3. 服务端告诉客户端查询无误,随后客户端在进行Ajax请求取得Session对象中的用户ID,并将用户ID显示在主页上。这样,整个流程就完成了。

服务端代码:

  • 设置键值对存储用户ID
//HttpServletRequest request.getSession()方法可取得Session对象
  HttpSession session= request.getSession();
              //设置Session对象的有效时间(超过该时间未操作则失效),参数单位为秒
              session.setMaxInactiveInterval(10);
              /* public class UserInfo {
                   public String ID;
                   public String PassWord;
                   .......省略get()、set()
                   }*/
              session.setAttribute("email",userInfo.getID());
  • 接收Ajax请求,返回Session中存储的用户ID
    //SpringMvc
    @ResponseBody
    @RequestMapping(path = "/getSession.do",method = RequestMethod.GET)
    public String getSession(HttpServletResponse response,HttpServletRequest request){
        return (String)request.getSession().getAttribute("email");
    }

  • 客户端Ajax请求取得Session中的用户ID
  window.onload=function () {
           $.get("/Login/getSession.do",{},function (user) {
               if(user===""){
                   alert("您还未登录,请尽快登录");
               }else{
                   alert(user);
                   ...
               }
           })
       }
上一篇:基于ssm的客户管理系统


下一篇:web中的session和shiro中的session