如何在Spring中为html创建视图解析器?

时间:2014-01-10 08:51:29

标签: java spring spring-mvc model-view-controller spring-security

我决定创建一个没有JSP的web-app,但只使用位于WEB-INF / pages目录下的HTML页面,我遇到了这个问题。

我已经制作了视图解析器:

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="WEB-INF/pages/"/>
    <property name="suffix" value=""/>
</bean>

我还导入了WEB-INF / pages中的所有资源:

<mvc:resources mapping="/**" location="WEB-INF/pages/"/>

我的控制器有以下视图:

@PreAuthorize("isAuthenticated()")
@RequestMapping("/")
public String indexPage() {
    return "redirect:/index.html";
}

它适用于映射“/”(如果未经过身份验证,则重定向到登录页面),但由于将此页面作为静态资源导入,因此无法保护url“/index.html”(但它不适用于所有如果不导入它。)

2 个答案:

答案 0 :(得分:3)

最后,我找到了解决方案。也许,任何人都会感兴趣。我有的主要servlet映射,有url-pattern:/ ** 那是我的问题。据我所知,主要的servlet在某种程度上截获了viewResolver,即使它有这样的配置:<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/pages/"/> <property name="suffix" value=".html"/> </bean>

当我将servlet make的配置作为下一个配置时:

  <servlet-mapping>
    <servlet-name>main</servlet-name>
    <url-pattern>/app/*</url-pattern>
</servlet-mapping>
一切都变好了。

答案 1 :(得分:0)

我不知道你为什么要这样做......因为把网页放在web-inf下是一种错误的做法.......

容器也无法访问web-inf文件夹下的静态内容。我遇到了完全相同的问题,请参阅resource problem post

我从google搜索中找到的是你可以访问web-inf文件夹下的动态资源,但不能访问静态资源。我已尝试在第一个地方甚至regestring所有静态内容(即.css,js,html等),但没有任何效果。最后我移出了我的页面,它没有配置....

所以尝试将资源从 web-inf 移到 webcontent

告诉我你是否有一些额外的东西。

感谢。