当前位置: java基础教程 > 22-servlet框架 > 阅读正文

web.xml与注解

2021.3.17.   713 次   2440字

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"})
//该注解的更多属性,请参考下表各属性的意义
nameString指定Servlet 的 name 属性,等价于 <servlet-name>。如果没有显式指定,则该 Servlet 的取值即为该类的全限定类名。
valueString[]该属性等价于 urlPatterns 属性。两个属性不能同时使用。
urlPatternsString[]指定一组 Servlet 的 URL 匹配模式。等价于<url-pattern>标签。
loadOnStartupint指定 Servlet 的加载顺序,等价于 <load-on-startup>标签。
initParamsWebInitParam[]指定一组 Servlet 初始化参数,等价于<init-param>标签。
asyncSupportedboolean声明 Servlet 是否支持异步操作模式,等价于<async-supported> 标签。
descriptionString该 Servlet 的描述信息,等价于 <description>标签。
displayNameString该 Servlet 的显示名,通常配合工具使用,等价于 <display-name>标签。
3.@WebInitParam注解

它只有初始化servlet参数这一个功能

属性名类型说明
nameString指定初始化参数名,等价于<param-name>元素
valueString指定初始化参数值,等价于<param-value>元素
descriptionString关于初始化参数的描述,等价于<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");
    }
}

本篇完,还有疑问?

加入QQ交流群:11500065636 IT 技术交流群