欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JSP中page,request,session,application四个域对象区别

程序员文章站 2022-06-25 19:21:04
...

1、区别:

1.page指当前页面有效。只在当前这个jsp页面里有效
2.request 指在一次请求的全过程中有效,即从http请求到服务器处理结束,返回响应的整个过程,存放在HttpServletRequest对象中。只要不进行下一个请求就都有效
3.Session是用户全局变量,在整个会话期间都有效。只要浏览器不关闭就一直有效(或者直到用户一直未活动导致会话过期,默认session过期时间为30分钟,或调用HttpSession的invalidate()方法)。存放在HttpSession对象中
4.application是程序全局变量,对每个用户每个页面都有效。存放在ServletContext对象中。它的存活时间是最长的,如果不进行手工删除,它们就一直可以使用

总结:当数据只需要在下一个forward(下一个跳转页面)有用时,用request就够了; 若数据不只是在下一个forward有用时,就用session。上下文,环境信息之类的,用application。

2 举例说明

1 page

参考详解:https://jingyan.baidu.com/article/3aed632ed033d1701080910d.html
总之只在当前的页面有效,别的页面一律无效

2 request

jsp如何将数据放在把jsp中的输入标签放到form标签里,然后体检form表单,自动就到request
后端如何将数据放在request中呢

 request.setAttribute("test", "hello");

前端页面如何取出放在request中的数据呢

  1,el表达式:<% String test = request.getAttribute("test")%>
  2,jstl:${test }或${requestScope.test}因为直接去是默认request对象中的数据:requestScope

放在request中的值在后端中如何取出呢?

request.getAttribute("test");

3 session

可以直接在jsp页面中将我们要保留的值放入session域中

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<form method=POST action="Session.jsp">
请输入用户名: <input type=text name="name"> <input type=submit
value="提交信息">
</form>
<!-- session设置值 -->
<%
String name = request.getParameter("name");


session.setAttribute("name", name);
String names = (String) session.getAttribute("name");
%>
您的用户名是:<%=names%>
</body>
</html>

这时候这个name的值你就拿到了并放在了session中,便可以操作这个session回话了

后端如何将数据放入session中

public String  login(String name,HttpServletRequest request,HttpServletResponse response,String remember)
{
request.getSession().setAttribute("name", name);
return ''login"
}

放在session中的值在前端中如何取出呢?

 1,el表达式:<%String test = request.getSession().getAttribute("name") %>
 2,jstl:${sessionScope.name } 

放在session中的值在后端中如何取出呢?

request.getSession().getAttribute("name");