javascript
SpringMVC_3.请求映射与静态资源处理
1.請(qǐng)求映射
介紹:
????????請(qǐng)求到 web.xml ,經(jīng)過(guò) SpringMVC的分發(fā)器對(duì)象 [ DispatcherServlet ]? ,將請(qǐng)求轉(zhuǎn)到 SpringMVC 框架中,通過(guò) @RequestMapping 注解實(shí)現(xiàn)了請(qǐng)求到控制器 [ 方法 ] 的映射.
?
@RequestMapping注解:
作用:
????????用于將Web請(qǐng)求 映射到 特定的處理程序或處理程序的方法.
格式:
????????@RequestMapping ( [ 參數(shù).. ] )
說(shuō)明:
? ? ? ? 1. 該注解可以編寫在類聲明或方法聲明的上面
? ? ? ? 2. @RequestMapping編寫在類聲明上面,提供初步的請(qǐng)求映射信息,編寫在方法聲明上面,提供進(jìn)一步的請(qǐng)求映射信息 , 示例代碼 , 輔助理解 :
? ? ? ? ? ? ? ? (1).第一種寫法和第二種寫法效果是一樣的,捕獲的都是?/abc/index 的請(qǐng)求
? ? ? ? ? ? ? ? (2).@RequestMapping 編寫在類聲明上面一般用于這個(gè)Action類中的方法捕獲的請(qǐng)求都有共同的開(kāi)頭(如: /abc/index1 , /abc/add1 , /abc/delete1),才在類上聲明
? ? ? ? ? ? ? ? (3).@RequestMapping 編寫在類聲明上后,@RequestMapping 編寫在方法上的聲明的路徑會(huì)和編寫在類聲明上的拼接,格式 : 類聲明上的路徑參數(shù)+方法上的聲明路徑參數(shù)
//第一種寫法,編寫在類聲明上 @RequestMapping("/abc") public class TestAction {@RequestMapping("/index")public String index(){System.out.println("index()!");return "index";// /WEB-INF/jsp/index.jsp} }//第二種寫法,普通寫法 public class TestAction {@RequestMapping("/abc/index")public String index(){System.out.println("index()!");return "index";// /WEB-INF/jsp/index.jsp} }? ? ? ? 3. 含有6個(gè)參數(shù),常用的有value [ 默認(rèn) ] ( 路徑 ) , method ( 請(qǐng)求方式 ) ,params.
? ? ? ? 4. 參數(shù)都為數(shù)組類型,格式: 參數(shù)名={值1,值2,..}.若參數(shù)只有1個(gè)值,可以省略"{}".
常用屬性(參數(shù)):
????????value: 設(shè)置當(dāng)前方法映射的請(qǐng)求資源.若只有1個(gè)參數(shù)值,可以省略此參數(shù)名.@RequestMapping("映射路徑")
????????method: 設(shè)置當(dāng)前方法映射請(qǐng)求資源時(shí),對(duì)請(qǐng)求方式的要求 ( 即設(shè)置接收?GET?或?POST?請(qǐng)求,默認(rèn)GET , method 的兩個(gè)值?RequestMethod.POST , RequestMethod.GET?) .
提示 : 除設(shè)置默認(rèn)參數(shù)不需要加屬性名外,設(shè)置多個(gè)參數(shù)都需要加屬性名=" ",多個(gè)參數(shù)設(shè)置逗號(hào)隔開(kāi)
@PostMapping 和 @GetMapping注解:
介紹:
????????SpringMVC提供了@GetMapping, @PostMapping,@PutMapping等一系列注解,用于簡(jiǎn)化@RequestMapping.這些注解相比RequestMapping,屬于組合注解,即設(shè)置請(qǐng)求映射路徑,又要求請(qǐng)求方式.
用法:
? ? ? ? (1). @GetMapping("/請(qǐng)求映射路徑")等價(jià)于
? ? ? ? ? ? ? ?@RequestMapping(value="/請(qǐng)求映射路徑" , method=RequestMethod.GET)
? ? ? ? (2). @PostMapping("/請(qǐng)求映射路徑")等價(jià)于
? ? ? ? ? ? ? ?@RequestMapping(value="/請(qǐng)求映射路徑" , method=RequestMethod.POST)
2.靜態(tài)資源處理
為什么配置靜態(tài)資源映射:
????????DispatcherServlet?攔截所有非JSP的請(qǐng)求(當(dāng)然也會(huì)攔截請(qǐng)求資源的URL請(qǐng)求) , 當(dāng)請(qǐng)求資源URL與Spring容器管理的處理程序的映射URL都不匹配時(shí),默認(rèn)不會(huì)到(ME是WebRoot,IDEA是Web) WebRoot下尋找資源,而是直接報(bào)400或者404錯(cuò)誤.
目的 :?
????????(我們要做到在容器管理的處理程序的映射URL都不匹配時(shí),讓他在Web文件下尋找資源)
要求:
????????而大多數(shù)靜態(tài)資源是沒(méi)有請(qǐng)求映射配置 , 通過(guò)配置 " 默認(rèn)Servlet請(qǐng)求處理器 " 實(shí)現(xiàn)靜態(tài)資源的響應(yīng).
處理方式:
????????SpringMVC靜態(tài)資源的處理方式有很多種(只說(shuō)兩種,夠用了):
<mvc:resouces>?處理方式 :
? ? ? ? 要求:在springmvc配置文件中編寫?標(biāo)簽及其相關(guān)內(nèi)容
? ? ? ? 機(jī)制: 在容器管理的處理程序(Action方法)的映射URL都不匹配時(shí),回到web下的指定文件下去尋找符合URL需要的文件
????????處理方式缺點(diǎn):?所有靜態(tài)資源都要放在web文件下的同一個(gè)文件中(一個(gè)自定義的文件夾下,如 static ),擁有局限性,所以再介紹第二種方式--配置tomcat默認(rèn)servlet
<!-- mapping 設(shè)置映射的請(qǐng)求路徑. http://localhost:8080/項(xiàng)目名/static/js/login.js location 設(shè)置資源的位置 --> <mvc:resources mapping="/static/**/" location="/static/" />補(bǔ)充:
????????localhost和mapping區(qū)別
- ????????localhost是用來(lái)描述位置的,是描述在哪個(gè)文件下尋找文件
- ????????mapping是用來(lái)描述請(qǐng)求的約束的,及規(guī)定什么開(kāi)頭的URL可以訪問(wèn)該文件下的文件
????????localhost和mapping路徑問(wèn)題
- ? ? ? ? mapping寫的是相對(duì)路徑,即是從http://localhost:8080/項(xiàng)目名后開(kāi)始算的
- ? ? ? ? localhost寫的也是相對(duì)路徑,是從Web文件下開(kāi)始算的 ( 其實(shí)默認(rèn)情況下Web程序找什么文件或者什么請(qǐng)求其實(shí)默認(rèn)就是在Web文件下找的 )?
說(shuō)明 :
???????? *表示任意資源 , ** 表示任意資源下可以有多層任意資源 , 使用 ** 匹配資源路徑要使用 / 閉合
配置tomcat默認(rèn)servlet處理方式 :?
? ? ? ? 要求: 在web.xml配置文件中編寫?標(biāo)簽及其相關(guān)內(nèi)容,固定格式, 中寫要匹配的數(shù)據(jù)類型 *.數(shù)據(jù)類型(任意名字.數(shù)據(jù)格式)
? ? ? ? 機(jī)制: 在容器管理的處理程序的映射URL都不匹配時(shí),當(dāng)請(qǐng)求路徑的結(jié)尾是任意一個(gè)<url-pattern> 設(shè)置的格式時(shí),讓他在Web文件下尋找資源
<!--注冊(cè)Tomcat默認(rèn)的Servlet--><servlet-mapping><servlet-name>default</servlet-name><url-pattern>*.html</url-pattern><url-pattern>*.css</url-pattern><url-pattern>*.js</url-pattern><url-pattern>*.png</url-pattern></servlet-mapping>其他方法
百度搜索,這里推薦一篇CSDN的,只是看了看,沒(méi)有試過(guò),點(diǎn)擊這里里
總結(jié)
以上是生活随笔為你收集整理的SpringMVC_3.请求映射与静态资源处理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 前端事件大全
- 下一篇: SpringMVC跳转页面默认类型和转发