在JSP中使用会话session


本章将学习在JSP中如何使用会话对象session来处理会话。

HTTP协议是无状态的。这意味着客户端(web浏览器)和web服务器之间没有永久连接。
当客户端从web服务器请求页面时,它将打开连接,检索页面并关闭连接。
Web服务器不知道客户端会发生什么。
如果从客户端发出另一个请求,web服务器不会想到将新连接与之前已建立的连接联系到一起。

为了解决HTTP协议的无状态性这个问题,JSP提供了一个隐式会话对象,它就是HTTP session对象。
session对象位于服务器端,因此您可以在session中保存有关客户端和其他数据的任意数据,之在不同的请求中,可以获取保存的数据进行处理。JSP通过单个key把数据存储在服务端的session对象中。

session对象有三个最常用,最重要的方法:

1
2
3
4
5
6
7
8
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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<%@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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<%@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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<%@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>

我们通过sessiongetAttribute()方法来获取并显示在page1.jsp中提交的数据。


原文链接:https://codingdict.com/