如何添加一个没有-xml配置的RequestContextListener?
How to add a RequestContextListener with no-xml configuration?
我需要为我的 Spring 引导应用程序添加一个侦听器,在 web.xml 中它看起来像
<listener>
<listener-class>
org.springframework.web.context.request.RequestContextListener
</listener-class>
</listener>
我没有使用-web.xml配置,所以我有一个class像
public class AppFilterConfig extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Filter[] getServletFilters() {
CharacterEncodingFilter filter = new CharacterEncodingFilter();
filter.setEncoding("UTF8");
filter.setForceEncoding(true);
Filter[] filters = new Filter[1];
filters[0] = filter;
return filters;
}
private int maxUploadSizeInMb = 5 * 1024 * 1024; // 5 MB
@Override
protected Class<?>[] getRootConfigClasses() {
return null;
}
@Override
protected Class<?>[] getServletConfigClasses() {
return null;
}
@Override
protected String[] getServletMappings() {
return new String[]{"/"};
}
@Override
protected void registerDispatcherServlet(ServletContext servletContext) {
super.registerDispatcherServlet(servletContext);
servletContext.addListener(new HttpSessionEventPublisher());
}
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
super.onStartup(servletContext);
servletContext.addListener(new RequestContextListener());
}
}
从上面的代码可以看出,我已经为 onStartup(ServletContext servletContext) 方法添加了一个侦听器,但这并没有帮助,因为我仍然得到
In this case, use RequestContextListener or RequestContextFilter to expose the current request.
这条消息。如何正确地将侦听器添加到我的 Spring 启动应用程序?
编写您自己的侦听器 class,它从 RequestContextListener
扩展并通过注解注册。像这样:
@WebListener
public class MyRequestContextListener extends RequestContextListener {
}
我创建了这个 class 并解决了我的问题。
@Configuration
@WebListener
public class MyRequestContextListener extends RequestContextListener {
}
我需要为我的 Spring 引导应用程序添加一个侦听器,在 web.xml 中它看起来像
<listener>
<listener-class>
org.springframework.web.context.request.RequestContextListener
</listener-class>
</listener>
我没有使用-web.xml配置,所以我有一个class像
public class AppFilterConfig extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Filter[] getServletFilters() {
CharacterEncodingFilter filter = new CharacterEncodingFilter();
filter.setEncoding("UTF8");
filter.setForceEncoding(true);
Filter[] filters = new Filter[1];
filters[0] = filter;
return filters;
}
private int maxUploadSizeInMb = 5 * 1024 * 1024; // 5 MB
@Override
protected Class<?>[] getRootConfigClasses() {
return null;
}
@Override
protected Class<?>[] getServletConfigClasses() {
return null;
}
@Override
protected String[] getServletMappings() {
return new String[]{"/"};
}
@Override
protected void registerDispatcherServlet(ServletContext servletContext) {
super.registerDispatcherServlet(servletContext);
servletContext.addListener(new HttpSessionEventPublisher());
}
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
super.onStartup(servletContext);
servletContext.addListener(new RequestContextListener());
}
}
从上面的代码可以看出,我已经为 onStartup(ServletContext servletContext) 方法添加了一个侦听器,但这并没有帮助,因为我仍然得到
In this case, use RequestContextListener or RequestContextFilter to expose the current request.
这条消息。如何正确地将侦听器添加到我的 Spring 启动应用程序?
编写您自己的侦听器 class,它从 RequestContextListener
扩展并通过注解注册。像这样:
@WebListener
public class MyRequestContextListener extends RequestContextListener {
}
我创建了这个 class 并解决了我的问题。
@Configuration
@WebListener
public class MyRequestContextListener extends RequestContextListener {
}