在JSP中使用会话session
时间:2018-11-15 12:51:44 来源:igfitidea点击:
本章将学习在JSP中如何使用会话对象session
来处理会话。
HTTP协议是无状态的。这意味着客户端(web浏览器)和web服务器之间没有永久连接。
当客户端从web服务器请求页面时,它将打开连接,检索页面并关闭连接。
Web服务器不知道客户端会发生什么。
如果从客户端发出另一个请求,web服务器不会想到将新连接与之前已建立的连接联系到一起。
为了解决HTTP协议的无状态性这个问题,JSP提供了一个隐式会话对象,它就是HTTP session对象。
session对象位于服务器端,因此您可以在session中保存有关客户端和其他数据的任意数据,之在不同的请求中,可以获取保存的数据进行处理。JSP通过单个key把数据存储在服务端的session对象中。
session对象有三个最常用,最重要的方法:
public void setAttribute(String name, Object value) throws IllegalStateException public Object getAttribute(String name) throws IllegalStateException public void removeAttribute(String name) throws IllegalStateException
使用session的示例
让我们看一个如何使用session对象的示例。
在这例中,我们有三个页面:
页面1:从用户收集数据,将表单提交到第二个页面,
页面2:用于在会话中存储数据。
页面3:从会话中获取数据并显示。
page1.jsp
<%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <title>JSP session页面1</title> </head> <body> <form method="post" action="page2.jsp"> <table> <tr> <td>名字</td> <td><input type="text" name="name" /></td> </tr> <tr> <td>评论</td> <td><textarea name="comments" cols="30" rows="5"></textarea></td> </tr> <tr> <td colspan="2"><input type="submit" value="提交" /></td> </tr> </table> </form> </body> </html>
在上面的表单中,当用户输入信息后,单击提交
按钮,数据将发送给页面page2.jsp。
page2.jsp
<%@page contentType="text/html" pageEncoding="UTF-8"%> <% String name = request.getParameter("name"); String comments = request.getParameter("comments"); // 保存数据到session中 session.setAttribute("name", name); session.setAttribute("comments", comments); %> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JSP session页面2</title> </head> <body> <%-- 重定向到页面 page3.jsp --%> <jsp:forward page="page3.jsp" /> </body> </html>
在page2.jsp页面中,我们将所有提交的数据保存到session对象中,并将请求转发到另一个名为page3.jsp的页面。
page3.jsp
<%@page contentType="text/html" pageEncoding="UTF-8"%> <html> <head> <title>JSP session页面3</title> </head> <body> <h1>显示session对象中的数据</h1> <table> <tr> <td>名称</td> <td><%= session.getAttribute("name")%></td> </tr> <tr> <td>评论</td> <td><%= session.getAttribute("comments")%></td> </tr> </table> </body> </html>
我们通过session
的getAttribute()
方法来获取并显示在page1.jsp中提交的数据。