servlet的2种配置方式
- 第一:在web.xml配置
- 第二:使用@WebServlet注解。(常用)
1.web.xml与servlet
- <servlet-name>:自定义的servlet的别名
- <servlet-class>:指定该类的全限定类名
- <init-param>:定义初始化信息
- <param-name>:初始化数据名
- <param-value>:初始化数据值
- 每个<init-param>只能有一对初始化数据段
- <welcom-file-list>:欢迎列表
- <welcome-file>:一条欢迎页面数据
- <servlet-mapping>:映射配置
- <servlet-name>:要设置映射的servlet的名称
- <url-pattern>:映射地址
- <load-on-startup>:指定该servlet的加载顺序
- <async-supported>:声明servlet是否支持异步操作模式
- <display-name>:自定义servlet的描述名称
- <description>:指定该servelt的描述信息
若配置 servlet 标签错误,应该查看 web.xml 是否3.0版本,可拷贝如下内容
<web-app 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"
version="3.0">
</web-app>
2.@WebServlet注解的使用详解
//只写一个值,就是value的值,而默认的name为该类的全限定类名,
//比如在test/Demo.java中的默认的name值为test.Demo
@WebServlet("/Servlet")
//写2个值,可以把name和value赋予不同的值
@WebServlet(value = "/Servlet",name = "test")
/同一个注解属性/多个值?使用大括号,并使用逗号分隔
@WebServlet({"/Servlet2", "/dd", "/dd2"})
//该注解的更多属性,请参考下表各属性的意义
name | String | 指定Servlet 的 name 属性,等价于 <servlet-name> 。如果没有显式指定,则该 Servlet 的取值即为该类的全限定类名。 |
value | String[] | 该属性等价于 urlPatterns 属性。两个属性不能同时使用。 |
urlPatterns | String[] | 指定一组 Servlet 的 URL 匹配模式。等价于<url-pattern> 标签。 |
loadOnStartup | int | 指定 Servlet 的加载顺序,等价于 <load-on-startup> 标签。 |
initParams | WebInitParam[] | 指定一组 Servlet 初始化参数,等价于<init-param> 标签。 |
asyncSupported | boolean | 声明 Servlet 是否支持异步操作模式,等价于<async-supported> 标签。 |
description | String | 该 Servlet 的描述信息,等价于 <description> 标签。 |
displayName | String | 该 Servlet 的显示名,通常配合工具使用,等价于 <display-name> 标签。 |
3.@WebInitParam注解
它只有初始化servlet参数这一个功能
属性名 | 类型 | 说明 |
name | String | 指定初始化参数名,等价于<param-name>元素 |
value | String | 指定初始化参数值,等价于<param-value>元素 |
description | String | 关于初始化参数的描述,等价于<description>元素 |
4. 配置 idea 之 servlet 模板
点击右键新建文件, 在此界面中有快速 edit Templates, 找到 Other->Web->Java Code ->Servlet Annotated, 然后把代码改成如下即可
#if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end
#parse("File Header.java")
@javax.servlet.annotation.WebServlet(name = "${Entity_Name}", urlPatterns="/${Entity_Name}")
public class ${Class_Name} extends javax.servlet.http.HttpServlet {
protected void doPost(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, java.io.IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
}
protected void doGet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, java.io.IOException {
request.setCharacterEncoding("utf-8");
}
}