[TOC]
一、应用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。
属性名 | 类名 | 属性形容 |
---|---|---|
name | String | 指定servlet的name属性,等价于<servlet-name> ,若没有指定,则默认是类的全限定名 |
value | String[] | 等价于urlPatterns,两者不能共存 |
urlPatterns | String[] | 指定一组servlet的url的匹配模式,等价于<url-pattern> |
loadOnStartup | int | 指定servlet的加载程序,等价于<load-on-startup> |
initParams | WebinitParams[] | 指定一组初始化参数,等价于<init-params> |
asyncSupported | boolean | 申明servlet是否反对异步操作模式,等价于<async-supported> |
displayName | String | servlet的显示名,等价于<display-name> |
description | String | servlet的形容信息,等价于<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 取值不能雷同,否则容器会疏忽注解中的配置。
本文由mdnice多平台公布