Servlet基本用法二介面和類,servlet用法介面

來源:互聯網
上載者:User

Servlet基本用法二介面和類,servlet用法介面
一、摘要                                                                                                                                                                           

  本文主要簡單介紹開發Servlet需要用到的介面和類。

二、ServletRequest和ServletResponse介面                                                                                                               

  當客戶請求到來時,由容器建立一個ServletRequest對象,封裝請求資料,同時建立一個ServletResponse對象,封裝響應資料。這兩個對象作為參數傳遞給service方法。

  這兩個介面都用很多方法,這裡就不逐一介紹。

  HttpServletRequest和HttpServletResponse分別繼承自ServletRequest和ServletResponse介面。

三、ServletConfig介面                                                                                                                                                   

  Servlet容器使用ServletConfig對象在Servlet初始化期間向它傳遞配置資訊,一個Servlet對象只有一個|ServletConfig對象。該介面中定義下述四個方法:

      //返回名字為name的初始化參數的值         String getInitParameter(String name);      //返回所有初始化參數的的名字的枚舉集合         Enumeration getInitParameterNames() ;      //返回Servlet內容物件的引用         ServletContext getServletContext();      //返回Servlet執行個體的名字         String getServletName() ;

  該幾個方法的簡單例子代碼如下:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException     {        //返回名字為name的初始化參數的值        System.out.println(getServletConfig().getInitParameter("name"));        //返回所有初始化參數的的名字的枚舉集合         Enumeration<String> paraNames=this.getServletConfig().getInitParameterNames();          for(Enumeration e=paraNames;e.hasMoreElements();)         {               String name=e.nextElement().toString();               String value=getServletConfig().getInitParameter(name);               System.out.println(name+"-----"+value);            }         //返回Servlet內容物件的引用         System.out.println(getServletConfig().getServletContext().getContextPath());        //返回Servlet執行個體的名字         System.out.println(getServletConfig().getServletName()) ;    }

  輸出結果為:

       

四、ServletContext介面                                                                                                                                                      

  ServletContext介面用來表示上下文,該介面定義一組方法,Servlet可以使用這些方法與它的Servlet容器進行通訊。ServletContext對象是Web伺服器中一個已知路徑的根。我們可以通過ServletConfig對象的getServletContext方法來得到ServletContext對象,也可以調用GenericServlet類的getServletContext方法得到ServletContext對象。

  一個Web應用程式只有一個ServletContext對象,該對象可以被Web應用程式的所有Servlet所訪問,因此通常使用Servlet對象儲存一些需要在Web應用程式中共用的資訊。eg,統計頁面訪問量的小例子,代碼如下:

public class ContextDemo extends HttpServlet{    private static final long serialVersionUID = 1L;    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException    {        ServletContext context=getServletContext();        Integer count=null;        synchronized(context)        {            count=(Integer)context.getAttribute("counter");            if(count==null)            {                count=new Integer(1);            }            else            {                count=new Integer(count.intValue()+1);            }            context.setAttribute("counter", count);        }        response.setContentType("text/html;charset=UTF-8");        PrintWriter out=response.getWriter();        out.println("<html><head><title>頁面訪問統計</title></head><body>");        out.println("該頁面已被訪問了"+"<b>"+count+"</b>"+"次");        out.println("</body></html>");        out.close();    }

五、RequestDispatcher介面                                                                                                                                                    

  RequestDispatcher對象用於封裝一個由路徑所標識的伺服器資源,利用RequestDispatcher對象可以將請求轉寄給其他的Servlet或者JSP頁面。

  • 擷取RequestDispatcher對象

  兩種方法可以擷取該對象,一種是從ServletRequest介面的getRequestDispatcher方法擷取,另一種是從ServletContext介面的getRequestDispatcher擷取。兩者的區別是參數的資源的路徑名,前者不但可以是相對於上下文根的路徑名,而且可以是相對於當前Servlet的路徑,而後者只能是是相對於上下文根的路徑名。

  • 請求轉寄方法

  在RequestDispatcher介面中定義了兩種方法:

  forward(req,resp)和include(req,resp),兩者的區別是前者將請求轉寄給其他的Servlet,將由被調用的Servlet負責對請求作出相應,而原先Servlet的執行則終止。而後者將調用的Servlet對請求作出的響應併入原先的響應對象中,原先的Servlet還可以繼續輸出響應資訊。範例程式碼如下:

  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException    {        //該方法用於在響應中包含其他資源的內容並從ServletContext介面得到RequestDispatcher對象        /*RequestDispatcher rd=this.getServletContext().getRequestDispatcher("/hello.html");        rd.include(request, response);*/                //該方法用於將請求從一個Servlet傳遞給伺服器上另外的Servlet、JSP頁面或者是HTML檔案。        /*RequestDispatcher rd=this.getServletContext().getRequestDispatcher("/hello.html");        rd.forward(request, response);*/                //從ServletRequest介面得到RequestDispatcher對象        RequestDispatcher rd=request.getRequestDispatcher("hello.html");        rd.include(request, response);    }


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.