Eclipse新建Servlet时候,不会自动生成mapping到web.xml,而是在代码中加入注解@WebServlet 现象: 分析: 解决方法: 但是,我要是非要使用web.xml呢? 在eclipse中创建Web项目中没有web.xml的解决方法其实也很简单

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

分析:

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

解决方法:

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

import javax.servlet.annotation.WebInitParam;
import javax.servlet.annotation.WebServlet;

@WebServlet(
displayName = "This is Login Action", //描述
name = "LoginAction", //servlet名称
urlPatterns = { "/servlet/LoginAction" },//url
loadOnStartup = 1, //启动项
initParams = { @WebInitParam(name = "username", value = "张三") }//初始化参数
)
public class LoginAction extends HttpServlet {
/**
* Constructor of the object.
*/
public LoginAction() {
super();
}
}

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中可以直接输入

但是,我要是非要使用web.xml呢?

没错,我确实有病

如果你一定这么做的话,你就会发现你的eclipse在建项目的时候八成就没给你建web.xml文件

一般来说想要这个文件就要在建项目的时候勾选,generate web.xml deployment descriptor

Eclipse新建Servlet时候,不会自动生成mapping到web.xml,而是在代码中加入注解@WebServlet
现象:
分析:
解决方法:
但是,我要是非要使用web.xml呢?
在eclipse中创建Web项目中没有web.xml的解决方法其实也很简单

 但是,我已经建好项目了总不能重建吧,没问题

在eclipse中创建Web项目中没有web.xml的解决方法其实也很简单

右键点击项目 → “Java EE Tool” → “Generate Deployment descriptor stub” 即可生成web.xml文件

Eclipse新建Servlet时候,不会自动生成mapping到web.xml,而是在代码中加入注解@WebServlet
现象:
分析:
解决方法:
但是,我要是非要使用web.xml呢?
在eclipse中创建Web项目中没有web.xml的解决方法其实也很简单

虽然这样做确实会建立web.xml,但是她在我这里却出了一些问题,我控制台中运行项目的Server消失了,新建的时候却不能使用相同的名字。

我只好先将原来的Sever move掉 ,在add一个新的进来,不清楚是不是我新加web.xml的原因。

感谢:https://www.cnblogs.com/xww115/p/10813946.html

  https://www.cnblogs.com/Dearmyh/p/10989656.html

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

分析:

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

解决方法:

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

import javax.servlet.annotation.WebInitParam;
import javax.servlet.annotation.WebServlet;

@WebServlet(
displayName = "This is Login Action", //描述
name = "LoginAction", //servlet名称
urlPatterns = { "/servlet/LoginAction" },//url
loadOnStartup = 1, //启动项
initParams = { @WebInitParam(name = "username", value = "张三") }//初始化参数
)
public class LoginAction extends HttpServlet {
/**
* Constructor of the object.
*/
public LoginAction() {
super();
}
}

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中可以直接输入

但是,我要是非要使用web.xml呢?

没错,我确实有病

如果你一定这么做的话,你就会发现你的eclipse在建项目的时候八成就没给你建web.xml文件

一般来说想要这个文件就要在建项目的时候勾选,generate web.xml deployment descriptor

Eclipse新建Servlet时候,不会自动生成mapping到web.xml,而是在代码中加入注解@WebServlet
现象:
分析:
解决方法:
但是,我要是非要使用web.xml呢?
在eclipse中创建Web项目中没有web.xml的解决方法其实也很简单

 但是,我已经建好项目了总不能重建吧,没问题

在eclipse中创建Web项目中没有web.xml的解决方法其实也很简单

右键点击项目 → “Java EE Tool” → “Generate Deployment descriptor stub” 即可生成web.xml文件

Eclipse新建Servlet时候,不会自动生成mapping到web.xml,而是在代码中加入注解@WebServlet
现象:
分析:
解决方法:
但是,我要是非要使用web.xml呢?
在eclipse中创建Web项目中没有web.xml的解决方法其实也很简单

虽然这样做确实会建立web.xml,但是她在我这里却出了一些问题,我控制台中运行项目的Server消失了,新建的时候却不能使用相同的名字。

我只好先将原来的Sever move掉 ,在add一个新的进来,不清楚是不是我新加web.xml的原因。

感谢:https://www.cnblogs.com/xww115/p/10813946.html

  https://www.cnblogs.com/Dearmyh/p/10989656.html