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

现象:

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



分析:

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



解决方法:

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

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. import javax.servlet.annotation.WebInitParam;  
  2. import javax.servlet.annotation.WebServlet;  
  3.   
  4. @WebServlet(  
  5. displayName = "This is Login Action"//描述  
  6. name = "LoginAction"//servlet名称  
  7. urlPatterns = { "/servlet/LoginAction" },//url  
  8. loadOnStartup = 1//启动项  
  9. initParams = { @WebInitParam(name = "username", value = "张三") }//初始化参数  
  10. )  
  11. public class LoginAction extends HttpServlet {  
  12.     /** 
  13.      * Constructor of the object. 
  14.      */  
  15.     public LoginAction() {  
  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中可以直接输入

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值