个性化阅读
专注于IT技术分析

Servlet会话追踪:HttpSession接口

  1. HttpSession接口
  2. 如何获取HttpSession对象
  3. HttpSession接口的常用方法
  4. 使用HttpSession的示例

在这种情况下, 容器为每个用户创建一个会话ID。容器使用该ID来标识特定用户.HttpSession的对象可用于执行两项任务:

  1. 绑定对象
  2. 查看和操作有关会话的信息, 例如会话标识符, 创建时间和上次访问时间。
HttpSession对象

如何获得HttpSession对象?

HttpServletRequest接口提供了两种方法来获取HttpSession的对象:

  1. public HttpSession getSession():返回与此请求关联的当前会话, 或者如果该请求没有会话, 则创建一个。
  2. public HttpSession getSession(boolean create):返回与此请求关联的当前HttpSession;如果没有当前会话且create为true, 则返回一个新会话。

HttpSession接口的常用方法

  1. public String getId():返回包含唯一标识符值的字符串。
  2. public long getCreationTime():返回创建此会话的时间, 以格林尼治标准时间1970年1月1日午夜以来的毫秒数为单位。
  3. public long getLastAccessedTime():返回客户端最后一次发送与此会话相关联的请求的时间, 以格林尼治标准时间1970年1月1日午夜以来的毫秒数为单位。
  4. public void invalidate():使此会话无效, 然后取消绑定到该会话的任何对象。

使用HttpSession的示例

在此示例中, 我们在一个servlet的会话范围内设置属性, 并从另一个servlet的会话范围获取该值。为了在会话范围内设置属性, 我们使用了HttpSession接口的setAttribute()方法, 并且为了获取属性, 我们使用了getAttribute方法。

index.html

<form action="servlet1">
Name:<input type="text" name="userName"/><br/>
<input type="submit" value="go"/>
</form>

FirstServlet.java

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;


public class FirstServlet extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response){
		try{

		response.setContentType("text/html");
		PrintWriter out = response.getWriter();
		
		String n=request.getParameter("userName");
		out.print("Welcome "+n);
		
		HttpSession session=request.getSession();
		session.setAttribute("uname", n);

		out.print("<a href='servlet2'>visit</a>");
				
		out.close();

                }catch(Exception e){System.out.println(e);}
	}

}

SecondServlet.java

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class SecondServlet extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)
		try{

		response.setContentType("text/html");
		PrintWriter out = response.getWriter();
		
		HttpSession session=request.getSession(false);
		String n=(String)session.getAttribute("uname");
		out.print("Hello "+n);

		out.close();

                }catch(Exception e){System.out.println(e);}
	}
	

}

web.xml

<web-app>

<servlet>
<servlet-name>s1</servlet-name>
<servlet-class>FirstServlet</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>s1</servlet-name>
<url-pattern>/servlet1</url-pattern>
</servlet-mapping>

<servlet>
<servlet-name>s2</servlet-name>
<servlet-class>SecondServlet</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>s2</servlet-name>
<url-pattern>/servlet2</url-pattern>
</servlet-mapping>

</web-app>

下载此示例(使用Myeclipse IDE开发)

下载此示例(使用Eclipse IDE开发)

下载此示例(使用Netbeans IDE开发)

赞(0) 打赏
未经允许不得转载:srcmini » Servlet会话追踪:HttpSession接口
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者

微信扫一扫打赏