SpringMVC基礎知識(2)
阿新 • • 發佈:2021-07-08
在之前的servlet中我們可以通過request.getParameter()來獲取請求中的引數,但是在我們編寫的SpringMVC的應用程式中,在具體請求的方法中並不包含request引數,
需要使用以下幾個註解:
@RequestParam:獲取請求的引數
@RequestHeader:獲取請求頭資訊
@CookieValue:獲取cookie中的值
@RequestParam的基本使用
package com.llxazy.controller; import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; @Controller public class RequestController { /** * 如何獲取SpringMVC中請求中的資訊 * 預設情況下,可以直接在方法的引數中填寫跟請求一樣的名稱,此時會預設接受引數 * 如果有值,直接賦值,如果沒有,那麼直接給空值 * * @RequestParam:獲取請求中的引數值,使用此註解之後,引數的名稱不需要跟請求的名稱一致,但是必須要寫 * public String request(@RequestParam("user") String username){ * * 此註解還包含三個引數: * value:表示要獲取的引數值 * required:表示此引數是否必須,預設是true,如果不寫引數那麼會報錯,如果值為false,那麼不寫引數不會有任何錯誤 * defaultValue:如果在使用的時候沒有傳遞引數,那麼定義預設值即可 *@param username * @return */ @RequestMapping("/request") public String request(@RequestParam(value = "user",required = false,defaultValue = "hehe") String username){ System.out.println(username); return "success"; } }
@RequestHeader的基本使用:
package com.llxazy.controller;import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestHeader; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import sun.management.resources.agent; @Controller public class RequestController { /** * 如果需要獲取請求頭資訊該如何處理呢? * 可以使用@RequestHeader註解, * public String header(@RequestHeader("User-Agent") String agent){ * 相當於 request.getHeader("User-Agent") * * 如果要獲取請求頭中沒有的資訊,那麼此時會報錯,同樣,此註解中也包含三個引數,跟@RequestParam一樣 * value * required * defalutValue * @param agent * @return */ @RequestMapping("/header") public String header(@RequestHeader("User-Agent") String agent){ System.out.println(agent); return "success"; } }
@CookieValue的基本使用
package com.llxazy.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.CookieValue; import org.springframework.web.bind.annotation.RequestHeader; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import sun.management.resources.agent; @Controller public class RequestController { /** * 如果需要獲取cookie資訊該如何處理呢? * 可以使用@CookieValue註解, * public String cookie(@CookieValue("JSESSIONID") String id){ * 相當於 * Cookie[] cookies = request.getCookies(); * for(Cookie cookie : cookies){ * cookie.getValue(); * } * 如果要獲取cookie中沒有的資訊,那麼此時會報錯,同樣,此註解中也包含三個引數,跟@RequestParam一樣 * value * required * defalutValue * @param id * @return */ @RequestMapping("/cookie") public String cookie(@CookieValue("JSESSIONID") String id){ System.out.println(id); return "success"; } }
在SpringMVC的控制中,能直接完成物件的屬性賦值操作,不需要人為干預。
User.java
package com.llxazy.bean; import java.util.Date; public class User { private Integer id; private String name; private Integer age; private Date date; private Address address; //省略get/set/toString方法 }
Address.java
package com.llxazy.bean; public class Address { private String province; private String city; private String town;
//省略get/set/toString方法
}
login.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> <form action="addUser" method="post"> 編號:<input type="text" name="id"/><br> 姓名:<input type="text" name="name"/><br> 年齡:<input type="text" name="age"/><br> 日期:<input type="text" name="date"/><br> 省份:<input type="text" name="address.province"/><br> 城市:<input type="text" name="address.city"/><br> 區域:<input type="text" name="address.town"/><br> <input type="submit" value="submit"/><br> </form> </body> </html>
UserController.java
package com.llxazy.controller; import com.llxazy.bean.User; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller public class UserController { @RequestMapping("/addUser") public String addUser(User user){ System.out.println(user); return "success"; } }