您现在的位置:首页 >> 前端 >> 内容

Eclipse新建Servlet时候,不会自动生成mapping到web.xml,而是在代码中加入注解@WebServlet

时间:2017/6/22 9:33:00 点击:

  核心提示:现象:用Eclipse新版本新建servlet时候,发现创建Servlet后,Eclipse不会自动在web.xml中生成该Servlet对应的mapping信息,而是在Servlet代码中加入注解@...

现象:

用Eclipse新版本新建servlet时候,发现创建Servlet后,Eclipse不会自动在web.xml中生成该Servlet对应的mapping信息,而是在Servlet代码中加入注解@WebServlet,如下

Eclipse新建Servlet时候,不会自动生成mapping到web.xml,而是在代码中加入注解@WebServlet
分析:

查找文档发现,这是Servlet3.0新特性(得Tomcat7.0版本及以上),@WebServlet 用于将一个类声明为 Servlet,该注解将会在部署时被容器处理,容器将根据具体的属性配置将相应的类部署为 Servlet。该注解具有下表给出的一些常用属性(以下所有属性均为可选属性,但是 value 或者 urlPatterns 通常是必需的,且二者不能共存,如果同时指定,通常是忽略 value 的取值)

Eclipse新建Servlet时候,不会自动生成mapping到web.xml,而是在代码中加入注解@WebServlet

 

解决方法:

在@WebServlet 中定义Servlet的name、urlPatterns等信息

 

[java]view plaincopy
  1. importjavax.servlet.annotation.WebInitParam;
  2. importjavax.servlet.annotation.WebServlet;
  3.  
  4. @WebServlet(
  5. displayName="ThisisLoginAction",//描述
  6. name="LoginAction",//servlet名称
  7. urlPatterns={"/servlet/LoginAction"},//url
  8. loadOnStartup=1,//启动项
  9. initParams={@WebInitParam(name="username",value="张三")}//初始化参数
  10. )
  11. publicclassLoginActionextendsHttpServlet{
  12. /**
  13. *Constructoroftheobject.
  14. */
  15. publicLoginAction(){
  16. super();
  17. }
  18. }
    Servlet的访问URL是Servlet的必选属性,可以选择使用urlPatterns或者value定义。
      像上面的LoginAction可以描述成@WebServlet(name="LoginAction",value="/LoginAction")。
      也定义多个URL访问:
      如@WebServlet(name="LoginAction",urlPatterns={"/LoginAction","/LoginAction2"})

      或者@WebServlet(name="LoginAction",value={"/LoginAction","/LoginAction2"})

    这样的简化形式也可以,相当于设置了name和urlPattern

    @WebServlet("/servlet/LoginAction")

    在新建Servlet时候在URL mapping中可以直接输入

    Eclipse新建Servlet时候,不会自动生成mapping到web.xml,而是在代码中加入注解@WebServlet

     

Tags:EC CL LI IP 
作者:网络 来源:qq_3400539