Servlet开发【06】取得其它内置对象

在上一篇文章中讲解了取得初始化配置信息,这一章我们一起学习怎么取得其它内置对象

取得HttpSession实例

  在Servlet程序中要想取得看一个Session对象,则可以通过HttpServletRequest接口完成,在此接口中提供了以下的操作方法

    1. public HttpSession getSession()

    2.  public HttpSession getSession(boolean create)

   Servlet本身提供的只是request和response两个对象,所以如果要想取得session对象,则只能依靠request对象,因为session属于HTTP协议的范畴,而且在每次发送请求的时候,服务器都会自动为客户端设置一个Cookie,所以,很自然的,session中要使用了Cookie的机制,但是Cookie又只能通过request取得,那么自然session也就只能通过request取得了。

一个实例取得Session对象

  
  
  
  
  1. package ServletDemo; 
  2. import java.io.IOException; 
  3. import javax.servlet.*; 
  4. import javax.servlet.http.*; 
  5. public class HttpSession extends HttpServlet { //继承HttpServlet 
  6.     public void doGet(HttpServletRequest req,HttpServletResponse resp) 
  7.            throws ServletException,IOException{   //处理服务 
  8.       javax.servlet.http.HttpSession ses=req.getSession();//取得session对象  
  9.         System.out.println("session id:"+ses.getId());//取得session id 
  10.         ses.setAttribute("username","赵玉强");//设置属性 
  11.         System.out.println("username属性内容:"+ses.getAttribute("username")); 
  12.     } 
  13.      public void doPost(HttpServletRequest req,HttpServletResponse resp) 
  14.            throws ServletException,IOException{ //处理POST请求 
  15.         this.doGet(req, resp);   //调用doGet()方法       
  16.      } 

之后进行web.xml文件的配置

  
  
  
  
  1. <servlet> 
  2.        <servlet-name>session</servlet-name> 
  3.        <servlet-class>ServletDemo.HttpSession</servlet-class> 
  4.   </servlet> 
  5.   <servlet-mapping> 
  6.        <servlet-name>session</servlet-name> 
  7.        <url-pattern>/HttpSessionTest</url-pattern> 
  8.   </servlet-mapping> 

在浏览器中输入:http://localhost:8080/test/HttpSessionTest

看一下服务器如下图所示:

此时可以取得了session 对象了

取得application对象

   在讲解如何取得application对象之前,先来回顾一下一个问题,在之前讲解的内置对象的时候一直强调过,对于application对象可以通过this.getServletContext()方法取得

    现在HttpServlet的父类之中已经专门提供了取得ServletContext接口的对象,所以下面就是利用此方法完成功能。

  
  
  
  
  1. package ServletDemo; 
  2. import java.io.IOException; 
  3. import javax.servlet.*; 
  4. import javax.servlet.http.*; 
  5. public class ServletContext extends HttpServlet { //继承HttpServlet 
  6.     public void doGet(HttpServletRequest req,HttpServletResponse resp) 
  7.            throws ServletException,IOException{   //处理服务 
  8.        javax.servlet.ServletContext app=super.getServletContext();//取得application  
  9.         System.out.println("真是路径:"+app.getRealPath("/"));    
  10.     } 
  11.      public void doPost(HttpServletRequest req,HttpServletResponse resp) 
  12.            throws ServletException,IOException{ //处理POST请求 
  13.         this.doGet(req, resp);   //调用doGet()方法       
  14.      } 

  
  
  
  
  1. <servlet> 
  2.        <servlet-name>application</servlet-name> 
  3.        <servlet-class>ServletDemo.ServletContext</servlet-class> 
  4.   </servlet> 
  5.   <servlet-mapping> 
  6.        <servlet-name>application</servlet-name> 
  7.        <url-pattern>/ServletContextTest</url-pattern> 
  8.   </servlet-mapping> 

http://localhost:8080/test/ServletContextTest

 

你可能感兴趣的:(servlet,servlet开发)