- 相關(guān)推薦
SpringMVC知識點(diǎn)總結
篇一:springmvc簡(jiǎn)單總結
一:springmvc的簡(jiǎn)單了解
1. .Springmvc是spring的web框架?chē)@DispatcherServlet設計的。DispatchServlet的作用是將請求分發(fā)到不同的處理器。Spring的web框架可以包括可配置的處理器(Handlder)映射,視圖(view)解析,本地化(local)解析,主題(theme)解析以及對文件上傳的支持等
2. springmvc的請求模式:
3. 其實(shí),每個(gè)MVC 框架的執行過(guò)程都是大同小異的;
、佼斠粋(gè)request過(guò)來(lái)時(shí),它通過(guò)一個(gè)servelet來(lái)響應request;
、谠俑鶕䌷equest的路徑名和配置將這個(gè)request dispatch 給一個(gè)controller執行;
、圩詈髮⒅祷嘏渲梦募飳捻(yè)面。
在springmvc中,這個(gè)servelet的名字叫:Dispatchservlet。
4. Spring
的Controller是singleton的.,或者是線(xiàn)程不安全的說(shuō)明。
分析:和Struts一樣,Spring的Controller是singleton的!這意味著(zhù)每個(gè)request過(guò)來(lái),系統都會(huì )用原來(lái)的instance去處理,這樣就導致了兩個(gè)結果:①我們不用每次創(chuàng )建Controller,減少了對象創(chuàng )建和垃圾回收的時(shí)間。②由于只有一個(gè)Controller的instance,當多個(gè)線(xiàn)程調用它的時(shí)候,它里面的instance變量不是線(xiàn)程安全的。
這也是webworks吹噓的地方,它的每個(gè)Action都是線(xiàn)程安全的。因為每過(guò)來(lái)一個(gè)request,它就會(huì )創(chuàng )建一個(gè)Action對象。由于現代JDK垃圾收集動(dòng)能的效率已經(jīng)不成問(wèn)題了,所以這種創(chuàng )建完一個(gè)對象就扔掉的模式也得到很多人的認可。
二:簡(jiǎn)單的配置了解
1.導入需要的jar包
【去網(wǎng)上搜一下】
2.配置web.xml
3.配置springmvc-servlet.xml
說(shuō)明,可以放在WEB-INF下面就行。有些配置是暫時(shí)不需要的,一并拷貝過(guò)來(lái)了。
4.在WebRoot下面建立一個(gè)文件夾static用于放靜態(tài)的文件,
static下面再建立三個(gè)靜態(tài)文件夾:images[用于放圖片],script[用于放js文件],style[用于放css文件]。
5.在WEB-INF下面建立一個(gè)文件夾views,用于放jsp文件。
可以先建立一個(gè)工程引用的jsp文件,base.jsp。
三:基本功能的學(xué)習
建立一個(gè)index.jsp,引入base.jsp → <%@ include="" file="base.jsp">
1.簡(jiǎn)單的請求
注意事項:
、偌t色部分的@Controller ,
、趯τ诠驳腢RL,我們可以注釋到類(lèi)的頭部,比如對于user對象的操作,。
我們可以再action的頭部注釋?zhuān)篅RequestMapping("/user")。
、蹖τ谀承┱埱笪覀兛梢韵拗铺峤环绞,比如用戶(hù)登錄,我們只允許POST提交,
我們可以在方法上面加上:@RequestMapping("/login",method=RequestMethod.POST)。
篇二:SpringMVC知識點(diǎn)總結
Spring web mvc和Struts2都屬于表現層的框架,它是Spring框架的一部分,是一個(gè)前端web框架。
springMVC的處理流程
Controller跳轉到另一個(gè)Controller
1. 需求背景 需求:spring MVC框架controller間跳轉,需重定向。有幾種情況:不帶參數跳轉,帶參數拼接url形式跳轉,帶參數不拼接參數跳轉,頁(yè)面也能顯示。
2. 解決辦法 需求有了肯定是解決辦法了,一一解決,說(shuō)明下spring的跳轉方式很多很多,我這里只是說(shuō)一些自我認為好用的,常用的,spring分裝的一些類(lèi)和方法。
不帶參數的跳轉
。1)我在后臺一個(gè)controller跳轉到另一個(gè)controller,為什么有這種需求呢,是這樣的。我有一個(gè)列表頁(yè)面,然后我會(huì )進(jìn)行新增操作,新增在后臺完成之后我要跳轉到列表頁(yè)面,不需要傳遞參數,列表頁(yè)面默認查詢(xún)所有的'。
方式一:使用ModelAndView
return new ModelAndView("redirect:/toList"); 這樣可以重定向到toList這個(gè)方法。
方式二:返回String
return "redirect:/ toList ";
其它方式:
其它方式還有很多,這里不再做介紹了,比如說(shuō)response等等。這是不帶參數的重定向。
帶參數拼接url的跳轉
第二種情況,列表頁(yè)面有查詢(xún)條件,跳轉后我的查詢(xún)條件不能丟掉,這樣就需要帶參數的了,帶參數可以拼接url
方式一:自己手動(dòng)拼接url
new ModelAndView("redirect:/toList?param1="+value1+"m2="+value2); 這樣有個(gè)弊端,就是傳中文可能會(huì )有亂碼問(wèn)題。
方式二:用RedirectAttributes,
這個(gè)是發(fā)現的一個(gè)比較好用的一個(gè)類(lèi) 這里用它的addAttribute方法,這個(gè)實(shí)際上重定向過(guò)去以后你看url,是它自動(dòng)給你拼了你的url。這種方式就相當于重定向之后,在url后面拼接參數,這樣在重定向之后的頁(yè)面或者控制器再去獲取url后面的參數就可以了,但這個(gè)方式因為是在url后面添加參數的方式,所以暴露了參數,有風(fēng)險。
使用方法:attr.addAttribute("param", value);
return "redirect:/namespace/toController";
這樣在toController這個(gè)方法中就可以通過(guò)獲得參數的方式獲得這個(gè)參數,再傳遞到頁(yè)面。過(guò)去的url還是和方式一一樣的。
帶參數不拼接參數跳轉
帶參數不拼接url頁(yè)面也能拿到值(重點(diǎn)是這個(gè))一般我估計重定向到都想用這種方式:
@RequestMapping("/save") public String save(@ModelAttribute("form") Bean form,RedirectAttributes attr)throws Exception { String code = service.save(form); if(code.equals("000")){
attr.addFlashAttribute("name", form.getName()); 這種方式也能達到重新向帶參, 而且能隱藏參數,其原理就是放到session中,session在跳到頁(yè)面后馬上移除對象。所以你刷新一下后這個(gè)值就會(huì )丟掉
attr.addFlashAttribute("success", "添加成功!"); return "redirect:/index";}else{
attr.addAttribute("projectName", form.getProjectName()); attr.addAttribute("enviroment", form.getEnviroment());attr.addFlashAttribute("msg", "添加出錯!錯誤碼為:
"+rsp.getCode().getCode()+",錯誤為:"+rsp.getCode().getName());return "redirect:/maintenance/toAddConfigCenter"; }}
@RequestMapping("/index")
Public String save(@ModelAttribute("form") Bean form,RedirectAttributes attr) throws Exception {
return "redirect:/main/list";}
頁(yè)面取值直接用el表達式就能獲得到(例如:${projectName }),這里的原理是放到session中,session在跳到頁(yè)面后馬上移除對象。所以你刷新一下后這個(gè)值就會(huì )丟掉。${projectName }的值,這要想用在js中必須先放在頁(yè)面的。
<script type="text/javascript">Var projectName= ${projectName};</script>
【SpringMVC知識點(diǎn)總結】相關(guān)文章:
英語(yǔ)知識點(diǎn)總結06-23
橢圓知識點(diǎn)總結06-24
高考知識點(diǎn)總結07-02
高考知識點(diǎn)總結08-19
物理知識點(diǎn)總結11-19
口腔知識點(diǎn)總結11-16
生物知識點(diǎn)總結12-02
中考知識點(diǎn)總結11-22
浮力知識點(diǎn)總結12-28
語(yǔ)文知識點(diǎn)總結04-17