JavaWeb学习-保存作用域
保存作用域:page(页面级别)、request(一次请求响应范围)、session(一次会话范围)、application(整个应用程序范围)
(1)request:一次请求响应范围
//演示request保存作用域(demo01和demo02)
@WebServlet("/demo01")
public class demo01Servlet extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1. 向request保存作用域保存数据
request.setAttribute("uname","小王");
//2. 客户端重定向
response.sendRedirect("demo02");
}
}
@WebServlet("/demo02")
public class demo02Servlet extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1. 获取request保存作用域保存的数据,key为uname
Object uname = request.getAttribute("uname");
System.out.println("uname = " + uname);
}
}
//控制台:uname=null
//使用服务器端转发
request.getRequestDispatcher("demo02").forward(request,response);
//控制台:uname=小王
(2)session:一次会话范围有效
//演示session保存作用域(demo03和demo04)
@WebServlet("/demo03")
public class demo03Servlet extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1. 向session保存作用域保存数据
/*HttpSession session = request.getSession();
session.setAttribute("uname","小李");*/
request.getSession().setAttribute("uname","小李");
//2. 客户端重定向
response.sendRedirect("demo04");
//3.服务器端转发
// request.getRequestDispatcher("demo04").forward(request,response);
}
}
@WebServlet("/demo04")
public class demo04Servlet extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1. 获取session保存作用域保存的数据,key为uname
/* HttpSession session = request.getSession();
session.getAttribute("uname");*/
Object uname = request.getSession().getAttribute("uname");
System.out.println("uname = " + uname);
}
}
//无论是使用客户端重定向,还是服务器端转发,客户端都可以获得session作用域保存的数据
(3)application:一次应用程序范围有效
//演示application保存作用域(demo05和demo06)
@WebServlet("/demo05")
public class demo05Servlet extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1. 向application保存作用域保存数据
// ServletContext:servlet上下文
ServletContext application = request.getServletContext();
application.setAttribute("uname","小赵");
//2. 客户端重定向
response.sendRedirect("demo06");
//3.服务器端转发
//request.getRequestDispatcher("demo02").forward(request,response);
}
}
@WebServlet("/demo06")
public class demo06Servlet extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1. 获取application保存作用域保存的数据,key为uname
Object uname = request.getServletContext().getAttribute("uname");
System.out.println("uname = " + uname);
}
}
//控制台:小赵
小结:
1)request作用域保存的数据,只能实现内部跳转,不能重定向。
2)session作用域保存的数据,在同一个客户端可以访问,当浏览器客户端关闭后再进入后就不能获取(=null)。
3)应用程序级别,只要有一个人往里面保存了数据,其他人都可以访问到,换客户端浏览器,也可以访问application保存作用域保存的数据,直到该应用程序停止(tomcat停止)。
相对路径和绝对路径
html中base标签,thymeleaf中@{}相当于http://localhost:8080/pro10 (link中css前添加了/)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)