搞定J2EE核心技术与企业应用
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

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 运行结果