url 重写来实现会话管理

如果浏览器不支持 cookies,或将浏览器设置为不接受 cookies,我们能通过 url 重写来实现会话管理。

  实质上 url 重写是通过向 url 连接添加参数,并把 session id 作为值包含在连接中。然而,为使这生效,你需要为你的 servlet 响应部分的每个连接添加 session id 。 把 session id 加到一个连接能使用一对方法来简化:response.encodeurl()

使 url 包含 session id,如果你需要使用重定向,能使用 response.encoderedirecturl () 来对 url 进行编码。

encodeurl () 及 encoderedirectedurl () 方法首先判断 cookies 是否被浏览器 支持;如果支持,则参数 url 被原样返回,session id 将通过 cookies 来维持。

下 面有个例子,两个 jsp 文件:hello1.jsp 和 hello2.jsp,及他们之间的影响 。我们在 hello1.jsp 中简单的创建一个会话,并在 session 中存储一个对象实例。接着用户能点击页面的连接到达 hello2.jsp。在 hello2.jsp 中,我们从 session 中获取原先放置的对象并显示他的内容。注意,我们在 hello1.jsp 中调用了 encodeurl() 方法来获得 hello2.jsp 的链接,使得在浏览器停用 cookies 的情况下,session id 自动添加到 url,hello2.jsp 仍能得到 session 对象。

  首先在启用 cookies 的情况下运行。然后关闭对 cookie 的支持,重启浏览器,再运行一次。每次你都能看到会话管理在起作用,并能在页之间传递信息。

注意,如果你想让这个例子能在关闭了 cookies 的浏览器中工作,你的 jsp 引擎必须支持 url 重写。

hello1.jsp

<%@ page session="true" %>

<%

integer num = new integer(100);

session.putvalue("num",num);

string url =response.encodeurl("hello2.jsp");

%>

<a href=<%=url%>>hello2.jsp</a>

hello2.jsp

<%@ page session="true" %>

<%

integer i= (integer)session.getvalue("num");

out.println("num value in session is "+i.intvalue());

%>

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值