在实际的开发中,一个网页经常是要基于另一个网页的,这就要求这两个网 页中有信息交流的。但是,HTTP是无状态协议,无法为我们保存信息。比如我们在登录页面中登录了,在以后的使用中必须让服务器知道我们已经登录了,比如 在后面操作中要要根据用户名来查询用户的相关信息,这是就必须想办法记住这个用户的用户名。在这节中我们将重点讲解如何解决这个问题。
让客户端记住数据并返回给web服务器主要有4种技术:
隐藏域
HTML窗体支持HIDDEN类型的输入元素,隐藏域域HTTP请求中的其他窗体参数一起被发送到Web服务器,但他们没有任何可视表示。隐藏域的语法如下:
XML/HTML代码
下面我们通过下面例子了解下隐藏域的用法,新建一个JSP页面命名为TestHidden:
XML/HTML代码
在建一个JSP页面命名为Result.jsp
XML/HTML代码
当我们调用TestHidden.jsp页面单击提交之后就会在页面显示出welcome to jcourse字样。
URL重写
URL重写比较简单,只是在URL后面加上所要传递的信息即可,如上面的例子我们就可以在所要提交到的页面的URL后面加上
?message=“welcom to jcourse”即可。
cookie
我们先来看下面这个例子,看看是如何使用cookie的。
XML/HTML代码
然后再修改刚才编写的Result.jsp如下
XML/HTML代码
name:
value:
此时我们会在页面中看到下面信息:
name:message
value:welcome to jcourse
name:JSESSIONID
value:5ADDE51EEDB7A42D98E769967BAD0D94
可能有的人会对这个结果感到惊讶,不用着急我们接下来分析下这个代码。cookie.setMaxAge(60*60*24);这段代码是设置 cookie的有效时间,我们将其设为一天。response.sendRedirect("Result.jsp");这个语句的作用是直接跳转语句到 Result.jsp页面中。那么输出结果中名字为JSESSIONID是什么呢?原来我们在创建一个JSP页面时,隐含对象Session也被添加到了 cookie中了,如果我们在page伪指令中设置session为false,这个值就会消失了,读者可以自行尝试。
会话API
前面我们已经介绍几种会话跟踪的方法,接下来我们来介绍一种更高层的方法:Javax.servlet.http.HttpSession API.
HttpSession像和Map差不多的接口,能够根据名字存储和检索对象。可通过 HttpServletRequest.getSession()创建一个会话,并保留它直至超时或参与一个会话的Servlet关闭。我们先通过下面这 个例子对session有个初步的了解:
XML/HTML代码
Result.jsp:
XML/HTML代码
同样我们还会在页面中看到welcome to jCourse字样。
Java数据结构和算法_程序员必修课_面试必备https://www.bilibili.com/video/BV1kL4y1u7nj/