我在我的项目中有一个SiteMeshFilter的工作实现,但是由于移动到扩展AbstractAnnotationConfigDispatcherServletInitializer而不是WebApplicationInitializer,我的sitemesh过滤器没有被使用。我应该如何使用Spring的AbstractAnnotationConfigDispatcherServletInitializer实现自定义SiteMeshFilter?
我一直在试图了解在春季安全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");
}
}
三江源花时间回应。我已经实施了建议的更改,但Sitemesh仍未添加其装饰。 我已将SitemeshFilter代码添加到该问题以供参考。 – DaFoot
Spring Security在破解之前是如何应用的?你能包括这个设置吗?如果你没有使用Spring Security,它会起作用吗? –
我没有,我正在尝试增加安全性。这似乎是在工作,我被拒绝访问一些URL定义,但Freemarker模板没有任何样式。 – DaFoot