玩转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多平台发布

相关推荐
木鹅.18 分钟前
LangChain4j
java
永远都不秃头的程序员(互关)32 分钟前
Java核心技术精要:高效实践指南
java·开发语言·性能优化
CoderYanger1 小时前
动态规划算法-子序列问题(数组中不连续的一段):28.摆动序列
java·算法·leetcode·动态规划·1024程序员节
代码栈上的思考1 小时前
深入解析Spring IoC核心与关键注解
java·后端·spring
Mai Dang1 小时前
SpringBoot4用Swagger
java
geekmice2 小时前
实现一个功能:springboot项目启动将controller地址拼接打印到txt文件
java·spring boot·后端
老华带你飞3 小时前
旅游|基于Java旅游信息系统(源码+数据库+文档)
java·开发语言·数据库·vue.js·spring boot·旅游
小石头 100863 小时前
【JavaEE】进程和线程的区别
java·java-ee
oioihoii3 小时前
C++对象生命周期与析构顺序深度解析
java·开发语言·c++