- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在我的项目中有一个 SiteMeshFilter 的工作实现,但是自从转向扩展 AbstractAnnotationConfigDispatcherServletInitializer 而不是 WebApplicationInitializer 之后,我的 sitemesh 过滤器就没有被使用。
我一直在努力理解以下有关 Spring 安全的教程 http://blog.springsource.org/2013/07/03/spring-security-java-config-preview-web-security/和 http://tux2323.blogspot.co.uk/
不确定是安全性问题还是我以某种方式错误配置了初始化程序/调度程序....
旧配置(扩展 WebApplicationInitializer):
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
AnnotationConfigWebApplicationContext applicationContext = new AnnotationConfigWebApplicationContext();
ServletRegistration.Dynamic dispatcher = servletContext.addServlet("yhj dispatcher", new DispatcherServlet(applicationContext));
dispatcher.addMapping("/");
dispatcher.setLoadOnStartup(1);
servletContext.addFilter("sitemeshFilter", new SitemeshFilter()).addMappingForUrlPatterns(null, false, "/*");
applicationContext.register(MvcConfiguration.class);
}
新配置(扩展 AbstractAnnotationConfigDispatcherServletInitializer):
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
super.onStartup(servletContext);
}
@Override
protected String[] getServletMappings() {
return new String[] {"/"};
}
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class<?>[] {SecurityConfig.class};
}
@Override
protected Filter[] getServletFilters() {
return new Filter[]{new SitemeshFilter(), new DelegatingFilterProxy("springSecurityFilterChain") };
}
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class<?>[] {MvcConfiguration.class, PersistanceConfig.class};
}
其他配置类/SitemeshFilter 没有改变,所以我很高兴他们没问题。事实上,当我访问该站点时,我得到了一个完整的页面,其中包含来自数据库的数据,但它根本没有被 Sitemesh 设计过。可能没有命中 sitemesh 过滤器?
SitemeshFilter.java:
public class SitemeshFilter extends ConfigurableSiteMeshFilter {
@Override
protected void applyCustomConfiguration(SiteMeshFilterBuilder builder) {
builder.setMimeTypes("text/html", "application/xhtml+xml");
builder.addDecoratorPath("/*", "/WEB-INF/templates/page.jsp");
}
}
最佳答案
我看到了三个应该解决的问题:
首先,在新配置中,SitemeshFilter 被注册为仅适用于由 DispatcherServlet 处理的与每个 URL 相关的请求。为了匹配原始配置,我将更新您的 SitemeshFilter 以处理每个 URL。
其二是你原来的配置没有提到Spring Security。如果我的反馈没有帮助,也许您可以详细说明您之前是如何执行此操作的(并提供相关配置...即 web.xml)。
我建议您确保将 springSecurityFilterChain 应用于每个 URL,而不是仅应用于由 DispatcherServlet 处理的 URL。
进行以下更改应该可以解决以上所有问题:
先去掉getServletFilters()
接下来创建一个类似于以下代码的类:
public class SecurityWebApplicationInitializer
extends AbstractSecurityWebApplicationInitializer {
protected void afterSpringSecurityFilterChain(ServletContext servletContext) {
insertFilters(servletContext, new SitmeshFilter());
}
}
关于spring-mvc - 我应该如何将自定义 SiteMeshFilter 与 Spring 的 AbstractAnnotationConfigDispatcherServletInitializer 的实现一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18024999/
我知道我可以通过这种方式向两个调度程序 servlet 写入一个根上下文: @覆盖public void onStartup(ServletContext servletContext) 抛出 Ser
我正在尝试为我的基于 Spring 3.2.8 的纯 Java 配置应用程序添加安全性。我正在按照说明 http://docs.spring.io/spring-security/site/docs/
我在将 CommonsMultipartResolver bean 与扩展 AbstractAnnotationConfigDispatcherServletInitializer 的初始化器结合使用
我正在尝试配置 spring maven 多模块项目。我有two调度程序 Servlet(例如 Foo {Module A}、Bar {Module B})位于两个子 web 模块中。我想做的就是配置
出于某种原因,maven 没有构建 AbstractAnnotationConfigDispatcherServletInitializer 类。下面是我的 pom.xml 的相关部分,其中包含必要的
问题是:我可以成功注册过滤器,但不知道如何使用此特定配置设置映射 URL。 这是我的类(class): public class WebInitializer extends Abst
我正在使用 Jetty 9.1.0.RC2 和 Spring 4。 有一个 AbstractAnnotationConfigDispatcherServletInitializer并尝试启动初始化:
我正在使用 Spring 4.0.7 我做了一个关于通过 JavaConfig 配置 Spring MVC 的研究。 实际上直到昨天我才看到使用这两个选项的两种配置 扩展 AbstractAnnota
我正在使用 AbstractAnnotationConfigDispatcherServletInitializer配置我的网络应用程序。我也有一个 @Configuration我用来创建一些 bea
我从 Spring Boot 项目中找到了“TomcatEmbeddedServletContainerFactory”,它可以创建一个 Tomcat 嵌入式实例。我已经有一组“传统的”Spring(
在扩展类 AbstractAnnotationConfigDispatcherServletInitializer 时,您将如何设置“事件配置文件”属性? 最佳答案 根据您要设置的上下文的配置文件,一
每个函数的目的是什么。为什么spring给配置类赋予了两种不同的功能?我对两者感到困惑,我应该使用哪一个? 最佳答案 在典型的 Spring 应用程序中,有 2 ApplicationContext例
我正在使用没有 XML 配置的 Spring 3.2.5。我正在使用 AbstractAnnotationConfigDispatcherServletInitializer 来初始化我的应用程序,并
我有一个基于纯 Java 配置的 Spring 3.2 应用程序。当我使用“mvn jetty:run”启动应用程序时,一切正常。但是当我在 Jetty(9.0.2) 或 Tomcat(7.0) 中部
getServletConfigClasses() 与 getRootConfigClasses() 有什么区别AbstractAnnotationConfigDispatcherServletIni
我目前正在尝试对 spring 和我的 Java Web Servlet 使用新的基于 Java 的注释配置。我目前在 servlet 本身内部使用 @Autowired 注释时遇到问题,但我不确定这
我在 Spring 上有一个应用程序并使用 Java Configs 来配置和初始化我的应用程序,所以我没有 web.xml .这是我的网络初始化器的样子, public class WebIniti
我使用 Spring 工具套件创建了一个 Spring MVC web 应用程序,我正在尝试创建此类,但是当我执行 import 时,我收到此错误: The import org.springfram
我正在尝试实现自定义 Controller 来处理自定义存储库中定义的方法,以便能够使用此方法通过 REST 公开资源(根据 Implementing custom methods of Spring
我在我的项目中有一个 SiteMeshFilter 的工作实现,但是自从转向扩展 AbstractAnnotationConfigDispatcherServletInitializer 而不是 We
我是一名优秀的程序员,十分优秀!