1. 程式人生 > >SpringMVC 填坑記錄

SpringMVC 填坑記錄

記錄菜鳥的我,在使用springMVC開發過程中所遇到的問題。

【1 ModelAndView物件setViewName()無法得到渲染頁面】
描述:程式碼執能夠執行,而且也不報錯,但是訪問就是渲染不出來setViewName()所指定的jsp頁面。頁面報HTTP Status 404 - 錯誤。

@RequestMapping(value="/index.jsp")
    public ModelAndView handleRequest(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception {
        System.out
.println("handlerequest 被呼叫"); ModelAndView mv=new ModelAndView(); mv.addObject("message", "hello world!"); mv.setViewName("/WEB-INF/pages/index.jsp"); return mv; }

原因:使用日誌記錄log4j,將執行狀態從控制檯輸出(做開發,日誌輸出是一件利器,讓程式執行過程變得“可見”)。可以看到如下資訊

17:34:40,786  WARN PageNotFound:1172
 - No
mapping found for HTTP request with URI [/Suhe/WEB-INF/pages/index.jsp]
- in DispatcherServlet with name 'springmvc'

大體意思是/Suhe/WEB-INF/pages/index.jsp這個url請求,DispatcherServlet(前端請求控制分發器)找不到相應的mapping,其實就是說,伺服器將這個mv.setViewName("/WEB-INF/pages/index.jsp")操作當成了成為了一個http請求,給了DispatcherServlet進行處理。而web.xml中對servlet-mapping

進行了匹配規則的設定,如下,對.jsp結尾了HTTP請求會匹配成功,進行攔截後交給DispatcherServlet分發處理。

<servlet-mapping>
    <servlet-name>springmvc</servlet-name>
    <url-pattern>*.jsp</url-pattern>
</servlet-mapping>

解決辦法:更改url-pattern匹配攔截設定為其他形式,如*.do或則.html 等等,對應的@RequestMapping()也做相應修改即可

【3 Eclipse for javaee中開發web專案,jar包必須放到/WEB-INF/lib資料夾下】

  1. tomcat應用伺服器,它有其自己的類載入器,根據J2EE的規範去%web-project%/WEB-INF/lib的路徑去找相應的lib下的jar檔案
  2. 使用eclipse javaee IDE時,會將WEB-INF/lib中所有的lib自動加入到library中
  3. eclipse工程下的library是用來編譯裡面的src中java檔案的,實際釋出到tomcat時,僅僅只複製了WEB-INF/lib裡面的jar包,所以出現eclipse可以正常編譯但tomcat執行是找不到類
  4. 你現在用TOMCAT做伺服器,那麼需要依賴的JAR包就應該考到WEB-INF/lib中,TOMCAT會自動把它編譯然後放入WEB-INF/classes目錄(當然你src的程式碼編譯以後也會放到這裡),就應該這麼做,這是規定。

當然, 在Eclipse下,把jar包部署到其他資料夾,而不是放在WEB-INF/lib的資料夾下,這樣,部署到伺服器上,可以把這些包關聯上傳到伺服器上,具體要配置專案下的.classpath,在這個檔案下加上需要關聯的jar的路徑就好了
如(我把jar放在根目錄下的lib檔案下,注意,不是WEB-INF/lib的資料夾):

<classpathentry kind="lib" path="lib/acegi-security-1.0.6.jar"/>
<classpathentry kind="lib" path="lib/activation-1.1.jar"/>
<classpathentry kind="lib" path="lib/antlr-2.7.6.jar"/>
<classpathentry kind="lib" path="lib/aopalliance-1.0.jar"/>
<classpathentry kind="lib" path="lib/asm-1.5.3.jar"/>

相關推薦

SpringMVC 記錄

記錄菜鳥的我,在使用springMVC開發過程中所遇到的問題。 【1 ModelAndView物件setViewName()無法得到渲染頁面】 描述:程式碼執能夠執行,而且也不報錯,但是訪問就是渲染不出來setViewName()所指定的jsp頁面。頁面

webapp記錄[更新中]

寬度 api con content ref 效果 capture 鍵盤 來源 網上也有許多的 webapp 填坑記錄了,這幾個月,我在公司正好也做了2個,碰到了一些問題,所以我在這裏記錄一下我所碰到的問題: meta 頭部聲明在開發的時候,剛剛創建 HTML 文件,

2、Flutter 記錄

find warning logs help 既然 報錯 一段時間 lease rect 1、前言 之前寫了一篇文章關於 flutter 初體驗的一篇,https://www.cnblogs.com/niceyoo/p/9240359.html,當時一頓騷操作,然後程序

java記錄

一.The absolute uri: [http://java.sun.com/jsp/jstl/core] cannot be resolved in either web.xml or the jar files deployed with this application 把&nbs

Cocos Creator 微信小遊戲 記錄

本文由本人簡書搬遷至此,並做小幅修改。 環境:(ccc-v1.9.1, wx-v1.02.1804251) 微信小遊戲禁止了動態生成並執行程式碼的功能,window.eval()、 new Function() ,這些都不能用了。 微信小遊戲中window.atob win

微信小程式 記錄

本文由本人簡書搬遷至此,並做小幅修改。 老闆要讓做個小程式,並且很著急。於是邊學邊幹開始做微信小程式。 過程中遇到不少坑,前期時間太緊沒有記錄,後期憑記憶簡單記一下,防止再次入坑。 1.開發工具中,本地資原始檔名(資料夾路徑未測)對大小寫不敏感,拼錯仍然能正確顯示,但在真機上敏感,拼錯不

在Windows系統下,Jenkins安裝配置過程記錄

一、Jenkins安裝完之後,預設是用本地系統賬戶登入,查了下這個賬戶的名字是LocalSystem,並且這個賬戶沒有密碼 因為是用的本地系統賬戶,導致當前windows的登入賬戶Administrator下的很多配置失效,例如 1、C:\Users\Administ

Dataset 使用記錄

Dataset 使用填坑記錄 Dataset被譽為懶人資料庫(databases for lazy people),是Python操作MySQL的庫。因為其簡單的操作,避開了繁瑣的依賴安裝和連結建立,能夠很快的和資料庫進行互動。但是在使用過程中,遇到了不少的坑,這篇文章旨在記錄使用過

SSM開發中--mybatis踩記錄

首次在實際開發中用到mybatis,所以在開發中遇到了些坑,在這裡記錄下,方便以後檢視。 一、mybatis賦值 MyBatis看到 #{}會認為你在給sql中的變數賦值,就像JDBC程式設計中給問號賦值一樣(自動在前後加單引號)也就是說,他把你傳入的字串並沒有當做多個值

dcloud HTML5+的Android離線打包過程記錄

寫在前面 Android離線打包的原因: 1.即時通訊 2.即時通訊所需要的訊息推送與離線推送 軟體所需 hbuilder+android studio hbuilder注意事項 1.工程檔案npm run build打包的dist檔案單獨提出來為一個獨立的檔

《elasticSearch的記錄

一、Springboot整合elasticSearch的過程 1、新增依賴     <!-- Spring Boot Elasticsearch 依賴 -->         <d

Retrofit 請求失敗問題記錄

本文主要列舉一些遇到的retrofit 請求的問題,作為記錄。 關於Retrofit的註解介紹可移步另一篇文章總結:Retrofit 2.0全部註解及注意事項 文章目錄 問題一:@Field parameters can only be used with

Android WebView記錄

前言        在應用程式開發過程中,經常會採用webview來展現某些介面,這樣就可以不受釋出版本控制,實時更新,遇到問題可以快速修復。        但是在Android開發中,由於android版本分化嚴重,每一個版本針對webview都有部分更改,因此在開發過程中會遇到各種各樣的坑,因此在此總

Web前端記錄(持續更新)

1:android上 如果內容超出容器,overflow-x 無效,必須將容器設定成fixed才行 2:android 上可滑動的區域,在ios上不一定好用,有時無法滑動,新增一下-webkit

Kaldi編譯安裝過程記錄-2017.1.10

Centos7下安裝記錄 1.安裝步驟按照kaldi source code路徑下的install和readme配置安裝即可。需要配置好網路連線,需要能夠訪問國外網站。 2. gcc版本不能為gcc4.8.1和gcc4.8.2. 否則安裝會報錯,重新選擇

React-Native 記錄

最近在弄一個app的框架的調研,小公司,希望的學習成本低的框架,最後選擇react-native。框架很厲害:Facebook開源,這個框架的家世還是可以的。相容android,ios。支援ws,xmlhttprequest,fetch。有很多豐富的第三方UI庫,antd-m

初裝Ubuntu(16.04+18.04)遇記錄

本篇主要記錄作者在初裝Ubuntu(Ubuntu16.04/18.04+Win10雙系統)時遇到的各種問題和解決方法,日後會不斷的更新。 1.Windows和Ubuntu時間不同步問題 表現:如果啟動Ubuntu,返回Windows的時候時間是不對的。 解決方法

Mac High Sierra 編譯Android7.1,8.1原始碼記錄

在這裡記錄一下在Mac High Sierra編譯Android7.1以後原始碼出現的坑以及解決方法. 坑1: 編譯Android 7.1出現 [ 1% 629/33105] Yacc: aidl <= system/tools/aidl/

記錄

坑多是自己對背後原理的理解有限,記錄下來避免再次入坑,也是記錄自己待突破點。 1.多Module下ButterKnife配置坑 坑點:在子Module中的build.gradle中添加了ButterKnife的依賴,執行時發現,獲取的控制元件為null,得到

Android Studio 升級3.0 ,記錄

Android Studio的自帶Gradle版本是4.1,外掛版本是3.0.0,所以如果你使用的是老版本,就會出現一些小的相容問題,我們看看報了哪些錯誤呢:問題1Error:(72, 0) Cannot set the value of read-only property