上回说到的controller加载静态资源页面是
将资源链接发送到spring-MVC的dispatcher 进行处理返回静态资源,
而这一次是要当controller 进行return 时,要将需访问的静态页面return 给浏览器。
往常return jsp页面时,因为设置过jsp的视图解析器,可以直接return jsp 的名字如下图
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="viewResolver">
<!--<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>-->
<property name="order" value="1"/>
<property name="prefix" value="/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean>
/*返回注册页面*/
@RequestMapping("/register")
public String jump(){
return "index";
}
而之后
当index指的是一个存在于statics文件夹下的html文件下,我们就会发现问题出现了,返回的地址是/jsp/index.jsp。如果我们硬改地址成/statics/index.html 也会变成 /jsp//statics/index.html.jsp
唯一的解法就是增加html的视图解析器
这里我参考了这篇博文:https://blog.csdn.net/dknightl/article/details/80256802
-------------以下是转发------------------------------------
第一步:继承InternalResourceView,写解析类
package com.ssm.hui.util;//这是你的包名 跟
import java.io.File;
import java.util.Locale;
import org.springframework.web.servlet.view.InternalResourceView;
/**
* @author hui
* @date 创建时间:2018年5月9日 下午5:26:55 吴清辉新建
* @version 1.0
**/
public class HtmlResourceView extends InternalResourceView {
@Override
public boolean checkResource(Locale locale) {
File file = new File(this.getServletContext().getRealPath("/") + getUrl());
return file.exists();// 判断该页面是否存在
}
}
第二步:配置xml
<!-- 定义HTML文件的位置 -->
<bean id="htmlviewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="com.ssm.hui.util.HtmlResourceView"/><!-- 改成你自己的第一步新建的解析类路径 -->
<property name="order" value="0" />
<!-- 前缀 -->
<property name="prefix" value="/WEB-INF/content/" />
<property name="suffix" value=".html" />
</bean>
<!-- 定义JSP文件的位置 -->
<bean id="jspViewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
<property name="order" value="1" />
<!-- 前缀 -->
<property name="prefix" value="/WEB-INF/content/" />
<!-- 后缀 -->
<property name="suffix" value=".jsp" />
</bean>
=================以上是 转发=======================
虽然照上面改之后没有报错,但跳转到index页面依然不成功,后来就如上面的代码一样将
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />注释掉并重启了下服务器,就ok了。
对了,property 为 order的是值越大,优先级越低。