Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Spring中为html创建视图解析器?_Java_Spring_Spring Mvc_Model View Controller_Spring Security - Fatal编程技术网

Java 如何在Spring中为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"

当我决定创建一个没有JSP的web应用程序,但只使用web-INF/pages目录下的HTML页面时,我遇到了这个问题

我已经创建了视图解析程序:

<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 infwebcontent

告诉我你有没有多余的东西


谢谢。

最后,我找到了解决办法。也许,任何人都会感兴趣。我拥有的主要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>