zoukankan      html  css  js  c++  java
  • Servlet3.0-使用注解定义Servlet

     本文转载自:http://www.cnblogs.com/luxh/archive/2012/06/06/2537458.html

    我使用的开发环境:MyEclipse10+Tomcat7+JDK6。

      开发Servlet3的程序需要一定的环境支持。Servlet3是Java EE6规范的一部分,MyEclipse10和Tomcat7都提供了对Java EE6规范的支持。

      Tomcat需要Tomcat7才支持Java EE6,Tomcat7需要使用JDK6。

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

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

      1、新建一个Web Project,直接选择Java EE6.0。

      2、看一下项目包视图。

      3、Java EE6的库文件

      4、web.xml文件

    1
    2
    3
    4
    5
    6
    7
    8
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="3.0"
        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">
       
    </web-app>

      注意version="3.0"和http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd。

      5、新建一个Servlet。写上Servlet的Name,然后Next。

      6、不需要在web.xml文件中生成Servlet的相关信息。Finish。

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

    复制代码
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="3.0" 
        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">
      
    </web-app>
    复制代码

      8、使用注解描述Servlet。 

    复制代码
    package com.cndatacom.servlet;
    
    import java.io.IOException;
    import java.io.PrintWriter;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    
    /**
     * 使用注解描述Servlet
     * @author Luxh
     */
    
    /**
     * 注解WebServlet用来描述一个Servlet
     * 属性name描述Servlet的名字,可选
     * 属性urlPatterns定义访问的URL,或者使用属性value定义访问的URL.(定义访问的URL是必选属性)
     */
    @WebServlet(name="AnnotationServlet",urlPatterns="/AnnotationServlet")
    public class AnnotationServlet extends HttpServlet {
    
        public void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            
            response.setCharacterEncoding("utf-8");
            response.setContentType("text/html;charset=utf-8");
            PrintWriter out = response.getWriter();
            out.println("<!DOCTYPE HTML>");
            out.println("<HTML>");
            out.println("      <HEAD>");
            out.println("      <TITLE>A Servlet</TITLE>");
            out.println("      <meta http-equiv="content-type" " + "content="text/html; charset=utf-8">");
            out.println("   </HEAD>");
            out.println("       <BODY>");
            out.println("             Hello AnnotationServlet.");
            out.println("     </BODY>");
            out.println("</HTML>");
            out.flush();
            out.close();
        }
    
    }
    复制代码

      9、把项目发布到Tomcat7,启动Tomcat7。在浏览器访问:http://localhost:8080/Servlet3/AnnotationServlet

      完成了一个使用注解描述的Servlet程序开发。


      使用@WebServlet将一个继承于javax.servlet.http.HttpServlet的类定义为Servlet组件。

      @WebServlet有很多的属性:

      asyncSupported:声明Servlet是否支持异步操作模式。

      description:    Servlet的描述。

      displayName:     Servlet的显示名称。

      initParams:        Servlet的init参数。

      name:        Servlet的名称。

      urlPatterns:    Servlet的访问URL。

      value:          Servlet的访问URL。

      Servlet的访问URL是Servlet的必选属性,可以选择使用urlPatterns或者value定义。

      像上面的AnnotationServlet可以描述成@WebServlet(name="AnnotationServlet",value="/AnnotationServlet")。

      也定义多个URL访问:

      如@WebServlet(name="AnnotationServlet",urlPatterns={"/AnnotationServlet","/AnnotationServlet2"})

      或者@WebServlet(name="AnnotationServlet",value={"/AnnotationServlet","/AnnotationServlet2"})


         另外在关于Servlet映射到的URL中可以使用*通配符,但是只能有两种固定的格式:一种格式是“*.扩展名”,另一种格式是以正斜杠(/)开头并以“/*”结尾。带扩展名的*前不能有“/”,即不能设置为“/action/*.xx”形式。

  • 相关阅读:
    springboot(6)-热部署
    springboot(5)-文件上传
    ubuntu修改tomcat使用的jdk
    jstack使用
    HeapAnalyzer如何使用
    查看linux下tomcat使用的jdk版本
    ubuntu-tomcat安装目录
    vi命令
    211java-jdk安装记录
    linux的java安装目录
  • 原文地址:https://www.cnblogs.com/geek1116/p/6424945.html
Copyright © 2011-2022 走看看