- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
会话跟踪技术(上) 课程内容 URL重写 隐藏表单域 会话跟踪 会话跟踪是一种灵活、轻便的机制,它使Web上的状态编程变为可能。 HTTP是一种无状态协议,每当用户发出请求时,服务器就会做出响应,客户端与服务器之间的联系是离散的、非连续的。 当用户在同一网站的多个页面之间转换时,根本无法确定是否是同一个客户,会话跟踪技术就可以解决这个问题。 当一个客户在多个页面间切换时,服务器会保存该用户的信息。 有四种方法可以实现会话跟踪技术: URL重写 隐藏表单域 Cookie Session URL重写 URL重写 URL重写就是在客户端URL地址后加一串参数来标识会话,服务器就会根据这个标识和它存储的数据关联起来。例如: http://localhost:8080/user.jsp?username=admin 在URL中以“?”作为标识符,后面紧跟参数名“username”,然后给“username”赋值为“admin”。 “百度”搜索引擎的URL重写 当我们在浏览器输入“”时,点击回车按钮,我们看到百度的主页。如图所示: 实现URL重写 URL重写在客户端浏览器不支持Cookie的情况下使用的 它是客户端浏览器请求服务器时,URL地址后面加上类似于 “SESSIONID=***”形式的参数,服务器端通过获取SESSIONID关键字来获取会话值。 当然这个SESSIONID参数不是服务器端添加的,而是需要手动来实现。 在程序第一次访问服务器端时,服务端并不能确认客户端浏览器是否支持Cookie。因此,当服务器第一次发出请求时,服务端会默认采用URL重写,也就是将SESSIONID写到URL地址中传递。 核心代码:String SessionId=request.getRequestedSessionId(); 当客户端发送请求后,服务器会根据提交给客户端浏览器的信息自动检查客户端是否启用了Cookie,如果启用,将不再进行URL重写。如果没有,则继续使用URL重写。 通过response对象的encodeURL(String url)方法可以进行URL重写。 encodeURL public String encodeURL(String url); 对包含SessionID的URL进行编码。如果不需要编码,就直接返回这个URL。 Servlet引擎必须提供URL编码方法,因为在有些情况下,我们将不得不重写URL。例如,在响应对应的请求中包含一个有效的Session,但是这个Session不能被非URL的(例如Cookie)的手段来维持。 所有提供给Servlet的URL都应通过这个方法运行,这样才能确保会话跟踪能够在所有浏览器中正常运行。 encodeRedirectURL public String encodeRedirectURL(String url); 对sendRedirect()方法使用的指定URL进行编码。如果不需要编码,就直接返回这个URL。 之所以提供这个附加的编码方法,是因为在请求转发的情况下,决定是否对URL进行编码的规则和一般情况有所不同。 所给的URL必须是一个绝对URL。 相对URL不能被接收,会抛出一个IllegalArgumentException异常。 所有提供给sendRedirect()方法的URL都应通过这个方法运行,这样才能确保会话跟踪能够在所有浏览器中正常运行。 示例 下面我们结合这两种方法,做一个URL重写的例子。主要实现从一个JSP页面提交数据给Servlet,Servlet接收到参数后经过URL重写并重新定位到以前的JSP页面,此时JSP接收到Servlet返回的参数并打印出来。 first.jsp代码如下: %@ page contentType=text/html; charset=GBK % body bgcolor=#ffffff h1 实现URL重写 /h1 % String str=request.getParameter(test); if(str!=null){ byte[] by=str.getBytes(ISO-8859-1); String ss=new String(by); out.println(ss); } % form action=firstservlet input type=text value= name=test/ input type=submit value=ok/ /form /body FirstServlet.java的关键代码 public void doGet(HttpServletRequest request, H
您可能关注的文档
最近下载
- 城镇污水处理厂工艺全套推荐.ppt VIP
- 05J927-1汽车库建筑构造图集.pdf VIP
- 实验室生物安全生物安全实验室操作规范(微生物.pptx VIP
- 2025年秋季开学全体教师大会上,校长讲话:教育从来不靠一个人燃烧,而靠一群人沉下去!.docx
- 中小学校服验收记录单(参考模版).doc VIP
- DLT5418-2009脱硫吸收塔施工及验收规范.pdf VIP
- 2020新译林版高中英语选择性必修四Unit2 Integratedskills课件.pptx VIP
- 医院信息科笔试、面试题(附答案).docx VIP
- 2020译林版新教材高中英语选择性必修四第二单元知识点复习课件.pptx VIP
- 详解《工贸企业重大事故隐患判定标准》2023版.pptx VIP
文档评论(0)