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