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