造成javax.servlet.ServletException: Could not resolve view with name的各種原因及解決方法
阿新 • • 發佈:2019-01-22
報錯完成資訊:
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點原因
1. IDEA預設設定WebRoot目錄錯誤導致
這個原因很好解決,只是針對IDEA使用使用者或者其他編輯工具使用使用者
如圖:
這樣就OK了
2. 打包war釋出檔案路徑問題造成
這個原因有點坑了,不仔細去觀察查詢根本就不容易發現,這樣就導致很多人在本地執行tomcat沒問題,一打包war部署到伺服器就報錯找不到檢視
如圖:
這是打包的war包,但是一執行起來我們看檢視檔案去哪兒了
而是給我生成到classes資料夾下去了(admin和lose都是我的view資料夾)
好了,看到是這樣導致的,那我們就可以吧這兩個資料夾複製出來到WEB-INF下的view資料夾下了,就解決了問題
3. 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>
4. 控制器程式碼返回檢視的路徑是否正確
檢查返回檢視路徑是否正確,並且不加第3點配置的檢視字尾
@Controller
@RequestMapping("/admin/")
public class AdminController {
@RequestMapping("index")
String index(){
return "/admin/index";//此處路徑是否正確?而且要結合第3點的配置來寫
}
}