猿教程 Logo

4)HttpSession 接口

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

  1. 绑定对象

  2. 查看和操纵有关会话的信息,例如会话标识符,创建时间和最后访问时间。



如何获取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>


版权声明:本站所有教程均为本站原创或翻译,转载请注明出处,请尊重他人劳动果实。请记住本站地址:www.yuanjiaocheng.net (猿教程) 作者:卿文刚
本文标题: C#环境
本文地址:http://www.yuanjiaocheng.net/Servlet/http-session-in-session-tracking.html