马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
在Web开辟中,页面间的数据转达是一个常见的需求。本文将先容四种常见的页面间对象转达方法:request、session、application(在Servlet中通常称为ServletContext)、以及cookie。
1. 使用request对象转达
request对象代表了客户端的哀求信息,用于在哀求处理处罚过程中转达数据。
特点:
- 数据只在一次哀求中有效。
- 实用于数据量较小且不必要跨哀求保持的场景。
示例:
Servlet中设置数据:
- request.setAttribute("message", "Hello, World!");
- RequestDispatcher dispatcher = request.getRequestDispatcher("/nextPage.jsp");
- dispatcher.forward(request, response);
复制代码 在JSP页面中获取数据:
大概:
- <% String message = (String) request.getAttribute("message"); %>
- <p><%= message %></p>
复制代码 2. 使用session对象转达
session对象用于跟踪用户的会话信息,允许在差别页面哀求之间共享数据。
特点:
- 数据可以跨多个哀求保持,直到会话竣事(如用户关闭欣赏器或会话超时)。
- 实用于必要保持用户状态信息的场景。
- 可以通过setAttribute和getAttribute方法转达和获取数据。
示例:
在Servlet中设置数据:
- session.setAttribute("user", userObject);
复制代码 在JSP页面中获取数据:
- <% User user = (User) session.getAttribute("user"); %>
- <p>Welcome, ${user.name}!</p>
复制代码 3. 使用application对象转达
application对象代表了Servlet容器的上下文(ServletContext),它在整个Web应用中是共享的。这意味着全部用户、全部哀求都可以访问application对象中的数据。
特点:
- 数据在整个Web应用中全局有效,直到服务器关闭或应用重启。
- 实用于必要跨用户共享的数据,如设置信息、统计信息等。
- 可以通过setAttribute和getAttribute方法转达和获取数据。
示例:
在Servlet中设置数据:
- ServletContext context = getServletContext();
- context.setAttribute("counter", 123);
复制代码 在JSP页面中获取数据:
- <% Object counter = application.getAttribute("counter"); %>
- <p>Counter: <%= counter %></p>
复制代码 4. 使用cookie转达
cookie是存储在客户端的一段文本信息,它可以在客户端和服务器之间转达。通过cookie,可以在用户的欣赏器上存储少量数据,并在后续的哀求中发送给服务器。
特点:
- 数据存储在客户端,每次哀求都会发送给服务器(除非设置了HttpOnly或Secure等属性)。
- 实用于必要跨哀求但不必要跨会话保持少量数据的场景。
- 安全性较低,轻易被用户篡改。
示例:
在Servlet中设置cookie:
- Cookie cookie = new Cookie("username", "john");
- cookie.setMaxAge(60*60*24); // 设置有效期为1天
- response.addCookie(cookie);
复制代码 在客户端(欣赏器)中罗致cookie,并在后续哀求中自动发送给服务器。
|