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");