JSP内置对象之session:
什么是会话:
- 一个会话就是在一段时间内,一个客户端与Web服务器的一连串相关的交互过程
session对象常用方法:
方法名 | 说明 |
String getId | 获取sessionid |
void setMaxInactiveInerval(Int interval) | 设定session的非活动时间 |
int getMaxlnactivelnterval() | 获取session有效非活动时间(以秒为单位) |
void invalidate | 设置session对象失效 |
void setAttribute(String key Object value) | 以key/value的形式保存对象值 |
Object getAttribute(String key) | 通过key获取对象值 |
void removeAttribute(String key) | 从session中删除指定名称(key)对应的对象 |
session与窗口的关系:
- session和浏览器窗口
- 通过超链接打开新窗口,新窗口的session与其父窗口的session相同
使用session实现访问控制功能:
基于上次 下的实现登陆的功能可以直接访问成功页面 有着极大的安全隐患
我们应该在访问成功页面的时候 先看 是否登录成功,没有登陆成功需要返回登录页面。
只需要在上个作品代码基础上:
controller.jsp加:
//将用户信息保存到session
session.setAttribute("username",username);
在登录成功页面加(welcome.jsp)加:
<%
Object username = session.getAttribute("username");
if (username==null){
response.sendRedirect("welcome.jsp");
}
%>
欢迎访问球星是:<%=session.getAttribute("name")%>
session失效问题:
语法:手动设置失效:invalidate()
超市失效:
- 通过setMaxInactiveInterval()方法,单位是秒
//将用户信息保存到session session.setAttribute("username",username); //设置session最大空闲时长 session.setMaxInactiveInterval(666);///666表示时长
- 通过设置项目web.xml或Tomcat下的conf/web.xml文件,单位是分钟
<session-config> <session-timeout>666</session-timeout> ///代表时长 </session-config>
两个xml:
项目有个--web.xml (仅本项目)
Tomcat也有个--web.xml (全局)
include指令:
- 除了首页面,其他页面中同样需要加入登陆验证,有没有办法避免冗余代码出现???
可以将一些共性的内容写入一个单独的文件中,然后通过include指令引用该文件
创建文件写入代码比如,文件名为curry.jsp
在后台首页面中使用include指令引用文件:<%@ include file="curry.jsp"%>