Springmvc

一吐辙、springmvc
1宣决、什么是Spring MVC ?簡單介紹下你對springMVC的理解?
Spring MVC是一個基于MVC架構的用來簡化web應用程序開發(fā)的應用開發(fā)框架昏苏,它是Spring的一個模塊,無需中間整合層來整合 尊沸,它和Struts2一樣都屬于表現層的框架威沫。
在web模型中,MVC是一種很流行的框架洼专,通過把Model棒掠,View,Controller分離屁商,把較為復雜的web應用分成邏輯清晰的幾部分烟很,簡化開發(fā),減少出錯蜡镶,方便組內開發(fā)人員之間的配合雾袱。
2、springMVC和struts2的區(qū)別有哪些?
(1)springmvc的入口是一個servlet即前端控制器(DispatchServlet)官还,而struts2入口是一個filter過慮器(StrutsPrepareAndExecuteFilter)芹橡。
(2)springmvc是基于方法開發(fā)(一個url對應一個方法),請求參數傳遞到方法的形參望伦,可以設計為單例或多例(建議單例)林说,struts2是基于類開發(fā),傳遞參數是通過類的屬性屡谐,只能設計為多例述么。
(3)Struts采用值棧存儲請求和響應的數據,通過OGNL存取數據愕掏,springmvc通過參數解析器是將request請求內容解析度秘,并給方法形參賦值,將數據和視圖封裝成ModelAndView對象饵撑,最后又將ModelAndView中的模型數據通過reques域傳輸到頁面剑梳。Jsp視圖解析器默認使用jstl。
3滑潘、SpringMVC怎么樣設定重定向和轉發(fā)的垢乙?
(1)在返回值前面加"forward:"就可以讓結果轉發(fā),譬如"forward:user.do?name=method4"
(2)在返回值前面加"redirect:"就可以讓返回值重定向,譬如"redirect:http://www.baidu.com"
4、SpringMvc怎么和AJAX相互調用的语卤?
通過Jackson框架就可以把Java里面的對象直接轉化成Js可以識別的Json對象追逮。具體步驟如下 :
(1)加入Jackson.jar
(2)在配置文件中配置json的映射
(3)在接受Ajax方法里面可以直接返回Object,List等,但方法前面要加上@ResponseBody注解。
5粹舵、Springmvc的優(yōu)點:
(1)它是基于組件技術的钮孵。全部的應用對象,無論控制器和視圖,還是業(yè)務對象之類的都是 java組件.并且和Spring提供的其他基礎結構緊密集成.
(2)可以任意使用各種視圖技術,而不僅僅局限于JSP
(3)不依賴于Servlet API(目標雖是如此,但是在實現的時候確實是依賴于Servlet的)
(4) 支持各種請求資源的映射策略
(5)它應是易于擴展的
6、SpringMVC的流程眼滤?
(1)用戶發(fā)送請求至前端控制器DispatcherServlet巴席;
(2) DispatcherServlet收到請求后,調用HandlerMapping處理器映射器诅需,請求獲取Handle漾唉;
(3)處理器映射器根據請求url找到具體的處理器荧库,生成處理器對象及處理器攔截器(如果有則生成)一并返回給DispatcherServlet;
(4)DispatcherServlet通過HandlerAdapter處理器適配器調用處理器赵刑;
(5)執(zhí)行處理器(Handler分衫,也叫后端控制器);
(6)Handler執(zhí)行完成返回ModelAndView料睛;
(7)HandlerAdapter將Handler執(zhí)行結果ModelAndView返回給DispatcherServlet丐箩;
(8)DispatcherServlet將ModelAndView傳給ViewResolver視圖解析器進行解析;
(9)ViewResolver解析后返回具體View恤煞;
(10)DispatcherServlet對View進行渲染視圖(即將模型數據填充至視圖中)
(11)DispatcherServlet響應用戶屎勘。

image.png

7、Spring MVC的主要組鍵居扒?
(1)前端控制器 DispatcherServlet(不需要程序員開發(fā))
作用:接收請求概漱、響應結果 相當于轉發(fā)器,有了DispatcherServlet 就減少了其它組件之間的耦合度喜喂。
(2)處理器映射器HandlerMapping(不需要程序員開發(fā))
作用:根據請求的URL來查找Handler
(3)處理器適配器HandlerAdapter
注意:在編寫Handler的時候要按照HandlerAdapter要求的規(guī)則去編寫瓤摧,這樣適配器HandlerAdapter才可以正確的去執(zhí)行Handler。
(4)處理器Handler(需要程序員開發(fā))
(5)視圖解析器 ViewResolver(不需要程序員開發(fā))
作用:進行視圖的解析 根據視圖邏輯名解析成真正的視圖(view)
(6)視圖View(需要程序員開發(fā)jsp)
View是一個接口玉吁, 它的實現類支持不同的視圖類型(jsp照弥,freemarker,pdf等等)
8进副、SpringMvc里面攔截器是怎么寫的:
9这揣、SpringMvc里面攔截器是怎么寫的:
(1)一種是實現HandlerInterceptor接口
(2)另外一種是繼承適配器類
之后,在接口方法當中影斑,實現處理邏輯给赞;然后在SpringMvc的配置文件中配置攔截器即可。
10矫户、如何解決POST請求中文亂碼問題片迅,GET的又如何處理呢?
(1)解決post請求亂碼問題:
在web.xml中加入:CharacterEncodingFilter過濾器
(2)get請求中文參數出現亂碼解決方法有兩個:
①修改tomcat配置文件添加編碼與工程編碼一致皆辽,如下:
<ConnectorURIEncoding="utf-8" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
②另外一種方法對參數進行重新編碼:
String userName = new String(request.getParamter("userName").getBytes("ISO8859-1"),"utf-8")
ISO8859-1是tomcat默認編碼柑蛇,需要將tomcat編碼后的內容按utf-8編碼。
11驱闷、Spring MVC的異常處理 唯蝶?
可以將異常拋給Spring框架,由Spring框架來處理遗嗽;我們只需要配置簡單的異常處理器,在異常處理器中添視圖頁面即可鼓蜒。
12痹换、SpringMvc的核心入口類是什么,Struts1,Struts2的分別是什么:
答:SpringMvc的是DispatchServlet,Struts1的是ActionServlet,Struts2的是StrutsPrepareAndExecuteFilter征字。
13、SpringMVC是單例(優(yōu)勢)的娇豫,高并發(fā)情況下匙姜,如何保證性能的?
spring單例模式下用ThreadLocal(java提供的API)來切換不同線程之間的參數,spring把每個線程可能存在線程安全問題的參數值放進了ThreadLocal冯痢。這樣雖然是一個實例在操作氮昧,但是不同線程下的數據互相之間都是隔離的,因為運行時創(chuàng)建和銷毀的bean大大減少了浦楣,所以大多數場景下這種方式對內存資源的消耗較少袖肥,而且并發(fā)越高優(yōu)勢越明顯。

因為是單例模式,所以在多線程訪問的時候有線程安全問題,不要用同步,會影響性能振劳;解決方案是在控制器里面不能寫字段椎组。

總結:單利模式因為大大節(jié)省了實例的創(chuàng)建和銷毀,有利于提高性能历恐,而ThreadLocal用來保證線程安全性寸癌。
14、 @RequestMapping注解用在類上面有什么作用弱贼?
是一個用來處理請求地址映射的注解蒸苇,可用于類或方法上。用于類上吮旅,表示類中的所有響應請求的方法都是以該地址作為父路徑溪烤。
15、如果在攔截請求中,我想攔截get方式提交的方法,怎么配置鸟辅?
答:可以在@RequestMapping注解里面加上method=RequestMethod.GET氛什。
16、怎么樣在方法里面得到Request,或者Session匪凉?
答:直接在方法的形參中聲明request,SpringMvc就自動把request對象傳入枪眉。
17、SpringMvc中函數的返回值是什么再层?
答:返回值可以有很多類型,有String, ModelAndView贸铜,但一般用String比較好。
18聂受、如果想在攔截的方法里面得到從前臺傳入的參數,怎么得到蒿秦?
直接在形參里面聲明這個參數就可以,但必須名字和傳過來的參數一樣。

如果要傳入多個參數(都在一個對象中)蛋济,直接在方法中聲明這個對象,SpringMvc就自動會把屬性賦值到這個對象里面棍鳖。

19、SpringMvc用什么對象從后臺向前臺傳遞數據的?
答:通過ModelMap對象,可以在這個對象里面用put方法,把對象加到里面,前臺就可以通過el表達式拿到渡处。
20镜悉、怎么樣把ModelMap里面的數據放入Session里面?
可以在類上面加上@SessionAttributes注解,里面包含的字符串就是要放入session里面的key医瘫。
21侣肄、@SessionAttributes注解
在默認情況下,ModelMap 中的屬性作用域是 request 級別是醇份,也就是說稼锅,當本次請求結束后,ModelMap 中的屬性將銷毀僚纷。如果希望在多個請求中共享 ModelMap 中的屬性矩距,必須將其屬性轉存到 session 中,這樣 ModelMap 的屬性才可以被跨請求訪問畔濒。
Spring 允許我們有選擇地指定 ModelMap 中的哪些屬性需要轉存到 session 中剩晴,以便下一個請求屬對應的 ModelMap 的屬性列表中還能訪問到這些屬性。這一功能是通過類定義處標注 @SessionAttributes 注解來實現的侵状。

?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末赞弥,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子趣兄,更是在濱河造成了極大的恐慌绽左,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,539評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件艇潭,死亡現場離奇詭異拼窥,居然都是意外死亡,警方通過查閱死者的電腦和手機蹋凝,發(fā)現死者居然都...
    沈念sama閱讀 93,594評論 3 396
  • 文/潘曉璐 我一進店門鲁纠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人鳍寂,你說我怎么就攤上這事改含。” “怎么了迄汛?”我有些...
    開封第一講書人閱讀 165,871評論 0 356
  • 文/不壞的土叔 我叫張陵捍壤,是天一觀的道長。 經常有香客問我鞍爱,道長鹃觉,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,963評論 1 295
  • 正文 為了忘掉前任睹逃,我火速辦了婚禮盗扇,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己疗隶,他們只是感情好躬柬,可當我...
    茶點故事閱讀 67,984評論 6 393
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著抽减,像睡著了一般。 火紅的嫁衣襯著肌膚如雪橄碾。 梳的紋絲不亂的頭發(fā)上卵沉,一...
    開封第一講書人閱讀 51,763評論 1 307
  • 那天,我揣著相機與錄音法牲,去河邊找鬼史汗。 笑死,一個胖子當著我的面吹牛拒垃,可吹牛的內容都是我干的停撞。 我是一名探鬼主播,決...
    沈念sama閱讀 40,468評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼悼瓮,長吁一口氣:“原來是場噩夢啊……” “哼戈毒!你這毒婦竟也來了?” 一聲冷哼從身側響起横堡,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤埋市,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后命贴,有當地人在樹林里發(fā)現了一具尸體道宅,經...
    沈念sama閱讀 45,850評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,002評論 3 338
  • 正文 我和宋清朗相戀三年胸蛛,在試婚紗的時候發(fā)現自己被綠了污茵。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,144評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡葬项,死狀恐怖泞当,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情玷室,我是刑警寧澤零蓉,帶...
    沈念sama閱讀 35,823評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站穷缤,受9級特大地震影響敌蜂,放射性物質發(fā)生泄漏。R本人自食惡果不足惜津肛,卻給世界環(huán)境...
    茶點故事閱讀 41,483評論 3 331
  • 文/蒙蒙 一章喉、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦秸脱、人聲如沸落包。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,026評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽咐蝇。三九已至,卻和暖如春巷查,著一層夾襖步出監(jiān)牢的瞬間有序,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,150評論 1 272
  • 我被黑心中介騙來泰國打工岛请, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留旭寿,地道東北人。 一個月前我還...
    沈念sama閱讀 48,415評論 3 373
  • 正文 我出身青樓崇败,卻偏偏與公主長得像盅称,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子后室,可洞房花燭夜當晚...
    茶點故事閱讀 45,092評論 2 355

推薦閱讀更多精彩內容