版权声明:程序猴jwang版权所有 https://blog.csdn.net/qq_21046965/article/details/84331160
前言
本章学习ServletContext对象的相关知识
方法
1.概念
我们知道,request对象解决的是同一请求下的数据共享问题,session解决了同一用户(会话)下不同请求的数据共享问题,那么不同用户(会话)下的不同请求的数据该怎么共享呢?那就要用到ServletContext对象
顾名思义,ServletContext对象实质是servlet上下文,我们可理解为存储与服务器中。
既然是存储于服务器中,那么只要是服务器没有关闭,该对象就不会消失,即使你关闭了浏览器!
2.使用
1)获取ServletContext对象
- 通过this关键字进行获取
ServletContext servletContext = this.getServletContext();
- 通过servletConfig对象获取
ServletContext servletContext = this.getServletConfig().getServletContext();
- 通过session对象进行获取
ServletContext servletContext = request.getSession().getServletContext();
2)使用session存储公共数据
同session一样,他也采取了setAttribute(键,值);设置数据,使用getAttribute(键)获取数据
实例:使用servletContext存储登录用户名
package com.jwang.student.servlet;
import com.jwang.student.bo.User;
import com.jwang.student.service.UserService;
import com.jwang.student.service.impl.UserServiceImpl;
import javax.servlet.ServletContext;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/login.do")
public class UserServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response){
try {
String username = request.getParameter("username");
String password = request.getParameter("password");
ServletContext servletContext = request.getSession().getServletContext();
request.setCharacterEncoding("UTF-8");
UserService userService = new UserServiceImpl();
User user = new User("01", username, password);
if (userService.login(user)) {
servletContext.setAttribute("username",username);
response.sendRedirect("/success.jsp");
} else {
request.getRequestDispatcher("/login.jsp").forward(request, response);
}
}catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response){
this.doGet(request, response);
}
}