JavaWeb:Session的使用

什么是Session?

服务器端维护用户状态的一种状态管理技术。
浏览器访问服务器时,服务器会创建一个对象(session对象),同时,还会生成一个标识该对象的唯一的字符串(sessionId),服务器在默认情况下,使用cookie机制将sessionId发送给浏览器。浏览器下次访问服务器时,会将sessionId携带给服务器,服务器会使用sessionId查找对应的session对象。
通过这种方式,来维护用户的状态。负责保存“同一客户端一次会话过程中”的一些信息。

Session创建

HttpSession request.getSession(boolean flag);
  • flag为 true:服务器查看客户端请求中是否有sessionId,如果没有,则创建一个session对象,返回该对象的引用。如果有,要查看对应的session对象是否存在,如果存在,则返回该对象的引用,若不存在,则创建一个session对象
  • flag为 false:服务器查看请求中是否有sessionId, 如果没有,返回null。如果有,要查看对应的session对象是否存在,如果存在,则返回该对象的引用,若不存在,返回null
  • getSession()中没有参数等价于getSession(true)

示例:

HttpSesssion sess1 = request.getSession();
HttpSesssion sess2 = request.getSession(false);

注意:jsp页面默认情况下,它是<%@ page session=“true”%>的,即默认情况下,访问jsp,一定会得到session对象。

常用方法

String session.getId()
获取SessionId

session.setAttribute(String name,Object obj);
绑定某个对象

Object session.getAttribute(String name)
显示某个用户的访问次数,如果找不到返回null

session.setMaxInActiveInterval(int seconds)
设置最大不活动时间

设置默认超时限制

针对整个服务器或者某个特定的应用设置超时限制:
web.xml

<session-config>
     <session-timeout>30</session-timeout>
</session-config>

Session验证

登录成功以后,向session中写入数据: session.setAttribute(数据);
在需要受保护的页面添加如下代码:

session.getAttribute(数据);

如果为空,说明用户登录失败,不能访问,一般会重定向到登录页面。

<%@include file=""%>

jsp引擎在将.jsp文件转换成.java文件时,将对应的文件的内容插入到指令所在的位置。

验证码

使用Servlet生成图片
使用java.awt.*的相应类生成一个图像 image= ;
压缩图像成jpg格式:

response.setContentType("image/jpeg");

输出:

OutputStream out = response.getOutputStream();

(2)比较session中存放的checkcode与客户端传送给来的checkcode

用户禁止cookie,如何实现sessionId的跟踪

用户禁止cookie,还可以使用session机制:可以使用URL重写机制来解决。
(1)什么是URL重写:通过修改URL地址,在其后添加sessionId,来实现sessionId的跟踪。

(2)URL重写注意事项:即在访问某个需要session机制支持的组件时,不要直接在浏览器地址栏输入地址,而通过服务器生成的URL地址来访问。

(3)方法

a,response.encodeURL(url);// 在链接、表单提交时使用
b,response.encodeRedirectURL(url);//在重定向时使用

session机制的优缺点

  • 优点:相对于cookie机制,session机制安全。存放的数据可以是对象,存放的数据量也更大。

  • 缺点:所有的数据都存放在服务器端,服务器的压力比较大。一般会采用激活、钝化机制,将session中的数据临时保存到文件或者数据库。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晚风也很浪漫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值