走进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 ,