玩转springboot之springboot注册servlet

springboot注册servlet

有时候在springboot中依然需要注册servlet,filter,listener,就以servlet为例来进行说明,另外两个也都类似

使用@WebServlet注解

在servlet3.0之后,servlet注册支持注解注册,而不需要在web.xml中进行配置,类似的,对于Filter使用@WebFilter注解,对于Listener使用@WebListener注解

复制代码
@WebServlet(name = "helloWorldServlet",urlPatterns = "/helloWorldServlet",
initParams = {
        @WebInitParam(name = "name",value = "张三")
})
public class HelloWorldServlet extends HttpServlet {

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String name = getServletConfig().getInitParameter("name");
        System.out.println("helloWorldServlet ---- doPost");
        resp.getOutputStream().println(name);
    }
}

使用ServletRegistrationBean

springboot为注册servlet专门提供了一个bean,可以使用该bean进行注册,类似的对于Filter提供了FilterRegistrationBean,对于Listener提供了ServletListenerRegistrationBean

复制代码
@Configuration
public class ServletRegistConfig {

    @Bean
    public ServletRegistrationBean registServlet(){
        ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean();
        // servlet
        servletRegistrationBean.setServlet(new RegistServlet());
        List<String> urlMappings = new ArrayList<>();
        urlMappings.add("/registServlet");
        // 地址映射
        servletRegistrationBean.setUrlMappings(urlMappings);
        // servlet名称
        servletRegistrationBean.setName("registServlet");

        Map<String,String> initMap = new HashMap<>();
        initMap.put("name","李四");
        // servlet的初始参数
        servletRegistrationBean.setInitParameters(initMap);

        return servletRegistrationBean;

    }
}

动态注册

springboot中还提供了动态注册的方式,需要实现ServletContextInitializer接口

复制代码
@Component
public class ServletRegistConfiguration implements ServletContextInitializer {
    @Override
    public void onStartup(ServletContext servletContext) throws ServletException {
        ServletRegistration.Dynamic dynamic = servletContext.addServlet("registServlet", RegistServlet.class);
        // 地址映射
        dynamic.addMapping("/regist");
        // servlet的初始参数
        dynamic.setInitParameter("name","王五");
    }
}

https://zhhll.icu/2021/框架/springboot/基础/11.springboot注册servlet/

本文由mdnice多平台发布

相关推荐
0***R5153 分钟前
SpringBoot集成Elasticsearch实战
java·spring boot·elasticsearch
爱学java的ptt13 分钟前
ThreadLocal细节
java
没有bug.的程序员38 分钟前
JVM 内存模型(JMM):并发的物理基础
java·jvm·spring boot·spring·jmm
毕设源码-郭学长1 小时前
【开题答辩全过程】以 基于SSM框架的线上购物系统设计与实现为例,包含答辩的问题和答案
java·spring boot
信码由缰1 小时前
Java 中的结构化并发模式
java
Q***f6351 小时前
Java数据可视化应用
java·开发语言·信息可视化
一个尚在学习的计算机小白1 小时前
springcache缓存
java·spring·缓存
hygge9991 小时前
synchronized vs CopyOnWrite 系列
java·开发语言·经验分享·面试
用户0304805912631 小时前
前后端数据传输: 利用 Jackson 注解实现 Enum 与 int 的双向映射
java·后端
Rhys..1 小时前
Jenkinsfile保存在项目根目录下的好处
java·开发语言