Servlet的两种创建方式(xml 注解)示例详解

 更新时间:2023年08月31日 14:22:04   作者:Code技术分享  
这篇文章主要为大家介绍了Servlet的两种创建方式(xml 注解)示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

一、使用web.xml的方式配置(Servlet2.5之前使用)

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
        http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" id="WebApp_ID" version="4.0">
  <display-name>java-servlet-demo02</display-name>
  <!-- servlet配置 -->
  <servlet>
    <!-- 名称 -->
    <servlet-name>WebXmlServlet</servlet-name>
    <!-- servlet全称类名 -->
    <servlet-class>com.mcode.servlet.controller.WebXmlServlet</servlet-class>
    <!-- 启动的优先级,数字越小越先起作用 -->
    <load-on-startup>1</load-on-startup>
  </servlet>
  <!-- 映射配置 -->
  <servlet-mapping>
    <!-- 对应名称 -->
    <servlet-name>WebXmlServlet</servlet-name>
    <!-- 资源匹配规则:精确匹配 -->
    <url-pattern>/webxml</url-pattern>
  </servlet-mapping>
</web-app>

WebXmlServlet

package com.mcode.servlet.controller;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
 * ClassName: WebXmlServlet
 * Package: com.mcode.servlet.controller
 * Description:
 *
 * @Author robin
 * @Create 2023/8/30 20:49
 * @Version 1.0
 */
public class WebXmlServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //设置编码方式
        resp.setCharacterEncoding("UTF-8");
        //指定客户端解码方式
        resp.setHeader("content-type", "text/html;charset=UTF-8");
        //输出
        resp.getWriter().write("基于webxml方式配置的servlet");
    }
}

效果图

url-pattern匹配规则

匹配规则取值说明
精确匹配/具体的名称只有url路径是具体的名称的时候才会触发 Servlet
后缀匹配*.xxx只要是以xxx结尾的就匹配触发Servlet
通配符匹配/*匹配所有请求,包含服务器的所有资源
通配符匹配/匹配所有请求,包含服务器的所有资源,不包括.jsp

load-on-startup说明

  • 元素标记容器是否应该在web应用程序启动的时候就加载这个 servlet
  • 它的值必须是一个整数,表示 servlet被加载的先后顺序
  • 如果该元素的值为负数或者没有设置,则容器会当serv1et被请求时再加载
  • 如果值为正整数或者0时,表示容器在应用启动时就加载并初始化这个 servlet,值越小, servlet的优先级越高,就越先被加载。值相同时,容器就会自己选择顺序来加载

二、使用注解的方式配置(Servlet3.0后支持,推荐)

AnnotationServlet

package com.mcode.servlet.controller;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
 * ClassName: AnnotationServlet
 * Package: com.mcode.servlet.controller
 * Description:
 *
 * @Author robin
 * @Create 2023/8/30 20:51
 * @Version 1.0
 */
@WebServlet("/annotation")
public class AnnotationServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //设置编码方式
        resp.setCharacterEncoding("UTF-8");
        //指定客户端解码方式
        resp.setHeader("content-type", "text/html;charset=UTF-8");
        //输出
        resp.getWriter().write("基于注解方式配置的servlet");
    }
}

效果图

@WebServlet注解

属性:下面是一些常用属性,value和url一般是必须的,但是二者不能共存,若同时指定,一般自动忽略value。

属性名类名属性描述
nameString指定servlet的name属性,等价于<servlet-name>,若没有指定,则默认是类的全限定名
valueString[]等价于urlPatterns,两者不能共存
urlPatternsString[]指定一组servlet的url的匹配模式,等价于<url-pattern>
loadOnStartupint指定servlet的加载顺序,等价于<load-on-startup>
initParamsWebinitParams[]指定一组初始化参数,等价于<init-params>
asyncSupportedboolean申明servlet是否支持异步操作模式,等价于<async-supported>
displayNameStringservlet的显示名,等价于<display-name>
descriptionStringservlet的描述信息,等价于<description>

@WebServlet 属于类级别的注解,标注在继承了 HttpServlet 的类之上。常用的写法是将 Servlet 的相对请求路径(即 value)直接写在注解内,

@WebServlet(urlPatterns = “/MyServlet”)。

@WebServlet(“/MyServlet”) 省略了 urlPatterns 属性名

如果 @WebServlet 中需要设置多个属性,则属性之间必须使用逗号隔开.

通过实现 Serlvet 接口或继承 GenericServlet 创建的 Servlet 类无法使用 @WebServlet 注解。

使用 @WebServlet 注解配置的 Servlet 类,不要在 web.xml 文件中再次配置该 Servlet 相关属性。若同时使用 web.xml 与 @WebServlet 配置同一 Servlet 类,则 web.xml 中 的值与注解中 name 取值不能相同,否则容器会忽略注解中的配置。

以上就是Servlet的两种创建方式(xml 注解)示例详解的详细内容,更多关于Servlet创建方式的资料请关注脚本之家其它相关文章!

相关文章

  • java pdf加水印的方法

    java pdf加水印的方法

    这篇文章主要为大家详细介绍了java pdf加水印的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-08-08
  • Java--SSH,SSM和Spring Boot框架区别及优缺点说明

    Java--SSH,SSM和Spring Boot框架区别及优缺点说明

    这篇文章主要介绍了Java--SSH,SSM和Spring Boot框架区别及优缺点说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • Java杂谈之类和对象 封装 构造方法以及代码块详解

    Java杂谈之类和对象 封装 构造方法以及代码块详解

    在现实世界中,真实存在的东西,比如吉普车,卡丁车,货车。我们在认识它的时候就会在脑海中将它抽象为一种类别叫做车。 好了,那再计算机世界中,它同样的也会这样做
    2021-09-09
  • 你不知道的 IDEA Debug调试小技巧(小结)

    你不知道的 IDEA Debug调试小技巧(小结)

    这篇文章主要介绍了你不知道的 IDEA Debug调试小技巧(小结),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • Java建造者模式构建复杂对象的最佳实践

    Java建造者模式构建复杂对象的最佳实践

    建造者模式,是一种对象构建模式 它可以将复杂对象的建造过程抽象出来,使这个抽象过程的不同实现方法可以构造出不同表现的对象。本文将通过示例讲解建造者模式,需要的可以参考一下
    2023-04-04
  • mybatis多个plugins的执行顺序解析

    mybatis多个plugins的执行顺序解析

    这篇文章主要介绍了mybatis多个plugins的执行顺序解析,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • 基于SpringBoot和Vue实现头像上传与回显功能

    基于SpringBoot和Vue实现头像上传与回显功能

    在现代Web应用中,用户个性化体验尤为重要,其中头像上传与回显是一个常见的功能需求,本文将详细介绍如何使用Spring Boot和Vue.js构建一个前后端协同工作的头像上传系统,并实现图片的即时回显,需要的朋友可以参考下
    2024-08-08
  • 一文详解如何使用线程池来优化我们的应用程序

    一文详解如何使用线程池来优化我们的应用程序

    线程池是一种工具,但并不是适用于所有场景。在使用线程池时,我们需要根据应用程序的性质、计算资源的可用性和应用程序的需求进行适当的配置。本文主要介绍了如何使用线程池来优化我们的应用程序,需要的可以参考一下
    2023-04-04
  • MyBatisPlus TypeHandler自定义字段类型转换Handler

    MyBatisPlus TypeHandler自定义字段类型转换Handler

    这篇文章主要为大家介绍了MyBatisPlus TypeHandler自定义字段类型转换Handler示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • java实现python session功能代码实例

    java实现python session功能代码实例

    这篇文章主要介绍了java实现python session功能代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11

最新评论