小职
2017-10-19
来源 :网络
阅读 1273
评论 0
摘要:JAVA编程技巧之JavaWeb利用URL重写HttpSession。Servlet规范中引入了一种补充的会话管理机制,它允许不支持Cookie的浏览器也可以与WEB服务器保持连续的会话。这种补充机制要求在响应消息的实体内容中必须包含下一次请求的超链接,并将会话标识号作为超链接的URL地址的一个特殊参数。
介绍
JAVA编程技巧之JavaWeb利用URL重写HttpSession。Servlet规范中引入了一种补充的会话管理机制,它允许不支持Cookie的浏览器也可以与WEB服务器保持连续的会话。这种补充机制要求在响应消息的实体内容中必须包含下一次请求的超链接,并将会话标识号作为超链接的URL地址的一个特殊参数。
将会话标识号以参数形式附加在超链接的URL地址后面的技术称为URL重写。如果在浏览器不支持Cookie或者关闭了Cookie功能的情况下,WEB服务器还要能够与浏览器实现有状态的会话,就必须对所有可能被客户端访问的请求路径(包括超链接、form表单的action属性设置和重定向的URL)进行URL重写。
HttpServletResponse接口中定义了两个用于完成URL重写方法:
encodeURL方法
encodeRedirectURL方法
测试代码
index.jsp
?
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "//www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<fieldset>
<marquee>
会话ID :
<%= session.getId() %>
<br /> 是新会话? :
<%= session.isNew() %>
<br /> 最大内部闲置:
<%= session.getMaxInactiveInterval() %>
<br /> 创建时间 :
<%= session.getCreationTime() %>
<br /> 最后一次访问时间 :
<%= session.getLastAccessedTime() %>
</marquee>
<%
//2.获取重新登录的username
Object username = session.getAttribute("username") == null ? "" : session.getAttribute("username");
%>
<!-- url重写HttpSession:jsessionid回去以URL一部分的形式附带在url上 -->
<!-- hello.jsp;jsessionid=22A10B2F1E451F767E5D4020A374B7FE -->
<form action="<%=response.encodeUrl("hello.jsp") %>" method="post">
<table>
<tr>
<td><label for="userID">用户名:</label></td>
<!-- 已经登录过,就显示出来 -->
<td><input type="text" name="username" value="<%= username%>"
id="userID" /></td>
</tr>
<tr>
<td></td>
<td><input type="submit" value="登录" /></td>
</tr>
</table>
</form>
</fieldset>
</body>
</html>
hello.jsp
?
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "//www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<fieldset>
<marquee behavior="alternate">
会话ID : <%= session.getId() %>
<br />
是新会话? : <%= session.isNew() %>
<br />
最大内部闲置: <%= session.getMaxInactiveInterval() %>
<br />
创建时间 : <%= session.getCreationTime() %>
<br />
最后一次访问时间 : <%= session.getLastAccessedTime() %>
</marquee>
<details>
<summary>你好!</summary>
<%= request.getParameter("username") %>
</details>
<%
//1.设置会话的属性值,想在重新登录的页面能直接显示上一次的登录名
session.setAttribute("username", request.getParameter("username"));
%>
<a href="<%=response.encodeUrl("index.jsp")%>"> 重新登录 </a>
<a href="<%= response.encodeUrl("logout.jsp")%>">注销</a>
</fieldset>
</body>
</html>
logout.jsp
?
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "//www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<fieldset>
<marquee behavior="alternate">
会话ID : <%= session.getId() %>
<br />
是新会话? : <%= session.isNew() %>
<br />
最大内部闲置: <%= session.getMaxInactiveInterval() %>
<br />
创建时间 : <%= session.getCreationTime() %>
<br />
最后一次访问时间 : <%= session.getLastAccessedTime() %>
</marquee>
<details>
<summary>再见</summary>
<%= session.getAttribute("username") %>
</details>
<%
//销毁session
session.invalidate();
%>
</fieldset>
</body>
</html>
本文由职坐标整理并发布,希望对同学们学习Java的知识有所帮助。了解更多详情请关注职坐标Java频道!
喜欢 | 1
不喜欢 | 0
您输入的评论内容中包含违禁敏感词
我知道了

请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号