官术网_书友最值得收藏!

5.5 關于Servlet 3.0實例

雖然Filter技術是Servlet 2.3增加的功能,但是Servlet 3.0也加強了對該技術的支持。Servlet 3.0是Sun公司于2010年發布的,它的開發者包括許多個人和公司團體,充分體現了Sun公司所倡導的代碼開放性原則。由于眾多參與者的共同努力,Servlet 3.0的功能強大了很多,而且性能也有了大幅度提高。

5.5.1 關于Servlet 3.0環境的搭建

為了便于程序員開發關于Servlet的程序,MyEclipse開發工具提供了對其的支持。但是Servlet 3.0屬于JavaEE 6.0規范,對開發環境和運行環境有一定的要求:

● 編譯環境:Java 1.6。

● 服務器環境:如果為Tomcat服務器,則必須是Tomcat 7.0版本以上。

根據MyEclipse開發Web Project項目的向導(如圖5.8所示),可以發現其只支持JavaEE 5.0而不支持JavaEE 6.0。

圖5.8 Web Project向導

為了解決上述問題,需要重新配置關于開發Servlet 3.0項目的環境,具體步驟如下:

01 從菜單欄中選擇“File>New>Web Project”命令,新建一個Web Project項目,在出現的對話框中進行如圖5.9所示的設置。即在“Project Name”文本框中輸入“annotation”,然后選擇JavaEE 5.0版本,其他選項建議為默認值,單擊“Finish”按鈕完成創建。

圖5.9 創建Web項目

02 用鼠標右鍵單擊剛生成的項目中的“src”目錄,在彈出的快捷菜單中選擇“New>Servlet”命令,創建一個Servlet程序,關于創建Servlet的對話框配置如圖5.10所示。單擊“Next”按鈕就會出現如圖5.11所示的對話框,在該對話框中取消對web.xml文件的配置。

圖5.10 創建Servlet程序

圖5.11 關于web.xml文件配置

03 單擊“Finish”按鈕,就完成了創建Servlet程序的向導。此時當前項目的目錄結構如圖5.12所示。通過項目目錄可以發現“Java EE 5 Libraries”包含的javaee.jar不支持Servlet 3.0,同時web.xml文件內容為2.5版本,也不支持Servlet 3.0。

圖5.12 Servlet程序的目錄結構

04 為了解決支持Servlet 3.0的JAR文件,可以通過兩種方式來實現:一種是從Servlet的官方網站下載,另一種是加載Tomcat 7.0中的JAR文件。本書采用后一種方式。即創建名為Servlet 3.0的“User Libraries”,JAR文件為Tomcat 7.0根目錄下lib文件下的所有JAR文件,如圖5.13所示。

圖5.13 創建Servlet 3.0用戶庫

05 通過如圖5.14所示的方式移除“JavaEE 5 Libraries”庫,然后利用如圖5.15所示的方式添加Servlet 3.0用戶庫,最后該項目的目錄結構如圖5.16所示。

圖5.14 移除庫

圖5.15 添加用戶庫

圖5.16 目錄結構

06 修改web.xml文件,即復制Tomcat 7.0的根目錄下conf\web.xml文件內容為該項目的web.xml文件內容,具體內容如下:

      <?xml version="1.0" encoding="UTF-8"?>
      <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/
      XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
                        http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
      version="3.0">
      <welcome-file-list>
          <welcome-file>index.jsp</welcome-file>
      </welcome-file-list>
      </web-app>

代碼說明:

上述配置文件采用的是Servlet 3.0規定的Web程序部署描述格式。

07 最后修改MyEclipse的編譯版本為Java 1.6,具體界面如圖5.17所示。

圖5.17 編譯環境

5.5.2 Servlet 3.0示例

Servlet 3.0增加了許多新特性,例如異步處理、注解、可插性等,本章將通過一個具體的實例來演示Servlet 3.0的注解功能。由于Servlet 3.0加強了注解支持、注解的引入,所以使部署描述符web.xml文件成為可選的。

具體步驟如下:

01 接著上一節的步驟,修改ServletAnno.java文件,具體內容如下:

      //******* ServletAnno.java **************
      //引入包
      import java.io.IOException;
      import java.io.PrintWriter;
      import javax.servlet.ServletException;
      import javax.servlet.annotation.*;
      import javax.servlet.http.HttpServlet;
      import javax.servlet.http.HttpServletRequest;
      import javax.servlet.http.HttpServletResponse;
      //注解Servlet
      @WebServlet(name="Servlet3.0",urlPatterns={"/Servlet3"})
      public class ServletAnno extends HttpServlet {
          //編寫doGet()方法
              public void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
              PrintWriter out=response.getWriter();        //獲取輸出流
              out.println("Servlet 3.0");                  //輸出相應信息
              out.close();
        }
      //編寫doPost()方法
        public void doPost(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
              doGet(request,response);                      //調用doGet()方法
        }
      }

代碼說明:

上述代碼使用注解@WebServlet配置ServletAnno類為Servlet,其中屬性name指定該Servlet的名字為Servlet 3.0,屬性urlPatterns指定Servlet的路徑為/Servlet3。

02 修改web.xml文件,該文件的具體內容如下:

      <?xml version="1.0" encoding="UTF-8"?>
      <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/
      XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
                        http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
        version="3.0">
      </web-app>

代碼說明:

上述代碼沒有增加任何內容,但是通過注解方式卻與如下web.xml內容功能一樣:

      //******* web.xml **************
      <?xml version="1.0" encoding="UTF-8"?>
      <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/
      XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
                        http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
        version="3.0">
        <servlet>
              <servlet-name>Servlet3.0</servlet-name>
              <servlet-class>com.cjgong.servlet.ServletAnno</servlet-class>
        </servlet>
        <servlet-mapping>
              <servlet-name>Servlet3.0</servlet-name>
              <url-pattern>/Servlet3</url-pattern>
        </servlet-mapping>
      </web-app>

03 最后,單擊工具欄中的按鈕,出現如圖5.18所示的對話框實現把該項目發布到服務器。然后單擊工具欄中的按鈕,在出現的選項中做出如圖5.19所示的選擇,以實現啟動服務器。最后打開瀏覽器,在地址欄中輸入地址http://localhost:8080/annotation/Servlet3,這時運行結果如圖5.20所示。

圖5.18 項目發布

圖5.19 啟動服務器

圖5.20 運行結果

主站蜘蛛池模板: 宜兴市| 扎鲁特旗| 清徐县| 余庆县| 眉山市| 田东县| 冕宁县| 新兴县| 启东市| 图木舒克市| 德钦县| 炎陵县| 通州市| 富顺县| 杭州市| 九龙坡区| 海门市| 九龙坡区| 临猗县| 新郑市| 贵阳市| 达日县| 泰来县| 武隆县| 台东市| 新竹市| 调兵山市| 甘洛县| 民丰县| 阜康市| 图片| 女性| 会理县| 筠连县| 长顺县| 安国市| 拉萨市| 怀集县| 曲松县| 比如县| 庆云县|