Java 如何在Spring中为html创建视图解析器?
当我决定创建一个没有JSP的web应用程序,但只使用web-INF/pages目录下的HTML页面时,我遇到了这个问题 我已经创建了视图解析程序:Java 如何在Spring中为html创建视图解析器?,java,spring,spring-mvc,model-view-controller,spring-security,Java,Spring,Spring Mvc,Model View Controller,Spring Security,当我决定创建一个没有JSP的web应用程序,但只使用web-INF/pages目录下的HTML页面时,我遇到了这个问题 我已经创建了视图解析程序: <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="WEB-INF/pages/"/> <property name="suffix"
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="WEB-INF/pages/"/>
<property name="suffix" value=""/>
</bean>
它可以很好地映射“/”(如果未经身份验证,则重定向到登录页面),但由于将此页面作为静态资源导入,url“/index.html”不受保护(但如果不导入它,则根本无法工作)。我不知道您为什么要这样做。。。。。因为将页面放在web inf下是错误的做法 此外,容器无法访问web inf文件夹下的静态内容。我也面临着完全相同的问题 我在谷歌上发现,你可以访问web inf文件夹下的动态资源,但不能访问静态资源。我甚至尝试过在第一时间将所有静态内容(如css、js、html等)以xml的形式重新绑定,但没有任何效果。最后,我把我的页面移出,它在没有配置的情况下工作 因此,请尝试将资源移出web inf和webcontent 告诉我你有没有多余的东西
谢谢。最后,我找到了解决办法。也许,任何人都会感兴趣。我拥有的主要servlet映射具有url模式:/** 这就是我的问题。据我所知,主servlet在某种程度上拦截了viewResolver,即使它有这样的配置:
当我将servlet make的配置作为下一个配置时:
<servlet-mapping>
<servlet-name>main</servlet-name>
<url-pattern>/app/*</url-pattern>
</servlet-mapping>
主要的
/应用程序/*
一切都正常。app模式(或类似模式)帮助我们区分Dispatcher-Servlet服务的内容和其他类型的内容。但是,我们在URL中公开了一个实现细节(特别是/app路径)。这导致了复杂的URL重写策略,以隐藏/app路径。Spring in Action第三版第192页实际上,将仅用作视图的文件放在WEB-INF下是一种很好的做法,以避免直接访问
@PreAuthorize("isAuthenticated()")
@RequestMapping("/")
public String indexPage() {
return "redirect:/index.html";
}
<servlet-mapping>
<servlet-name>main</servlet-name>
<url-pattern>/app/*</url-pattern>
</servlet-mapping>