Servlet入門(八)ServletContext物件
阿新 • • 發佈:2018-11-24
前言
本章學習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); } }