Servlet3.0了,使用@WebServlet注解配置真香

在Servlet3.0之前,需要编写web.xml进行servlet的相关配置,初始化参数,路径匹配啥的。

Servlet3.0之后。就可以对其进行简化,不再需要创建web.xml了,而是使用@WebServlet注解进行设置。

@WebServlet官方介绍

关于该注解,官方文档解释的十分清楚,这里搬运一波:Annotation Type WebServlet

大概意思如下:

这是一个用来声明Servlet配置的注解。

如果name属性没有定义,那么将使用类的全类名,如:com.my.MyServlet。

该注解中必须声明value或者urlPattern属性,必须有一个,但不能同时出现。

如果URL pattern是唯一的,则使用value,否则就使用urlPattern属性。

//官方示例
@WebServlet("/path")} //“value=”可以省略不写
public class TestServlet extends HttpServlet ... {
@WebServlet(name="TestServlet", urlPatterns={"/path", "/alt"})//多个pattern
public class TestServlet extends HttpServlet ... {

注解的类必须继承HttpServlet。

ps:可以发现,javax.servlet.annotation包下还有其他的注解如:WebFilterWebListener等,以后遇到的时候,可以去搜寻使用方法,大差不差。

@WebServlet具体细节

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface WebServlet {
    String name() default "";//等价于<servlet-name>,没有显示指定则为全类名

    String[] value() default {};//等价于<url-pattern>,用于单一匹配,可以省略

    String[] urlPatterns() default {};//等价于<url-pattern>,用于多匹配

    int loadOnStartup() default -1;//等价于 <load-on-startup>,指定加载顺序

    WebInitParam[] initParams() default {};//等价于<init-param>,指定初始化参数

    boolean asyncSupported() default false;//等价于<async-supported>,异步支持

    String smallIcon() default "";//等价于<small-icon>,指向16px*16px小图标

    String largeIcon() default "";//等价于<large-icon>,指向32px*32px小图标

    String description() default "";//等价于<description>,描述信息

    String displayName() default "";//等价于<display-name>,显示名
}

@WebInitParam注解使用

参考:Annotation Type WebInitParam

这个注解是用来指定为Servlet或者Filter指定初始化参数的。

WebServlet(
    name="TestServlet",
    urlPatterns={"/test"},
    initParams={WebInitParam(name="test", value="true")}
) 
public class TestServlet extends HttpServlet { ...

@WebServlet具体使用

直接看示例,只需要在类上进行注解即可。

package com.my.sconfig;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebInitParam;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Enumeration;

/**
 * @auther Summerday
 */
@WebServlet(
        value = "/ServletConfigDemo2",
        initParams = {
                @WebInitParam(name = "username",value = "summerday"), @WebInitParam(name = "age",value = "18")
        },
        loadOnStartup = 1,
        description = "使用WebServlet注解"
)
public class ServletConfigDemo2 extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //获取ServletConfig对象
        ServletConfig config = this.getServletConfig();
        Enumeration<String> names = config.getInitParameterNames();
        while(names.hasMoreElements()){
            String s = names.nextElement();
            String param = config.getInitParameter(s);
            System.out.println(s+">>>"+param);
        }

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }
}

//输出结果
age>>>18
username>>>summerday

最后如果出现:找不到javax.servlet.jar包的问题,是因为没有导入相关jar包,可以参考https://blog.csdn.net/Sky_QiaoBa_Sum/article/details/104638699

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值