天天看點

Web開發中的servlet

用途:讓伺服器端接收浏覽器端發來的請求并傳回資料。

使用:

1、建立實作了servlet接口的java類,一般繼承HttpServlet類

2、在web.xml中注冊,并配置通路路徑

HttpServlet類:該類實作了原始的servlet接口,并重寫了service()方法,主要完成了根據使用者通路的類型get或者post,來決定去調用doGet()還是doPost()方法,是以開發者不需要再重寫service方法了。

運作過程:

web容器隻會在使用者第一次通路servlet時執行個體化servlet,并調用init()方法,而每次使用者的通路請求都會調用service()方法。可以通過load-on-startup在web應用啟動時就執行個體化servlet,為系統準備必要的資料等。

<servlet>
        <servlet-name>aa</servlet-name>
        <servlet-class>
            xxx
        </servlet-class>
        <load-on-startup>1</load-on-startup></span>
</servlet>
           

預設servlet

<servlet-mapping>
         <servlet-name>default</servlet-name>
         <url-pattern>/</url-pattern>
 </servlet-mapping>
           

例子

<servlet-name>aa</servlet-name>
     <servlet-class>xxx</servlet-class>
</servlet>
<servlet-mapping>
     <servlet-name>aa</servlet-name>
     <url-pattern>/*</url-pattern>
</servlet-mapping>
           

Servlet中一些重要的對象

ServletConfig對象

servlet的init方法會接收一個ServletConfig對象,而在web.xml中注冊servlet時可以通過<init-param>設定一些參數,這些參數會被存到ServletConfig對象中。

ServletContext對象

容器會為每個web應用建立一個ServletContext對象,可以通過ServletConfig.getServletContext方法獲得ServletContext對象。該對象有幾個作用:

一、是完成同一個web應用内的各個servlet的通訊。就是在一個servlet中将資料setAttribute()進來,再從另一個servlet中getAttribute得到。

二、得到web應用的參數配置

在web.xml中可以通過<context-param>進行應用級别的參數配置,如下:

<context-param>
         <param-name>url</param-name>
         <param-value>jdbc:mysql://localhost:3306/test</param-value>
  </context-param>
           

然後可以在doGet()方法中

servletContext.getInitParameter("url");      

這樣得到。

三、請求轉發

在doGet()方法中,servletContext.getRequestDispatcher("另一個servlet").forward(request, response); 
      

四、讀取資源檔案

InputStream in = this.getServletContext().getResourceAsStream("/db1.properties");