ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Java中的Session的使用范例

2021-02-07 22:01:48  阅读:195  来源: 互联网

标签:范例 getSession Java 用户 Session ID 服务端 客户端


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

标签:范例,getSession,Java,用户,Session,ID,服务端,客户端
来源: https://blog.csdn.net/CY2333333/article/details/113747721

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有