session对象
session对象
一.session对象和application对象不同,application对象只有一个,它可以绑定若干个类似于全局变量的参数或者java对象,而session对象是系统为每一个登陆的用户创建的,是独一无二的,相当于局部参数或者Java对象。
session是javax.servlet.http.HttpSession接口的实例对象。因此,session的方法就相当于是javax.servlet.http.HttpSession接口的方法。
二.获取session对象常用的方法
1)
使用session关键字直接引用session
<%
session.Method();
%>
2)通过request对象的getSession方法,不过,这个获取的HttpSession对象不可以命名为request。
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<body>
<%
HttpSession mysession=request.getSession(true);
out.println(mysession.getId());
out.println("<br>");
out.println(session.getId());
%>
</body>
</html>
3)使用pageContext对象的getSession()方法
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<body>
<%
HttpSession mysession=request.getSession();
HttpSession mysession2=pageContext.getSession();
out.println(mysession.getId()+"<br>");
out.println(session.getId()+"<br>");
out.println(mysession2.getId()+"<br>");
%>
</body>
</html>
三.session的主要方法
1)getValue(String name)
有些类似于getAttribute(),可以通过putValue()存储变量的值,removeValue()删除变量。
<%
String username=(String)session.getValueNames("username");
Vector vector=(Vector)session.getValue("vector");
%>
2)getValueNames()
该方法可以返回和当前session绑定在一起的参数或者Java对象的名字,该方法返回的是一个字符串数组。
3)getCreationName()
该方法可以返回当前session对象创建的时间单位以毫秒作为单位,从1970年1月1日开始。
4)getID()
系统每生成一个session,都会赋予其一个ID,通过ID来鉴定不同的用户。
5)getLastAccessedTime()
该方法返回当前session最后一次被操作的时间。
6)getMaxInactiveInterval()
该方法可以获得当前的session对象的最大休眠时间。
7)setMaxInactiveInterval()
设定最大的休眠时间,通常和getMaxInactiveInterval()搭配使用。
8)removeValue(String name)
将某个参数或者Java对象和session解除绑定。
9)invaliate()
清除当前的session对象,将所有的参数或者Java对象与session解除绑定。
例子:
SessionExam1.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<body>
<p>
<h1>Where will your balance take you?</h1>
<br>
<%--Get parameters from the request object--%>
<% String firstName = request.getParameter("fName");%>
<% String accountBalance1 = request.getParameter("bal");%>
<%--Convert the bal parameter from String to double--%>
<% double accountBalance2 = Double.valueOf(accountBalance1).doubleValue();%>
<%--
Write input parameters to the session object
The session object cannot store a double value.
You must first convert it to a Double.
--%>
<%
session.putValue("userName", firstName);
Double tempAccountBalance = new Double(accountBalance2);
session.putValue("userBalance", tempAccountBalance);
%>
<%--Output results--%>
Balance for <%=firstName%>: <%=accountBalance2%><br>
<br><br>
Would you link to <A href="SessionExam2.jsp" mce_href="SessionExam2.jsp">invest your money</a>?
<br><br>
Do you need a <a href=" SessionExam3.jsp" mce_href=" SessionExam3.jsp">job</a>
</body>
</html>
SessionExam2.jsp
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<body>
<%--Get name from the session object--%>
<%--
The SessionExam2.jsp page examines the client`s name and balance from the
session object and either offers investment options or prompts the client to get a job!
--%>
<%String fName=(String)session.getValue("userName");%>
<h2>Hi <%=fName%></h2>
<%--Get balance and convert to double--%>
<%
Double tempBal=(Double)session.getValue("userBalance");
double accountBalance=tempBal.doubleValue();
%>
<%--Got enough money to invest?--%>
<%
if(accountBalance>100.0)
{%>
Your balance of $<%= accountBalance %> is sufficient for investing.
We offer a number of investment opportunities, including: <br>
<li>Bonds</li>
<li>CDs</li>
<li>Mutual funds</li>
<%}%>
<%--Is Balance too low?--%>
<%
if(accountBalance<=100.0)
{
%>
Your balance is too low for investing. It looks like you need a
<a href="SessionExam3.jsp" mce_href="SessionExam3.jsp">job</a>.
<%
}
%>
</body>
</html>
SessionExam3.jsp
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<body>
<%--
The SessionExam3.jsp page greets the user using the name passed
in the session object and lists available jobs:
--%>
<%--Get parameters from the session object--%>
<%String fName=(String)session.getValue("userName");%>
<h2>Hi <%=fName%></h2>
<h2>Available positions include:</h2>
Software Engineer<br>
QA<br>
Technical Writer<br>
</body>
</html>