zoukankan      html  css  js  c++  java
  • Servlet3.0学习总结(一)——使用注解标注Servlet

    [转自] http://www.cnblogs.com/xdp-gacl/p/4222902.html


    一、Servlet3.0介绍

      Servlet3.0是Java EE6规范的一部分,Servlet3.0提供了注解(annotation),使得不再需要在web.xml文件中进行Servlet的部署描述,简化开发流程。

    二、开发Servlet3.0程序的所需要的环境

      开发Servlet3.0的程序需要一定的环境支持。MyEclipse10和Tomcat7都提供了对Java EE6规范的支持。Tomcat需要Tomcat7才支持Java EE6,Tomcat7需要使用JDK1.6以上的版本。

      所以开发Servlet3.0的程序需要以下的开发环境支持

    • IDE:MyEclipse 10+
    • JDK:JDK 1.6+
    • tomcat:tomcat 7+

      如果使用的 MyEclipse的版本较低,例如MyEclipse8.5,没有提供Java EE6的支持,可以到Oracle官方网站下载JavaEE6的SDK进行安装,或者从Tomcat7的解压目录下的lib文件夹中的【annotations-api.jar、el-api.jar、jasper.jar、jasper-el.jar、jsp-api.jar、servlet-api.jar】这几个jar文件引用到我们的项目路径下。(例如:先建一个Java EE5的web项目,然后把Tomcat7的解压目录下的lib文件夹中的【annotations-api.jar、el-api.jar、jasper.jar、jasper-el.jar、jsp-api.jar、servlet-api.jar】这几个jar文件引入到项目中,再删除Java EE5的库引用,最后从Tomcat7的解压目录下的conf文件夹下把web.xml模板拷贝到项目,替换掉原来的web.xml)。

    三、使用MyEclipse8.5+Tomcat7+JDK1.7开发Servlet3.0程序

    3.1、创建WebProject

      1、使用MyEclipse8.5新建一个Web Project,选择最高版本的Java EE5.0,如下图所示:

      

      创建好的项目如下所示:

      

      项目的web.xml文件内容如下:

    复制代码
     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <web-app version="2.5" 
     3     xmlns="http://java.sun.com/xml/ns/javaee" 
     4     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     5     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
     6     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
     7   <welcome-file-list>
     8     <welcome-file>index.jsp</welcome-file>
     9   </welcome-file-list>
    10 </web-app>
    复制代码

      注意web.xml文件中的version信息,version="2.5"http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd。这里就表示当前使用的是Servlet2.5的版本。

    3.2、将Web项目的开发环境改造成支持Servlet3.0

      1、打开Tomcat7的解压目录下的lib文件夹中,如下图所示:

      

       找到我们需要的【annotations-api.jar、el-api.jar、jasper.jar、jasper-el.jar、jsp-api.jar、servlet-api.jar】这几个jar文件,然后加入到我们的Web项目的lib文件夹下,如下图所示:

      

      2、删除Java EE5的库引用

      

      经过上面的两步操作,Web应用里面的jar包引用工作就算是完成了,如下图所示:

      

      3、修改项目中的web.xml文件的声明部分

      找到Tomcat7的解压目录下的conf文件夹下的web.xml,如下图所示:

      

      使用文本编辑器打开web.xml文件,如下图所示:

      

      改造好的Web.xml文件如下所示:

    复制代码
     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <web-app xmlns="http://java.sun.com/xml/ns/javaee"
     3   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     4   xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
     5                       http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
     6   version="3.0">
     7   <welcome-file-list>
     8     <welcome-file>index.jsp</welcome-file>
     9   </welcome-file-list>
    10 </web-app>
    复制代码

      注意web.xml文件中的version信息,version="3.0"http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd 这就是表示当前使用的是Servlet3.0的版本。经过这样改造之后,我们的Web应用的开发环境就支持Servlet3.0的程序开发了。

    3.3、开发Servlet3.0程序

    3.3.1、创建Servlet

      新建一个Servlet,写上Servlet的Name,然后Next,如下所示:

      

      取消【Generate/Map web.xml file】复选框的选中状态,直接点击【Finish】按钮完成Servlet的创建工作,我们要使用Servlet3.0提供的注解来配置Servlet,因此不需要MyEclipse帮我们在web.xml文件中生成Servlet的配置信息,如下图所示:

      

      这样建好一个Servlet后,在web.xml文件中没有任何关于这个Servlet的描述信息,如下图所示:

      

    3.3.1、使用注解描述Servlet

      前面介绍过,Servlet3.0提供了注解(annotation),使得不再需要在web.xml文件中进行Servlet的部署描述,下面我们就来使用一下Servlet3.0提供的注解来描述Servlet3Demo这个Servlet,代码如下:

    复制代码
     1 package me.gacl.web.controller;
     2 
     3 import java.io.IOException;
     4 import javax.servlet.ServletException;
     5 import javax.servlet.annotation.WebServlet;
     6 import javax.servlet.http.HttpServlet;
     7 import javax.servlet.http.HttpServletRequest;
     8 import javax.servlet.http.HttpServletResponse;
     9 
    10 /**
    11  * 注解WebServlet用来描述一个Servlet
    12  * 属性name描述Servlet的名字,可选
    13  * 属性urlPatterns定义访问的URL,或者使用属性value定义访问的URL.(定义访问的URL是必选属性)
    14  */
    15 @WebServlet(name="Servlet3Demo",urlPatterns="/Servlet3Demo")
    16 public class Servlet3Demo extends HttpServlet {
    17     
    18     public void doGet(HttpServletRequest request, HttpServletResponse response)
    19             throws ServletException, IOException {
    20         response.getWriter().write("Hello Servlet3.0");
    21     }
    22 
    23     public void doPost(HttpServletRequest request, HttpServletResponse response)
    24             throws ServletException, IOException {
    25         this.doGet(request, response);
    26     }
    27 }
    28 
    29 /*
    30  * 完成了一个使用注解描述的Servlet程序开发。
    31   使用@WebServlet将一个继承于javax.servlet.http.HttpServlet的类定义为Servlet组件。
    32   @WebServlet有很多的属性:
    33       1、asyncSupported:    声明Servlet是否支持异步操作模式。
    34       2、description:      Servlet的描述。
    35       3、displayName:       Servlet的显示名称。
    36       4、initParams:        Servlet的init参数。
    37       5、name:           Servlet的名称。
    38       6、urlPatterns:     Servlet的访问URL。
    39       7、value:           Servlet的访问URL。
    40   Servlet的访问URL是Servlet的必选属性,可以选择使用urlPatterns或者value定义。
    41   像上面的Servlet3Demo可以描述成@WebServlet(name="Servlet3Demo",value="/Servlet3Demo")。
    42   也定义多个URL访问:
    43   如@WebServlet(name="Servlet3Demo",urlPatterns={"/Servlet3Demo","/Servlet3Demo2"})
    44   或者@WebServlet(name="AnnotationServlet",value={"/Servlet3Demo","/Servlet3Demo2"})
    45  *
    46  */
    复制代码

      在Servlet3.0中,可以使用@WebServlet注解将一个继承于javax.servlet.http.HttpServlet的类标注为可以处理用户请求的Servlet。

    @WebServlet注解的相关属性
    NO. 属性名 描述
    1 asyncSupported 声明Servlet是否支持异步操作模式
    2 description Servlet的描述信息
    3 displayName Servlet的显示名称
    3 initParams Servlet的初始化参数
    5 name Servlet的名称
    6 urlPatterns Servlet的访问URL
    7 value Servlet的访问URL

      Servlet的访问URL是Servlet的必选属性,可以选择使用urlPatterns或者value定义。
      像上面的Servlet3Demo可以描述成@WebServlet(name="Servlet3Demo",value="/Servlet3Demo")。
      也定义多个URL访问:
      如@WebServlet(name="Servlet3Demo",urlPatterns={"/Servlet3Demo","/Servlet3Demo2"})
      或者@WebServlet(name="AnnotationServlet",value={"/Servlet3Demo","/Servlet3Demo2"})

    3.4、部署Web应用到Tomcat7

      由于我们使用的是MyEclipse8.5的版本、而MyEclipse8.5只支持tomcat6.x的版本,因为我们开发的是基于Servlet3.0的程序,因此将Web应用部署到Tomcat6.x版本的服务器是无法正常运行的,必须要使用tomcat7以上的服务器,所以首先我们要在MyEclipse8.5中配置tomcat7.x,如下图所示:

      

      要想在MyEclipse8.5中正常使用Tomcat7.x,除了配置这个地方之外,还需要配置一下Paths,如下图所示:

      

      如果不这样做,那么将项目部署好后,启动tomcat时就会报错,java.lang.NoClassDefFoundError: org/apache/juli/logging/LogFactory,之前就是因为这个莫名其妙的错误折腾了好久,直到看到网上这一篇文章http://xuejiangtao.iteye.com/blog/882585才解决启动报错的问题的。

       把项目发布到Tomcat7,启动Tomcat7。在浏览器访问:http://localhost:8080/Servlet3.0Study/Servlet3Demo

      

      可以看到,我们已经成功访问到了Servlet3Demo,我们在MyEclipse8.5中开发的第一个Servlet3.0程序成功了。

    四、使用MyEclipse10+Tomcat7+JDK1.7开发Servlet3.0程序

      在上面,我们使用MyEclipse8.5来开发了一个Servlet3.0的程序,但由于MyEclipse8.5本身不支持Servlet3.0,所以还得搭建Servlet3.0的开发环境,极其麻烦,但使用MyEclipse10以上的版本就不一样了,MyEclipse10支持Servlet3.0的开发,因此还是推荐使用MyEclipse10+Tomcat7.x+JDK1.6+的组合来开发Servlet3.0的程序。

    4.1、创建WebProject

      1、使用MyEclipse10新建一个Web Project,选择Java EE6.0,如下图所示:

      

      创建好的项目如下图所示:

      

      JavaEE6的jar文件如下图所示:

      

      项目的web.xml文件内容如下:

    复制代码
     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <web-app version="3.0" 
     3     xmlns="http://java.sun.com/xml/ns/javaee" 
     4     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     5     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
     6     http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
     7   <display-name></display-name>    
     8   <welcome-file-list>
     9     <welcome-file>index.jsp</welcome-file>
    10   </welcome-file-list>
    11 </web-app>
    复制代码

      注意web.xml文件中的version信息,version="3.0"http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd 这就是表示当前使用的是Servlet3.0的版本。

    4.2、开发Servlet3.0程序

    4.2.1、创建Servlet

      新建一个Servlet,写上Servlet的Name,然后Next,如下所示:

      

      

      这样建好一个Servlet后,在web.xml文件中没有任何关于这个Servlet的描述信息。

    4.2.2、使用注解描述Servlet

    代码如下:

    复制代码
     1 package me.gacl.web.controller;
     2 
     3 import java.io.IOException;
     4 import javax.servlet.ServletException;
     5 import javax.servlet.annotation.WebServlet;
     6 import javax.servlet.http.HttpServlet;
     7 import javax.servlet.http.HttpServletRequest;
     8 import javax.servlet.http.HttpServletResponse;
     9 
    10 @WebServlet(name="Servlet3FirstDemo",value="/Servlet3FirstDemo")
    11 public class Servlet3FirstDemo extends HttpServlet {
    12 
    13     
    14     public void doGet(HttpServletRequest request, HttpServletResponse response)
    15             throws ServletException, IOException {
    16 
    17         response.getWriter().write("Hello Servlet3.0");
    18     }
    19 
    20     
    21     public void doPost(HttpServletRequest request, HttpServletResponse response)
    22             throws ServletException, IOException {
    23 
    24         this.doGet(request, response);
    25     }
    26 }
    复制代码

    4.3、部署Web应用到Tomcat7

      把项目发布到Tomcat7,启动Tomcat7,如下图所示:

      

      在浏览器访问:http://localhost:8081/Servlet3.0Study/Servlet3FirstDemo 运行结果如下:

      

      可以看到,使用MyEclipse10开发一个Servlet3.0的程序是非常方便和快捷的。Servlet3.0提供了注解之后对于Servlet的开发就方便多了,省去了在web.xml文件中配置。


  • 相关阅读:
    移动端文本编辑器
    jquery移动端日期插件
    Spring 4集成 Quartz2(转)
    json 特殊字符 javascript 特殊字符处理(转载)
    解决使用JavaScriptConvert转换对象为Json时,中文和&符号被转码的问题
    RFID的winform程序心得2
    异步编程模型
    DataGridView获取或者设置当前单元格的内容
    DataGridView修改数据并传到数据库
    把存储过程结果集SELECT INTO到临时表
  • 原文地址:https://www.cnblogs.com/pekkle/p/6568697.html
Copyright © 2011-2022 走看看