博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Session内置对象
阅读量:6401 次
发布时间:2019-06-23

本文共 4304 字,大约阅读时间需要 14 分钟。

Session内置对象

  Request内置对象中的属性只是在当次请求中有效(经过客户端跳转之后就无效,因为客户端跳转属于第二次请求)
  也就是说request只代表当次请求的对象,如果要让客户端跳转之后保存的属性还有效,则可以使用ssion内置对象。
  用户的信息应保存在表示一个用户的内置对象中,就是session内置对象,因为Session就算客户端跳转了,保存的属性还是有效的。
  session内置对象的类型是“javax servethttp HttpSession",

Session的存活时间

  经过客户端跳转页可以获取保存在 session 内置对象中的信息, 因为 session 表示的是一个用户.
  不关闭浏览器 session 就存在(默认时间是30分钟), 可以设置 session的超时时间
Demo: 设置 session 的超市时间
  在 Tomcat 下的 conf\web.xml 中设置, 修改为60分钟
<!-- ==================== Default Session Configuration ================= -->
<!-- You can set the default session timeout (in minutes) for all newly -->
<!-- created sessions by modifying the value below. -->

<session-config>

<session-timeout>60</session-timeout>
</session-config>

常见的方法有:

  public void setAttribute( java lang. String nase. java. lang 0bject value)
    保存属性
  public java. lang. 0bject getAttr ibute( java. lang. String name
    根据属性名获取值(只能获取使用 setAttribute( ) 保存的数据值)
  public void removeValue( java. lang. String name)
    根据属性名称刪除对应的值, 只能删除使用 setAttribute( ) 保存的数据值)
  public void boolean isNew( )
    判断当前访问的用户是否是第一次访问
  public void invalidate
    销毁当前 session, 一般用来实现用户的注销功能
  public java.lang.String getId( )
    获取 session 的编号, 这个编号和浏览器中名字叫做 JSEESSIONID 的 Cookie 的值是一样的

Demo: 获取 session 的编号

1 @SuppressWarnings("serial")2 public class EmpServlet extends HttpServlet {3     @Override4     protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {5         HttpSession session = req.getSession();6         String id = session.getId();7         System.out.println(id);8     }9 }

Demo: 实现简单登录的验证

1.定义表单 (实现登录)

1  2     
3
4
请登录! 5 用户名:
6 密    码:
7
8
9
10
11

2.登录判断 (删除数据的时候需要进行登录验证)

1 @SuppressWarnings("serial") 2 public class EmpServlet extends HttpServlet{ 3     //获取业务层实现类对象 4     private IEmpService empservice = (IEmpService)ServiceFactory.getInstance(EmpServiceImpl.class); 5     @Override 6     protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 7         //处理中文乱码 8         req.setCharacterEncoding("utf-8"); 9         String pathInfo = req.getPathInfo();10         try {11             if ("/login".equals(pathInfo)) {12                 this.login(req,resp);13             } else if("/remove".equals(pathInfo)) {14                 this.removeById(req, resp);15             } else if ("/logout".equals(pathInfo)) {16                 this.logOut(req, resp);17             }18         } catch (Exception e) {19             e.printStackTrace();20         }21     }22     //删除数据的方法23     public void removeById(HttpServletRequest req, HttpServletResponse resp) throws Exception {24         Integer empno = Integer.parseInt(req.getParameter("id"));25         if (req.getSession().getAttribute("emp")==null) {26             req.setAttribute("msg", "只有登录之后才能删除数据! ");27             req.getRequestDispatcher("/pages/login.jsp").forward(req, resp);28         } else {29             System.out.println(empservice.removeEmpById(empno));30         }31     }32     //负责登录的方法33     public void login(HttpServletRequest req, HttpServletResponse resp) throws Exception {34         String name = req.getParameter("username");35         String pwd = req.getParameter("pwd");36         //查询数据库中的用户密码和用户输入的进行对比37         Emp emp = empservice.findLogin(name, pwd);38         if (emp != null) {39             //将用户的信息保存到 seesion 内置对象40             req.getSession().setAttribute("emp", emp);41             // 客户端跳转42             resp.sendRedirect("/MvcPro/pages/welcome.jsp");43         } else {44             // 重新返回登录页面再次登录(服务器端跳转)45             req.getRequestDispatcher("/pages/login.jsp").forward(req, resp);46         }47     }48     //注销的方法49     public void logOut(HttpServletRequest req, HttpServletResponse resp) throws Exception  {50         req.getSession().invalidate();51         resp.sendRedirect("/MvcPro/pages/login.jsp");52     }53     @Override54     protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {55         this.doGet(req, resp);56     }57 }

 

转载于:https://www.cnblogs.com/yslf/p/10745571.html

你可能感兴趣的文章
计算与推断思维 十四、回归的推断
查看>>
OC3大会给行业者的启发:移动VR、IP内容、未来图景
查看>>
Kotlin+SpringBoot服务端restful框架搭建(1)
查看>>
工信部下属单位赛宝认证中心成功实施云服务平台
查看>>
滴滴美国研究院落户硅谷,重点发展大数据安全和智能驾驶
查看>>
ARM嵌入式系统启动架构研究
查看>>
Java NIO之拥抱Path和Files
查看>>
Java中的包
查看>>
PostgreSQL Oracle 兼容性之 - create type
查看>>
PHP Console工具使用分享
查看>>
发现安全隐患的“火眼金睛”
查看>>
CentOS设置程序开机启动程序/服务的方法(转)
查看>>
8Manage:大宗商品采购,专注构建企业采购信息化!
查看>>
2017年云计算成本将会更低
查看>>
Libratus – The AI that Defeated Humans in the Game of Poker
查看>>
WP ApplicationBar
查看>>
总结程序设计几大原则
查看>>
业界三种架构优缺点比较
查看>>
js报错:Ajax 中onreadystatechange在ie7及以上浏览器兼容吗,为什么没有反应?求大神...
查看>>
STL容器
查看>>