java基础华南理工大学无线电爱好者协会软件小组Java学习笔记

JSP 会话管理

2016-09-07  本文已影响491人  廖少少

本文包括:

  1. HttpSession对象

  2. session内置对象

  3. 使用session实现访问控制

  4. JSP作用域

  5. Cookie

  6. session与Cookie的比较

  7. 小试牛刀:简化用户登录


会话:当前浏览器与服务器间多次的请求、响应关系,被称作一个会话

1、HttpSession对象

1.1、HttpSession对象简介

1.2、HttpSession对象的存在周期

原始出处:深入理解 HTTP Session

2、session内置对象

2.1、session内置对象简介

  1. session表示客户端与服务器的一次会话

  2. Web中的session指:用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间,也就是用户浏览网站所花费的时间。

  3. 从上述定义中可以看到,session实际是一个【特定的时间概念】

  4. 服务器的内存中,保存着同用户的session。

2.2、内置对象session的常用方法

2.3、session与窗口的关系

3、使用session实现访问控制

3.1、需求说明:

3.2、业务分析:

  1. 登录处理页面

  2. 获得登录信息

  3. 查询数据库,判断该用户是否注册

  4. 如果该用户已注册,在session中保存该用户的登录信息

  5. 如果用户是管理员就跳转到管理员界面;否则跳转到新闻发布系统的首页。

  6. 管理员界面

    • 从session中提取该用户信息

    • 如果用户信息存在,显示管理员界面内容

    • 如果用户信息不存在,跳转到登录页面

3.3、代码实现:

  1. 在控制页面获取用户请求的登录信息进行验证

     <%
     if ("admin".equals(name)&&"admin".equals(pwd){  //如果是已注册用户
         //在session中存放用户登录信息    
         session.setAttribute("login", name);
         //设置session过期时间
         session.setMaxInactiveInterval(10*60);
         //请求转发
         request.getRequestDispatcher("admin.jsp") .forward(request,response);
     } else {
     response.sendRedirect("index.jsp");}
     %>
    
  2. 在新闻发布系统新闻发布页面增加登录验证

     <%
     //session.getAttribute(String key)方法的返回值是一个Object,必须进行强制类型转换
     String login = (String) session.getAttribute("login");
         if (login == null){
             //如果session中不存在该用户的登录信息,转入登录页面
             response.sendRedirect("index.jsp");
     } %>    
    

3.4、优化访问控制:

  1. 除了首页面,其它页面中同样需要加入登录验证,有没有办法避免冗余代码的出现?可以将一些共性的内容写入一个单独的文件中,然后通过include指令引用该文件。

  2. 创建登录验证文件 loginControl.jsp

     <%
     String login = (String) session.getAttribute("login");
     if (login == null)
       response.sendRedirect("index.jsp");
     %>
    

    在后台首页面中使用include指令引用登录验证文件

     <%@ include file="loginControl.jsp"    %>
    

    注意:重复定义变量。

4、JSP作用域

作用域:信息共享的范围

4.1、常用作用域存/取值方法

4.2、内置对象名称

  1. page作用域指本JSP页面的范围

    • pageContext.setAttribute(键,值)

    • pageContext.getAttribute(键)

  2. request作用域内的对象则是与客户端的请求绑定在一起

  3. session对象作用域:一次会话

  4. application的作用域:面对整个Web应用程序

5、cookie

cookie是Web服务器保存在客户端的一系列文本信息

5.1、cookie的作用:

  1. 对特定对象的追踪
  1. 统计网页浏览次数
  1. 简化登录

5.2、安全性能:容易信息泄露

5.3、语法:

5.4、常用方法:

5.5、Cookie的中文传值问题

6、session与cookie的比较

7、小试牛刀:简化用户登录

7.1、需求说明:

7.2、实现思路:

  1. 用户登录后,创建cookie保存用户信息

  2. 设置cookie的有效期为5分钟

  3. 在登录页循环遍历cookie数组,判断是否存在指定名称的cookie,若存在则直接跳转至欢迎页面

提示:使用setMaxAge(5*60)设置cookie的有效期

上一篇 下一篇

猜你喜欢

热点阅读