- HttpSession接口
- 如何获取HttpSession对象
- HttpSession接口的常用方法
- 使用HttpSession的示例
在这种情况下, 容器为每个用户创建一个会话ID。容器使用该ID来标识特定用户.HttpSession的对象可用于执行两项任务:
- 绑定对象
- 查看和操作有关会话的信息, 例如会话标识符, 创建时间和上次访问时间。
如何获得HttpSession对象?
HttpServletRequest接口提供了两种方法来获取HttpSession的对象:
- public HttpSession getSession():返回与此请求关联的当前会话, 或者如果该请求没有会话, 则创建一个。
- public HttpSession getSession(boolean create):返回与此请求关联的当前HttpSession;如果没有当前会话且create为true, 则返回一个新会话。
HttpSession接口的常用方法
- public String getId():返回包含唯一标识符值的字符串。
- public long getCreationTime():返回创建此会话的时间, 以格林尼治标准时间1970年1月1日午夜以来的毫秒数为单位。
- public long getLastAccessedTime():返回客户端最后一次发送与此会话相关联的请求的时间, 以格林尼治标准时间1970年1月1日午夜以来的毫秒数为单位。
- 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开发)