2023-01-19 一、@PathVariable註解基本使用 1、獲取URL中占位符 2、占位符語法:{} 3、實例代碼: @RequestMapping("testPathVariable/{empId}") public String testPathVariable(@PathVariab ...
2023-01-19
一、@PathVariable註解基本使用
1、獲取URL中占位符
2、占位符語法:{}
3、實例代碼:
@RequestMapping("testPathVariable/{empId}") public String testPathVariable(@PathVariable("empId")Integer empId){ System.out.println(" empId = " + empId); return SUCCESS; }
<a th:href="@{/EmpController/testPathVariable/1001}">測試testPathVariable</a><br>
二、@PathVariable註解屬性
1、value屬性
(1)類型:String
(2)作用:設置占位符中的參數名
2、name屬性
(1)類型:String
3、required屬性
(1)類型:boolean
(2)作用:設置當前參數是否必須入參
①true:表示當前參數必須入參,如未入參數會報以下錯誤
Missing URI template variable 'empId' for method parameter of type Integer
②false:表示當前參數不必須入參,如未入參,會裝配null值
三、REST風格CRUD概述
1、REST的CRUD與傳統風格CRUD對比
2、REST風格CRUD優勢
(1)提高網站排名
排名方式:
①競價排名
②技術排名
(2)便於第三方平臺對接
四、SpringMVC環境搭建
五、REST風格CRUD練習——查詢
六、實現PUT&DELETE提交方法步驟
1、註冊過濾器HiddenHttpMethodFilter
2、設置表單的提交方法為POST
3、設置參數:_method=PUT或_method=DELETE
七、源碼解析HiddenHttpMethodFilter
public static final String DEFAULT_METHOD_PARAM = "_method";
private String methodParam = "_method";
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { HttpServletRequest requestToUse = request; if ("POST".equals(request.getMethod()) && request.getAttribute("javax.servlet.error.exception") == null) { String paramValue = request.getParameter(this.methodParam); if (StringUtils.hasLength(paramValue)) { String method = paramValue.toUpperCase(Locale.ENGLISH); if (ALLOWED_METHODS.contains(method)) { requestToUse = new HiddenHttpMethodFilter.HttpMethodRequestWrapper(request, method); } } } filterChain.doFilter((ServletRequest)requestToUse, response); }
private static class HttpMethodRequestWrapper extends HttpServletRequestWrapper { private final String method; public HttpMethodRequestWrapper(HttpServletRequest request, String method) { super(request); this.method = method; } public String getMethod() { return this.method; } }
八、SpringMVC處理請求數據
1、使用Servlet處理請求數據
(1)請求參數
Spring param = request.getParameter();
(2)請求頭
request.getHeader()
(3)Cookie
request.getCookies();
2、處理請求參數
(1)預設情況:可以將請求參數名,與入參參數名一致的參數,自動入參(自動類型轉換)。
(2)@RequestParam註解
①作用:如請求參數與入參參數
②屬性
value:是String類型;作用:設置需要入參的參數名
name:是String類型;作用:與value屬性作用一致
required:是Boilean類型;作用:設置當前參數,是否必須入參
defaultValue:是String類型;作用:當裝配數值未null時,指定當前defaultValue預設值
九、處理請求頭
1、語法:@RequestHeader註釋
2、屬性
(1)value:
①類型:String
②作用:設置需要獲取請求頭名稱
(2)name:
①類型:String
②作用:與value屬性作用一致
(3)required:
①類型:Boilean
②作用:設置當前參數,是否必須入參
(4)defaultValue:
①類型:String類型
②作用:當裝配數值未null時,指定當前defaultValue預設值
十、處理Cookie信息
1、語法:@CookieValue獲取Cookie數值
2、屬性:同上
3、實例代碼:
<a th:href="@{/setCookie}">設置Cookie</a> <a th:href="@{/getCookie}">獲取Cookie</a>
@RequestMapping("/setCookie") public String setCookie(HttpSession httpSession){ System.out.println("httpSession.getId() = " + httpSession.getId()); return SUCCESS; } @RequestMapping("/getCookie") public String getCookie(@CookieValue("JSESSIONID")String cookieValue){ System.out.println("cookieValue = " + cookieValue); return SUCCESS; }