Servlet Session小结

 1、Servlet Session简介

Servlet提供了HttpSession接口来实现了一种跨多个页面请求或访问网站时识别用户以及存储有关用户信息的方式,Servlet容器(即web服务器)使用这个接口来创建一个HTTP客户端和HTTP服务器之间的session会话,会话持续一个指定的时间段,跨多个连接或页面请求。可以通过调用HttpServletRequest对象的getSession()方法来获取HttpSession对象,如果session不存在,那么会生成一个session。要注意的是,需要在向客户端发送任何文档内容之前调用request.getSession()。

2、Servlet Session方法

方法
描述
public Object getAttribute(String name)该方法返回在该session会话中具有指定名称的对象,如果没有指定名称的对象,则返回 null。由于返回是Object,用的时候记得转型。
public Enumeration getAttributeNames()该方法返回String对象的枚举,String对象包含所有绑定到该session 会话的对象的名称。
public long getCreationTime()该方法返回该session会话被创建的时间,自格林尼治标准时间1970年1月1日午夜算起,以毫秒为单位。
public String getId()该方法返回一个包含分配给该session会话的唯一标识符的字符串。
public long getLastAccessedTime()该方法返回客户端最后一次发送与该session会话相关的请求的时间自格林尼治标准时间1970年1月1日午夜算起,以毫秒为单位。
public int getMaxInactiveInterval()该方法返回Servlet容器在客户端访问时保持session会话打开的最大时间间隔,以秒为单位。
public void invalidate()该方法指示该session会话无效,并解除绑定到它上面的任何对象。
public boolean isNew()如果客户端还不知道该session会话,或者如果客户选择不参入该session会话,则该方法返回true。
public void removeAttribute(String name)该方法将从该session会话移除指定名称的对象。
public void setAttribute(String name, Object value) 该方法使用指定的名称绑定一个对象到该session会话。
public void setMaxInactiveInterval(int interval)该方法在Servlet容器指示该session会话无效之前,指定客户端请求之间的时间,以秒为单位。

3、一个Session的示例

package net.yedward.server;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date;

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 SessionTrack extends HttpServlet {
	private static final long serialVersionUID = 452837015093401295L;

	@Override
	protected void service(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		// 如果不存在session,则创建一个session对象
		HttpSession session = request.getSession(true);
		Date createDate = new Date(session.getCreationTime());
		Date lastAccessedTime = new Date(session.getLastAccessedTime());
		String title = "欢迎回到我的网站";
		Integer visitCount = new Integer(0);
		String visitCountKey = new String("visitCount");
		String userID = new String("ABCD");
		String userIDKey = new String("userID");

		// 检查是否是新的访问者
		if (session.isNew()) {
			title = "欢迎来到我的网站";
			session.setAttribute(userIDKey, userID);
		} else {
			visitCount = (Integer) session.getAttribute(visitCountKey);
			visitCount = visitCount + 1;
			userID = (String) session.getAttribute(userIDKey);
		}
		session.setAttribute(userIDKey, userID);
		session.setAttribute(visitCountKey, visitCount);
		session.setMaxInactiveInterval(60 * 5);

		// 返回响应给浏览器
		response.setContentType("text/html; charset=utf-8");
		PrintWriter out = response.getWriter();
		out.print(title + "<br />");
		out.print(session.getId() + "<br />");
		out.print(userID + "<br />");
		out.print(createDate + "<br />");
		out.print(lastAccessedTime + "<br />");
		out.print(visitCount);
		out.flush();
		out.close();
	}
}

4、删除Session

(1)如果要删除整个session会话,可以调用invalidate()方法来丢弃整个session会话。

(2)也可以设置session会话的过期时间,可以调用setMaxInactiveInterval()方法来设置session的会话超时。

(3)对于tomcat服务器,可以在web.xml文件配置文件中通过设置<session-timeout>15</session-timeout>来设置session会话超时,这里的超时设置是以分钟为单位。

本文标题:Servlet Session小结

本文链接:http://yedward.net/?id=268

本文版权归作者所有,欢迎转载,转载请以文字链接的形式注明文章出处。

相关文章