本章将学习在JSP中如何使用会话对象session来处理会话。
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
Object getAttribute(String name)
removeAttribute(String name)
让我们看一个如何使用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>
<td>评论</td>
<td><textarea name=
"comments"
cols=
"30"
rows=
"5"
></textarea></td>
<td colspan=
"2"
><input type=
"submit"
value=
"提交"
</table>
</form>
</body>
</html>
在上面的表单中,当用户输入信息后,单击提交按钮,数据将发送给页面page2.jsp。
提交
page2.jsp
String name = request.getParameter(
);
String comments = request.getParameter(
// 保存数据到session中
session.setAttribute(
, name);
, comments);
<meta http-equiv=
"Content-Type"
content=
"text/html; charset=UTF-8"
2
<%-- 重定向到页面 page3.jsp --%>
<jsp:forward page=
"page3.jsp"
/>
在page2.jsp页面中,我们将所有提交的数据保存到session对象中,并将请求转发到另一个名为page3.jsp的页面。
page3.jsp
3
<h1>显示session对象中的数据</h1>
<td>名称</td>
<td><%= session.getAttribute(
)%></td>
我们通过session的getAttribute()方法来获取并显示在page1.jsp中提交的数据。
getAttribute()
原文链接:https://codingdict.com/