需求:
在页面跳转时判断是否已经是登录状态。
解决方法:
在登录页(比如说是login.asp)登陆成功后,要把登陆成功的状态赋值给一个Session变量,比如 Session("login")="OK",然后在除登录页之外的其他页面的开头都检测这个Session变量的值,不是登录状态即立刻强制跳转到登录页面,比如:
if session("login")<>"OK" then response.redirect "login.asp"
这样的话,除登录页之外的其他页面如果想通过地址栏直接输入URL进入都会被强行转到登录页面,这样就可以防止非法进入了。
session:
1.定义
服务器会给每一个用户(浏览器)创建一个session对象。一个session独占一个浏览器,只要浏览器不关闭,它就一直存在。
session称为会话控制,存储用户会话所需的属性和配置信息,这样,用户在应用程序的web页面跳转时,存储在session对象中的用户信息就不会丢失。
2.常用方法
getId():获取session的唯一标识
getServletContext():代表整个web服务
getAttribute(String):获取session的节点,比如你在其中一个Servlet中通过setAttribute(String,Object)配置了相关的session信息,然后通过另一个Servlet获取这个Servlet中的session信息,就要用到getAttribute(String)这个方法
setAttribute(String,Object):设置session节点
removeAttribute(String):一出一个session节点
isNew():判断一个session是否是一个新的session
invalidate():注销session的
3.实例
设置session:
protected void doGet(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException { // TODO Auto-generated
HttpSession session = request.getSession();
session.setAttribute("name", "wangwei");
response.sendRedirect("/servlet/SessionLogin"); }
获取session
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
HttpSession session =request.getSession();
String name =(String)session.getAttribute("name");
response.getWriter().println("name"+name);
}
销毁session
- 超时自动销毁。Tomcat 服务器默认的Session超时时间是30分钟可以利用web.xml设置超时时间单位是分钟,设置为0表示不销毁。
<session-config> <session-timeout>20</session-timeout> </session-config>
- 主动销毁