Servlet系列:两种创建方式(xml、注解)

[TOC]

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

web.xml



  java-servlet-demo02
  
  
    
    WebXmlServlet
    
    com.mcode.servlet.controller.WebXmlServlet
    
    1
  
  
  
    
    WebXmlServlet
    
    /webxml
  

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");
    }
}

效果图

Servlet系列:两种创建方式(xml、注解)_第1张图片

url-pattern匹配规则

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

load-on-startup说明

  1. 元素标记容器是否应该在web应用程序启动的时候就加载这个 servlet
  2. 它的值必须是一个整数,表示 servlet被加载的先后顺序
  3. 如果该元素的值为负数或者没有设置,则容器会当serv1et被请求时再加载
  4. 如果值为正整数或者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");
    }
}

效果图

Servlet系列:两种创建方式(xml、注解)_第2张图片

@WebServlet注解

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

属性名 类名 属性描述
name String 指定servlet的name属性,等价于,若没有指定,则默认是类的全限定名
value String[] 等价于urlPatterns,两者不能共存
urlPatterns String[] 指定一组servlet的url的匹配模式,等价于
loadOnStartup int 指定servlet的加载顺序,等价于
initParams WebinitParams[] 指定一组初始化参数,等价于
asyncSupported boolean 申明servlet是否支持异步操作模式,等价于
displayName String servlet的显示名,等价于
description String servlet的描述信息,等价于

@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 取值不能相同,否则容器会忽略注解中的配置。

本文由mdnice多平台发布

你可能感兴趣的:(后端)