SpringMVC教程之入門案例及常見問題

SpringMVC是spring的一大組件雏搂,來代替?zhèn)鹘y(tǒng)的servlet。首先要明白SpringMVC的調用過程吞获。

SpringMVC調用過程

image.png

1.客戶發(fā)送request請求localhost:8090/SpringMVC/hello.action
2.請求處理器映射器處理handler(找到匹配的Controller類)
3.返回能夠處理的那個Controller類
4.請求處理器適配器執(zhí)行handler(內部按照匹配規(guī)則執(zhí)行)
5.執(zhí)行handler(Controller-service--dao)
6.將處理結果進行返回羽嫡,返回ModelAndView對象(model表示處理后的數(shù)據(jù) View表示頁面的邏輯名稱hello)
7.將ModelAndView對象返回給前端控制器
8.請求視圖解析器解析View對象(將頁面的邏輯名稱,拼接成一個完整的頁面路徑/WEB-INF/hello.jsp)
9.將完整的頁面路徑再次返回值給前端控制器
10.將model數(shù)據(jù)填充到頁面中的Request域中

Springmvc入門

一叹俏、配置文件方式

1導入相關jar包
image.png
2 web.xml配置前段控制器
   前端控制器實際上就是一個servlet芦鳍,springMVC的前端控制器就是這個DispatcherServlet嚷往。他所在的位置如圖:
image.png

在Web.Xml中配置這個servlet


image.png

這表示所有以”*.action”結尾的請求,都交給DispatcherServlet這個前端控制器柠衅,這個前端控制器不是一個class皮仁,同樣我們可以通過簡單的xml配置就可以讓這個控制器以及其他的處理器映射器,視圖解析器起作用菲宴。

3. 配置springmvc的核心配置文件

SpringMVC核心配置文件命名規(guī)則

Servlet的name+“-servlet.xml”那么這里就是springmvc-servlet.xml


image.png

這個過程也是讓處理器映射器起作用
Spring的核心配置文件已經(jīng)配置好了那個訪問路徑贷祈,需要用那個Controller,下面我們來實現(xiàn)controller

4.實現(xiàn)controller
image.png
5. 配置視圖解析器
image.png

經(jīng)過這五步后就實現(xiàn)了簡單的springmvc的入門喝峦。除了用配置文件的方式外Spring還提供了簡單的通過注釋來實現(xiàn)势誊。

二、注解方式實現(xiàn)

前兩步和配置文件相同愈犹,但在配置springmvc核心配置文件時。需要開啟spring的注解闻丑,不用去新加一個bean來映射url和controller的關系漩怎。

1 2同上
3 開啟springmvc的注解同時配置好視圖解析器
image.png
4.實現(xiàn)controller
image.png

可以直接添加@RequestMapping來說明那個請求用哪個類或哪個方法來處理。

5.注意

@RequestMapping標注在類上表示這個url和子url都在這個類處理嗦嗡,可以用@RequestMapping來標注類和類中的方法

比如:

@RequestMapping(/user)
public class Usercontroller{
    @RequestMapping(/users)//表示只有url=“/user/users”時交給這個方法來處理
    public String list(Model model){
        model.addAttribute(“user”,user);
        return “user/list”
}
}

@RequestMapping(/user)
public class Usercontroller{
    @RequestMapping(/users)//表示只有url=“/user/users”時交給這個方法來處理
    public String list(Model model){
        model.addAttribute(“user”,user);
        return “user/list”
}
}

三勋锤、怎么獲取頁面參數(shù)

一般情況下springmvc可以直接通過形參來獲取傳遞過來的參數(shù)


image.png

前臺傳遞可以直接get方式?后添加相應參數(shù)侥祭,或者頁面中的name屬性的值應該與接收方法的參數(shù)名稱一致叁执。茄厘,比如


image.png

四.怎么返回給頁面參數(shù)

返回參數(shù)需要用到Springmvc的model對象用法和map一樣,key-value的形式

前臺獲取也直接用map的方式獲取谈宛。

@RequestMapping(/user)
public class Usercontroller{
    @RequestMapping(/users)//表示只有url=“/user/users”時交給這個方法來處理
    public String list(Model model){
        model.addAttribute(“user”,user);//添加返回參數(shù)到response域中
        return “user/list”
}
}

五.幾個常見問題

1,解決中文亂碼問題
<!--解決中文亂碼問題  -->
  <filter>
          <filter-name>characterEncoding</filter-name>
          <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
          <init-param>
                  <param-name>encoding</param-name>
                  <param-value>utf-8</param-value>
          </init-param>
  </filter>
  
  <filter-mapping>
          <filter-name>characterEncoding</filter-name>
          <url-pattern>/*</url-pattern>
  </filter-mapping>
轉發(fā)和重定向
1.轉發(fā):

1.瀏覽器的地址不會發(fā)生改變

2.轉發(fā)能夠攜帶參數(shù)

forward:/toUser.action 轉發(fā)的關鍵字不能錯

關鍵字 url

2.重定向

1.瀏覽器的地址發(fā)生改變

2.重定向不負責傳遞參數(shù)

redirect:/toUser.action

關鍵字 url

3.同名提交問題

如果遇到同名提交問題次哈,那么如果接收參數(shù)為String類型時,那么將會把用戶提交的信息拼接成一個字符串吆录,

如果接收的參數(shù)為數(shù)組時窑滞,那么SpringMVC將會把同名提交自動的賦值到數(shù)組中。


image.png
4.對象封裝參數(shù)

如果參數(shù)個數(shù)較多時恢筝,可以使用對象進行封裝哀卫,頁面中的name屬性的值應該和對象中的屬性保持一致,并且set方法不能省略撬槽,否則不能正確注入

image.png
5.為對象的引用封裝參數(shù)

SpringMVC能夠為對象的引用賦值

  1. name屬性的值


    image.png
  2. set()不能省略

如果想進行賦值此改,必須添加set方法

頁面中的name屬性的值和參數(shù)名稱不匹配
其他屬性值的用法

@RequestParam(value="state",required=true,defaultValue="長不大的成年人")String sta

Value:頁面中的name屬性值

required:如果為true則表示必須傳遞該參數(shù) false表示可以不傳

defaultValue:如果該值為null時,那么會添加默認值

6.日期類型的轉化

如果想轉化日期格式例如 2017-11-11 這時如果不做任何處理那么必然會報400錯誤 400表示 類型匹配錯誤

解決方案:自定義日期格式


image.png
@InitBinder

publicvoid InitBinder (ServletRequestDataBinder binder){

binder.registerCustomEditor(

java.util.Date.class,

newCustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"), true));

}

如果將上述代碼配置到Controller中那么當前的controller任意的方法都能夠實現(xiàn)日期格式的轉化侄柔。

如果其他的Controller也需要進行日期格式的轉化共啃,那么必須添加上述代碼,這時造成了代碼的重復勋拟。

所以勋磕,日期轉化工具通常情況下放到基本類中,別的類繼承即可敢靡。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末挂滓,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子啸胧,更是在濱河造成了極大的恐慌赶站,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,548評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件纺念,死亡現(xiàn)場離奇詭異贝椿,居然都是意外死亡,警方通過查閱死者的電腦和手機陷谱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,497評論 3 399
  • 文/潘曉璐 我一進店門烙博,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人烟逊,你說我怎么就攤上這事渣窜。” “怎么了宪躯?”我有些...
    開封第一講書人閱讀 167,990評論 0 360
  • 文/不壞的土叔 我叫張陵乔宿,是天一觀的道長。 經(jīng)常有香客問我访雪,道長详瑞,這世上最難降的妖魔是什么掂林? 我笑而不...
    開封第一講書人閱讀 59,618評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮坝橡,結果婚禮上泻帮,老公的妹妹穿的比我還像新娘。我一直安慰自己驳庭,他們只是感情好刑顺,可當我...
    茶點故事閱讀 68,618評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著饲常,像睡著了一般蹲堂。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上贝淤,一...
    開封第一講書人閱讀 52,246評論 1 308
  • 那天柒竞,我揣著相機與錄音,去河邊找鬼播聪。 笑死朽基,一個胖子當著我的面吹牛,可吹牛的內容都是我干的离陶。 我是一名探鬼主播稼虎,決...
    沈念sama閱讀 40,819評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼招刨!你這毒婦竟也來了霎俩?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,725評論 0 276
  • 序言:老撾萬榮一對情侶失蹤沉眶,失蹤者是張志新(化名)和其女友劉穎打却,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體谎倔,經(jīng)...
    沈念sama閱讀 46,268評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡柳击,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,356評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了片习。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片捌肴。...
    茶點故事閱讀 40,488評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖藕咏,靈堂內的尸體忽然破棺而出状知,到底是詐尸還是另有隱情,我是刑警寧澤侈离,帶...
    沈念sama閱讀 36,181評論 5 350
  • 正文 年R本政府宣布试幽,位于F島的核電站筝蚕,受9級特大地震影響卦碾,放射性物質發(fā)生泄漏铺坞。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,862評論 3 333
  • 文/蒙蒙 一洲胖、第九天 我趴在偏房一處隱蔽的房頂上張望济榨。 院中可真熱鬧,春花似錦绿映、人聲如沸擒滑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,331評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽丐一。三九已至,卻和暖如春淹冰,著一層夾襖步出監(jiān)牢的瞬間库车,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,445評論 1 272
  • 我被黑心中介騙來泰國打工樱拴, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留柠衍,地道東北人。 一個月前我還...
    沈念sama閱讀 48,897評論 3 376
  • 正文 我出身青樓晶乔,卻偏偏與公主長得像珍坊,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子正罢,可洞房花燭夜當晚...
    茶點故事閱讀 45,500評論 2 359

推薦閱讀更多精彩內容

  • Spring Web MVC Spring Web MVC 是包含在 Spring 框架中的 Web 框架阵漏,建立于...
    Hsinwong閱讀 22,434評論 1 92
  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn)腺怯,斷路器袱饭,智...
    卡卡羅2017閱讀 134,696評論 18 139
  • 從三月份找實習到現(xiàn)在,面了一些公司呛占,掛了不少虑乖,但最終還是拿到小米、百度晾虑、阿里疹味、京東、新浪帜篇、CVTE糙捺、樂視家的研發(fā)崗...
    時芥藍閱讀 42,274評論 11 349
  • 風把圍巾帶來暖了行人的脖子 雪的影子在天空徘徊趕走了南去的雁子 太陽像男中音的歌喉磁性通透卻燃不起場子 只有你眼里...
    王淺文閱讀 482評論 12 18
  • 大家好!我叫周俊余 來自廣州 我的三個標簽是 1.易效能踐行者 2.象棋和搏擊愛好者 3.終身學習者 依稀記得20...
    周俊余閱讀 110評論 0 0