造成javax.servlet.ServletException: Could not resolve view with name的各种原因及解决方法
报错完成信息:
javax.servlet.ServletException: Could not resolve view with name '/lose/index' in servlet with name 'SpringMVC'
注:蓝色部分根据你的实际情况而定
不管什么原因:都是因为spring找不到解析的视图文件了
造成原因如下:
- IDEA默认设置WebRoot目录错误导致
- 打包war发布文件路径问题造成
- spring mvc解析视图路径问题
- 控制器代码返回视图的路径是否正确
解决方法如下,对应上面1 2 3 4点原因
- IDEA默认设置WebRoot目录错误导致
这个原因很好解决,只是针对IDEA使用用户或者其他编辑工具使用用户
如图:
这样就OK了
- 打包war发布文件路径问题造成
这个原因有点坑了,不仔细去观察查找根本就不容易发现,这样就导致很多人在本地运行tomcat没问题,一打包war部署到服务器就报错找不到视图
如图:
这是打包的war包,但是一运行起来我们看视图文件去哪儿了
而是给我生成到classes文件夹下去了(admin和lose都是我的view文件夹)
好了,看到是这样导致的,那我们就可以吧这两个文件夹复制出来到WEB-INF下的view文件夹下了,就解决了问题
- spring mvc解析视图路径问题
spring mvc视图解析路径要确认正确,写错了路径会找不到视图,就会报错(注:我用的不是jsp视图模板,而是beetl,类似)
<bean id="beetlConfig" class="org.beetl.ext.spring.BeetlGroupUtilConfiguration" init-method="init">
<property name="root" value="/WEB-INF/view"/>
</bean>
<bean id="viewResolver" class="org.beetl.ext.spring.BeetlSpringViewResolver">
<property name="contentType" value="text/html;charset=UTF-8"/>
<property name="suffix" value=".html"/>
</bean>
- 控制器代码返回视图的路径是否正确
检查返回视图路径是否正确,并且不加第3点配置的视图后缀
@Controller
@RequestMapping("/admin/")
public class AdminController {
@RequestMapping("index")
String index(){
return "/admin/index";//此处路径是否正确?而且要结合第3点的配置来写
}
}
还没有评论,来说两句吧...