springboot如何初始化自定义的servlet

jelly_oy 发布于 2017/11/13 11:29
阅读 2K+
收藏 0

我写了一个自定义的MyServlet

public class MyServlet extends HttpServlet{

      public void init(ServletConfig config){

            //接受2个初始化参数,执行一些初始化操作

            ...............
      }

}

然后写了一个springboot 自定义 Config类

@Configuration
public class MyConfig {
    @Value("${param1}")
    private String param1;

    @Value("${param2}")
    private String param2;

    @Bean
    public ServletRegistrationBean myServlet() {
        ServletRegistrationBean reg = new ServletRegistrationBean();
        reg.setServlet(new MyServlet());
        reg.addInitParameter("param1", param1);
        reg.addInitParameter("param2", param2);
        return reg;
    }
}

我现在遇到的问题是:MyServletinit方法始终不执行,

请教各位大侠,这种自定义的servlet,springboot如何对其进行初始化?

加载中
0
f
freezingsky

http://blog.csdn.net/catoop/article/details/50501686 照着它弄

0
jelly_oy
jelly_oy

引用来自“freezingsky”的评论

http://blog.csdn.net/catoop/article/details/50501686 照着它弄

@freezingsky  这个帖子我之前看过,并没有解决我的问题,

在@ServletComponentScan,@WebServlet 2个注解的联合使用下,

我的MyServlet的 init 初始化方法依然不执行,麻烦高手指导指导啊

0
yysf
yysf

你这个servlet可以访问吗?在没有访问servlet对应的路径是不会调用init方法的。尝试访问一次

0
jelly_oy
jelly_oy

@yysf

按照大侠的建议,我给servlet配置了UrlMappings,如下:

ServletRegistrationBean reg = new ServletRegistrationBean();
reg.setServlet(new MyServlet());
reg.addUrlMappings("/xx/myServlet");

reg.addInitParameter("param1", param1);
reg.addInitParameter("param2", param2);

启动springboot应用,访问如下地址: http://localhost:8080/boot/xx/myServlet

代码跟踪终于进入了 MyServlet的 init 方法,但是又报了一个错:

java.lang.IllegalStateException: ServletConfig has not been initialized

MyServlet init方法如下:

public void init(ServletConfig config) throws ServletException {

        //获取一些初始化参数

}

不知道到底是什么原因,请大侠帮忙指导下,多谢了

jelly_oy
jelly_oy
回复 @yysf : public void init(ServletConfig config) throws ServletException { String param1 = getInitParameter("param1"); String param2 = getInitParameter("param2"); ... } 就只获取初始化参数,没有别的业务逻辑
yysf
yysf
你的init里面是不是有什么业务逻辑,把init方法注释掉再试试
返回顶部
顶部