實際上學習完JSP以及編寫過代碼開發之後會發現真正常用的內置對象:request
、session
、application
、response
、config
。但是請一定要記住Servlet裏面不會包含pageContext內置對象,因爲這個對象只能夠在JSP裏面使用。
首先在Servlet中的doGet()
與doPost()
方法參數上已經提供了HttpServletRequest、HttpServletResponse兩個對象,所以現在就已經有了request與response對象。
1、config對象
如果想要取得config內置對象,可以直接利用HttpServlet中定義的方法完成。
(1)取得config對象:public ServletCOnfig getServletConfig()
;
@SuppressWarnings("serial")
public class LifeServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("[LifeServlet] " + super.getServletConfig().getInitParameter("data"));
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);
}
}
但是對於config內置對象,實際上有一個init()
方法也可以取得,只不過一般很少使用init()方法操作。
2、application對象
application對象很少會直接使用,往往都使用getServletContext()
方法代替,所以在HttpServlet類裏面定義有一個方法:public ServletContext getServletContext()
。
@SuppressWarnings("serial")
public class LifeServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("[LifeServlet] " + super.getServletContext().getRealPath("/"));
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);
}
}
3、session對象
session是HttpSession接口的對象,並且session使用到了Cookie的機制,只有HttpServletRequest接口裏面纔可以接收Cookie,所以Session對象的取得依靠的是HttpServletRequest接口裏面定義的方法:
(1)取得Session:public HttpSession getSession()
。
@SuppressWarnings("serial")
public class LifeServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpSession session = request.getSession();
System.out.println("[LifeServlet] " + session.getId());
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);
}
}
也就是說現在已經可以在Servlet中使用各個常用的內置對象。