session对象
来源:互联网 发布:淘宝空包代发哪个好 编辑:程序博客网 时间:2024/05/16 11:03
1、譬如,如果用户没有登陆,则无论此用户访问了那几个页面都会跳转回登陆页
2、购物车张三买的东西,不能放到李四的购物车
在服务器上,通过session来区分每一个上网用户
session对象属于javax.servlet.http.HttpSession接口的实例化对象
session属于Http协议范畴之内的对象,所以只有唯一的一个http包下有此接口,没有任何继承关系。
用户只要一连接到服务器,则立刻分配一个sessionId给用户
Session的主要方法:
1、服务器上通过session来分别不同的用户
Session ID:任何连到服务器上的用户,服务器都会为
分配唯一的一个不会重复的session ID
sessionID是由服务器统一管理的,人为不能控制
方法:session.getId()
长度为:32
2、判断是否是新的session
public boolean isNew()
判断当前的session是否是新建立的session
3、session的属性设置
设置属性:
public void setAttribute(String name,
Object value)
取得属性:
public Object getAttribute(String name)
删除属性:
public void removeAttribute(String name)
范例:用户输入姓名为mldn,密码为lxh,则表示登陆成功,成功之后可以浏览welcome.jsp页面
为了说明问题:建立两个页面:
· login.jsp:表单、接收、判断
· welcome.jsp:欢迎页,要求用户必须先登陆之后,才能访问,否则不能访问
login.jsp
<%@page contentType="text/html;charset=gb2312"%>
<form action="login.jsp" method="post">
用户名:<input type="text" name="uname"><br>
密码:<input type="text" name="upass"><br>
<input type="submit" value="登陆">
</form>
<%
// 判断是否有请求内容
// 在自提交的页面中,必须对程序第一次运行做出处理
if(request.getParameter("uname")!=null&&request.getParameter("upass")!=null)
{
// 第一次的时候,并不能取得请求的参数
String name = request.getParameter("uname") ;
String password = request.getParameter("upass") ;
// System.out.println(name) ;
// System.out.println(password) ;
if("mldn".equals(name)&&"lxh".equals(password))
{
// 表示登陆成功
// 通过flag属性判断用户是否已经登陆
session.setAttribute("flag","ok") ;
// 跳转到welcome.jsp
response.sendRedirect("welcome.jsp") ;
}
else
{
// 登陆失败,打印错误
%>
<h3>登陆失败!!!</h3>
<%
}
}
%>
----------------------------------------------
welcome.jsp
<%@page contentType="text/html;charset=gb2312"%>
<%--
用户必须先登陆之后,才能访问此页面
如果用户没有登陆,则提示用户回去重新登陆
--%>
<%
if(session.getAttribute("flag")!=null)
{
// session被设置过,正常登陆过
%>
<h1>欢迎光临本页!!!</h1>
<%
}
else
{
// 两秒后跳转到login.jsp页面之中
response.setHeader("refresh","2;URL=login.jsp") ;
%>
<h1>您还未登陆,请先登陆!!!</h1>
<%
}
%>
☆ 通过session能够对用户是否登陆做出验证
注意:实际上与上述三个操作属性的方法类似的还有以下三个方法:
· public void putValue(String name, Object value) setAttribute
· public Object getValue(String name) getAttribute
· public void removeValue(String name) removeAttribute
此三个方法已过时,不建议再使用
4、用户注销:让用户的session失效
如果session失效,则在session所保留的全部操作也会消失
public void invalidate():使session失效 (手工)
如果session长时间不被使用,则也会自动失效
5、得到session的创建时间
public long getCreationTime()
此方法返回long类型,通过Date类可以取得一个完整的时间
6、取得用户最后一次操作的时间
public long getLastAccessedTime()
范例:需要求出用户在线时间:
以下公式:最后一次操作时间-创建时间
session将信息保存在服务器上,而cookie保存在客户端上
session比cookie更安全,session比cookie更占用资源
开发的原则:session要尽量少使用 —— 尽量少向session中保存信息
session使用了cookie的机制,如果cookie被禁用,则session也无法使用
- Session对象
- session对象
- Session 对象
- Session对象
- Session对象
- Session对象
- Session对象
- Session 对象
- Session对象
- session对象
- Session对象
- session对象
- session对象
- session对象
- session对象
- session对象
- session对象
- session对象
- spring
- SmartUpload上传
- Solaris最基本的命令
- MASM32编程演示程序在窗口模式和全屏模式间切换
- 用一个HelloWorld例子手把手教会你使用FLEX BlazeDS
- session对象
- servlet
- 今天在开发板上成功运行了gdbserver
- servlet续
- RedHat linux AS 4 + Apache2.2 + Tomcat5.5.12
- response
- 架设◆ 惊天动地◆ 数据库、服务端、虚拟机、Linux、等方面疑问全面解答◆
- request.getSession().getAttribute("a");为什么要这样写呢?
- request.getParameter()和request.getAttribute()的区别