Servlet入门(八)ServletContext对象

版权声明:程序猴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);
    }

}

猜你喜欢

转载自blog.csdn.net/qq_21046965/article/details/84331160