当前位置:编程学习 > JAVA >>

走进WEB存储对象之HttpSession

HttpSession快速热身
HttpSession 表示一次回话,用来维持客户端用户的状态信息。
当用户打开浏览器,访问某个网站时,服务器就会在服务器的内存为该浏览器分配一个空间,该空间被浏览器独占,这个空间就是session空间,该空间中的数据默认存在时间为30min,对于一个浏览器而言,不同的页面能够共享session空间的数据。
我们可以通过方法public int getMaxInactiveInterval()查看新建的session对象的有效时间。
可以通过下面两种方式指定session的有效时间。
1.在web.xml配置文件中增加如下配置
<session-config >
     <session-timeout>20</session-timeout>
</session-config >
2. 创建session对象后通过调用public void setMaxInactiveInterval(int time)这个方法设置session的有效时间。
 
当某个浏览器访问网站时,服务器会给浏览器分配一个唯一的session id并以此来区分不同的浏览器(即客户端)。
 
Cookie机制是默认的session管理策略,如果禁止web浏览器的cookie功能,将无法获得session id。
 
一个简单基于session的用户登录状态信息的管理的小程序
 
1. 创建一个普通的web工程。
2. 在src文件夹下建立包名为com.neusoft.httpsession的包,再在该包下创建名为HttpSessionTest的servlet,内容如下:
————————————————————————————————————
package com.neusoft.httpsession;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
 
public class HttpSessionTest extends HttpServlet {
 
    public void doGet(HttpServletRequest request, HttpServletResponse response)
           throws ServletException, IOException {
       this.doPost(request, response);
 
    }
 
    public void doPost(HttpServletRequest request, HttpServletResponse response)
           throws ServletException, IOException {
       request.setCharacterEncoding("gb2312");
       response.setCharacterEncoding("gb2312");
       PrintWriter out = response.getWriter();
       String userName = request.getParameter("userName");
       String userPassWord = request.getParameter("userPassWord");
       // 没有登录请求的情况或者没有通过登录页面直接请求本页面的情况
       if ((userName == "" && userPassWord == "")
              || (userName == null && userPassWord == null)) {
           HttpSession session = request.getSession(true);
           // 从session对象中取到用户名
           String name = (String) session.getAttribute("name");
           // 如果name不为空说明用户已经登录
           if (name != null) {
              out.println(name + "已经登录!");
           } else {
              // 如果用户名为空则跳转到登录页面
              response.sendRedirect("/Test/index.jsp");
           }
       } else if (userName == "" || userPassWord == "") {
           // 如果用户名或密码没有输入时则跳转到登录页面
           response.sendRedirect("/Test/index.jsp");
       } else {// 有登录请求的情况,创建session,并从session中取出name并显示
           HttpSession session = request.getSession(true);
           session.setAttribute("name", userName);
           String name = (String) session.getAttribute("name");
           out.println(name + "已经登录!");
       }
       out.flush();
       out.close();
    }
}
————————————————————————————————————
该servlet在web.xml配置文件中的配置信息如下:
————————————————————————————————————
  <servlet>
    <servlet-name>HttpSessionTest</servlet-name>
    <servlet-class>com.neusoft.httpsession.HttpSessionTest</servlet-class>
  </servlet>
<servlet-mapping>
    <servlet-name>HttpSessionTest</servlet-name>
    <url-pattern>/servlet/HttpSessionTest</url-pattern>
  </servlet-mapping>
————————————————————————————————————
登录页面中的表单内容如下:
<form action="/Test/servlet/HttpSessionTest " method="post">
  <label>姓名:</label>
  <input type="text" name="userName"><br>
  <label>密码:</label>
  <input type="password" name="userPassWord"><br>
  <input type="submit" value="确定">
  <input type="reset" value="重置">
  </form>
————————————————————————————————————
3.重新发布工程,在浏览器中输入http://localhost:8080/Test/弹出登录窗口,输入用户名和密码(此处没有校验),就会跳转到servlet处理页面,并显示“**已经登
录!“的信息,用户名或者密码为空或者都为空都重新跳转到登录页面。
 
如果客户端没有登录过,直接

补充:软件开发 , Java ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,