版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、SpringMVC是一個(gè)基于DispatcherServlet的MVC框架,每一個(gè)請求最先訪問的都 是 DispatcherServlet,DispatcherServlet 負(fù)責(zé)轉(zhuǎn)發(fā)每一個(gè) Request 請求給相應(yīng)的 Handler, Handler處理 以后再返回相應(yīng)的視圖(View)和模型(Model),返回的視圖和 模型都可以不指定,即可以只返回 Model或只返回View或都不返回。DispatcherServlet 是繼承自 HttpServlet 的,既然 SpringMVC 是基于DispatcherServlet 的, 那么我們先來配置一下 DispatcherServle
2、t ,好讓它能 夠管理 我們希望它管理的內(nèi)容。 HttpServlet 是在 web.xml 文件中聲明 的。01 02 blog 03 0 org.springframework.web.servlet.DispatcherServlet4 05 106 07 08 blog 09 10 *.do 11 上面聲明了一個(gè)名 為blog的DispatcherServlet,該Servlet將處理所有以“ .do結(jié)尾 的請求。在初始化DispatcherServlet的時(shí)候,SpringMVC默認(rèn)會(huì)到/WEB-INF目錄 下尋找一個(gè)叫servlet- name-servlet.xml的配置文件,來
3、初始化里面的bean對象, 該文件中對應(yīng)的bean對象會(huì)覆蓋spring配置文件中聲明的同名的bean對象。如上面的就會(huì)在 /WEB-INF 目 錄下尋找一個(gè)叫 blog-servlet.xml 的文件;當(dāng)然也可以在 Servlet 中聲明配置文件的位 置。01 02 03 blog0 org.springframework.web.servlet.DispatcherServlet4 0506contextConfigLocation0708/WEB-INF/blog-servlet.xml0910111 12 1314 blog15 *.do16DispatcherServlet會(huì)利用一些
4、特殊的bean來處理Request請求和生成相應(yīng)的視圖 返回。關(guān)于視圖的返回, Controller 只負(fù)責(zé)傳回來一個(gè)值,然后到底返回的是什 么視圖,是 由視圖解析器控制的,在jsp中常用的視圖解析器是InternalResourceViewResovler,它會(huì)要求一個(gè)前綴和一個(gè)后綴1 3 4 5 在上述視圖解析器中,如果Controller返回的是blog/index,那么通過視圖解析器解 析之后的視圖就是/WEB-INF/blog/index.jsp 。要使用注解的SpringMVC需要在SpringMVC的配置文件中進(jìn)行聲明,具體方式為 先引入mvc命名空間,然后利用mvc:annot
5、ation-driven /進(jìn)行聲明。01 beans xmlns=/schema/beansxmlns:xsi=/2001/XMLSchema-instancexmlns:context=/schema/contextxmlns:mvc=/sche3ma/mvc xsi:schemaLocation=/schema/beans04d
6、/schema/beans/spring-beans-3.0.xs0506 0.xsd/schema/context/schema/context/spring-context-3./schema/mvc0 /schema/mvc/spring-mvc-3.0.xsd09101112 主要是 說說 Contr
7、oller.一個(gè)類使用了 Controller進(jìn)行標(biāo)記的都是Controller1 Controller2 public class BlogController 4有了 Controller 之后,那么到底是怎 樣請求一個(gè) Controller 具體的方法的呢,那是通 過RequestMappin冰標(biāo)記 的,RequestMappin回以標(biāo)記在類上面,也可以標(biāo)記 在方法上,當(dāng)方法上和類上都標(biāo)記了RequestMappingl勺時(shí)候,那么對應(yīng)的方 法 對應(yīng)的Url就是類上的加方法上的,如下面的index方法,其對應(yīng)的URL應(yīng)為類上的/blog加上index方法上的/index,所以應(yīng)為/blo
8、g/index,所以當(dāng)請求 /blog/index.do 的時(shí)候就會(huì)訪問 BlogController 的 index方法。01Controller02RequestMapping(/blog)03public class BlogController 040506RequestMapping(/index)0708public String index(Map map) return blog/index;0910在上面的代碼中,如果index方法上沒有RequestMapping注解,而只有BlogController 類上有,且該類只有一個(gè)方法的 時(shí)候,直接請求類上的 URL 就會(huì)調(diào) 用
9、里面的方法,即直接請求/blog.do的時(shí)候就會(huì)調(diào)用index方法。在RequestMapping中還可以指定一個(gè)屬性 method,其主要對應(yīng) 的值有 RequestMethod.GET和RequestMethod.POST,利用該屬性可以嚴(yán)格的控制某一方 法只能被 標(biāo)記的請求路徑 對應(yīng)的請求方法才能 訪問 ,如指定 method 的值為 GET, 則表示只有通過GET方式才能訪問該方法,默認(rèn)是都可以訪問。在 SpringMVC 中常用的注解 還有PathVariable RequestParan, PathVariable標(biāo) 記在方法的參數(shù)上,利用它 標(biāo)記的參數(shù)可以利用 請求路徑 傳值,看
10、下面一個(gè)例子1 RequestMapping(value=/comment/blogId, method=RequestMethod.POST) public void comment(Comment comment,PathVariableint blogId, HttpSession session, HttpServletResponse response) throws IOException 4在該例子中,blogId是被PathVariable標(biāo)記為請求路徑變量的,如果請求的是/blog/comment/1.do的時(shí)候就表 示blogId的值為1.同樣RequestParam也是用
11、來給參數(shù)傳值的,但是它是從頭request的參數(shù)里面取值,相當(dāng)于 request.getParameter 參數(shù)名)方法。在Controller的方法中,如果需要 WEB元素HttpServletRequest,HttpServletResponse和HttpSession,只需要在給方法一個(gè)對應(yīng)的參數(shù),那么在訪 問的時(shí)候SpringMVC就會(huì)自動(dòng)給其傳值,但是需要注意的是在傳入Session的 時(shí) 候如果是第一次 訪問系統(tǒng)的時(shí)候就調(diào)用session會(huì)報(bào)錯(cuò),因?yàn)檫@個(gè)時(shí)候session還沒 有生成。接下來討論一下方法的返回值,主要有一下情況:返回一個(gè)ModelAndView,其中Model是一個(gè)
12、Map,里面存放的是一對對的鍵 值對,其可以直接在頁面上使用,View是一個(gè)字符串,表示的是某一個(gè)View 的名稱返回一個(gè)View,也就是一個(gè)字符串,這個(gè)時(shí)候如果需要給頁面?zhèn)髦担梢越o 方法一個(gè)Map參數(shù),該Map就相當(dāng)于一個(gè)Model,往該Model里面存入鍵值 對就可以在頁面上進(jìn)行訪問了返回一個(gè)Model也就是一個(gè)Map,這個(gè)時(shí)候?qū)⒔馕瞿J(rèn)的生成的view nameb 什么也不返回,這個(gè)時(shí)候可以利用HttpServletResponse進(jìn)行返回,也可以 直接使用printStream進(jìn)行返回下面是一個(gè)簡單的實(shí)例01RequestMa ppin g(/ow ner/i ndex)02 Pub
13、lic String userIndex(MapvString, Objectmap,PathVariableStringowner, Htt pServletRequest request) throwsP arserExce pti on 030405060708List categories = categoryService.fi nd(ow ner); int offset = Util.getOffset(request);P agerp ager = blogService.fi nd(ow ner,0, offset, maxResults);int totalRecords
14、= p ager.getTotalRecords();List blogs = p ager.getData();Util.shortBlog(blogs);List messages = messageService.fi nd(ow ner, 0,5).getData();11 Util.shortMessage(messages, 20);091012map.put(messages, messages);13map.put(totalRecords, totalRecords);14List stores = storeService.find(owner, 0, 5).getData();15map
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 溝蓋板采購合同范例
- 汕頭職業(yè)技術(shù)學(xué)院《班主任工作技能》2023-2024學(xué)年第一學(xué)期期末試卷
- 汕頭大學(xué)《茶葉審評與檢驗(yàn)實(shí)驗(yàn)課》2023-2024學(xué)年第一學(xué)期期末試卷
- 野外養(yǎng)雞銷售合同范例
- 生豬屠宰設(shè)備購銷合同范例
- 共同供貨合同范例
- 普通制式合同范例
- 2024年高效食品發(fā)酵專用消泡劑項(xiàng)目可行性研究報(bào)告
- 陜西師范大學(xué)《志愿者管理》2023-2024學(xué)年第一學(xué)期期末試卷
- 裝修天花分包合同范例
- 2024至2030年中國甲醚化氨基樹脂行業(yè)投資前景及策略咨詢研究報(bào)告
- 行政案例分析-第二次形成性考核-國開(SC)-參考資料
- 2024-2025學(xué)年人教版八年級上學(xué)期數(shù)學(xué)期末復(fù)習(xí)試題(含答案)
- “感恩老師”教師節(jié)主題班會(huì)教案【三篇】
- 揚(yáng)塵防治(治理)監(jiān)理實(shí)施細(xì)則(范本)
- 危險(xiǎn)化學(xué)品經(jīng)營單位主要負(fù)責(zé)人考試練習(xí)題(含答案)
- 2024年廣西安全員A證考試題庫
- 高等數(shù)學(xué)教程 上冊 第4版 測試題及答案 共4套
- 太陽能路燈維護(hù)與保養(yǎng)方案
- 華南理工大學(xué)《自然語言處理》2023-2024學(xué)年期末試卷
- 人生苦與樂課件
評論
0/150
提交評論