1.分类
原始情况下,保存作用域可以认为有四个:
page(页面级别,现在几乎不用)
request(一次请求响应范围内)
session(一次会话范围内)
application(整个应用程序范围)
2.request范围示例:
在此范围内,如果使用sendRedirect将取不到数据,因为不是同一请求了
getRequestDispatcher则可以
package com.ym.demo;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* @author ym
* @create 2022-02-04 13:45
* @description 测试request保存作用域
*/
@WebServlet("/demo01")
public class Demo01 extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//1.保存数据
req.setAttribute("uname", "zhangfei");
// //2.重定向方法 -->取不到数据
// resp.sendRedirect("/demo02");
//3.服务器内部转发方法
req.getRequestDispatcher("demo02").forward(req,resp);
}
}
package com.ym.demo;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* @author ym
* @create 2022-02-04 13:47
* @description
*/
@WebServlet("/demo02")
public class Demo02 extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
Object uname = req.getAttribute("uname");
System.out.println("uname-->" + uname);
}
}
3.application范围
package com.ym.demo;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* @author ym
* @create 2022-02-04 13:45
* @description 测试application保存作用域
*/
@WebServlet("/demo03")
public class Demo03 extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
ServletContext application = req.getServletContext();
//1.保存数据
application.setAttribute("uname", "zhangfei");
// //2.重定向方法
resp.sendRedirect("/demo04");
//3.服务器内部转发方法
// req.getRequestDispatcher("demo04").forward(req,resp);
}
}
package com.ym.demo;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* @author ym
* @create 2022-02-04 13:47
* @description
*/
@WebServlet("/demo04")
public class Demo04 extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
ServletContext servletContext = req.getServletContext();
Object uname = servletContext.getAttribute("uname");
System.out.println("uname-->" + uname);
}
}