您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關springmvc之常用注解和操作傳入參數的示例分析,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。
一般用于jsp參數名和后臺方法參數指定,對應
/* * value=name 當jsp的參數和方法上的參數對應不上,可以指明 * required() default true;默認true 有參數則必須傳 * */ public String testRequestParam(@RequestParam(name = "name",required = false) String username){ System.out.println("執行了.........."); System.out.println(username); return "success"; }
<body> <a href="anno/testRequestParam" rel="external nofollow" rel="external nofollow" >testRequestParam</a> </body>
不傳參數,required()設置為false,方法有參數
測試
一般用于獲取post請求的方法體,jsp參數格式為鍵值對,即 key-value
該注解不適應于get請求,一般用于post請求,例如表單提交
如果要用于get請求,則需
@RequestBody(required = false)
否則報錯,此時方法參數為null
@RequestMapping(path = "testRequestBody") public String testRequestBody(@RequestBody(required = false) String body){ System.out.println("執行了.........."); System.out.println(body); return "success"; }
<body> <%--<a href="anno/testRequestParam" rel="external nofollow" rel="external nofollow" >testRequestParam</a>--%> <form action="anno/testRequestBody" method="post"> 用戶名:<input type="text" name="username"/><br> 密碼:<input type="text" name="password"/><br> <input type="submit" value="提交"/><br> </form> </body>
測試
URL的占位符,restful風格,傳參格式 url地址后/10
restful請求方式: get,post,put 配合注解@RequestMapping設置請求方式
@RequestMapping(path = "testPathVariable/{sid}",method = RequestMethod.GET)
@RequestMapping(path = "testPathVariable/{sid}",method = RequestMethod.GET) /* * {sid}表示URL的占位符 * boolean required() default true;默認參數必須傳 * */ public String testPathVariable(@PathVariable("sid") String id){ System.out.println("執行了.........."); System.out.println(id); return "success"; }
<a href="anno/testPathVariable/10" rel="external nofollow" >testPathVariable</a>
可以下載postman客戶端,模擬發送不同的請求方式
測試:
獲取請求頭的某些屬性值 如瀏覽器類型、版本等 不常用
@RequestMapping(path = "testRequestHeader",method = RequestMethod.GET) /*獲取請求頭的某些屬性值 如瀏覽器類型、版本等*/ public String testRequestHeader(@RequestHeader(value = "Accept") String head){ System.out.println("執行了.........."); System.out.println(head); return "success"; }
<a href="anno/testRequestHeader" rel="external nofollow" >testRequestHeader</a>
獲取JSESSIONID的值
@RequestMapping(path = "testCookieValue",method = RequestMethod.GET) public String testCookieValue(@CookieValue(value = "JSESSIONID") String JSESSIONID){ System.out.println("執行了.........."); System.out.println(JSESSIONID); return "success"; }
<a href="anno/testCookieValue" rel="external nofollow" >testCookieValue</a><br>
用于封裝的數據不全補全數據,或者檢查封裝數據等場景
可作用于方法和參數
修飾方法,方法入參需和控制器方法同參類型,該方法優先于控制器之前執行,且分類有返回值和無返回值
有返回值,則該方法的返回值和控制器的入參相同相同
無返回值,則該方法的參數除了和控制器的入參相同外,還需加一個map類型參數map<string,objct>
例子:
注解修飾的方法有返回值寫法
@RequestMapping(path = "testModelAttribute") public String testModelAttribute(User user){ System.out.println("執行了.........."); System.out.println(user); return "success"; } @ModelAttribute //修飾方法,該方法優先于控制器之前執行 public User showUser(User user){ /*模擬jsp傳的user封裝數據不全, 通過名字查詢數據庫對應的信息 返回全的user對象*/ user.setBirthday(new Date()); return user; }
<form action="anno/testModelAttribute" method="post"> 用戶名:<input type="text" name="uname"/><br> 年齡:<input type="text" name="age"/><br> <input type="submit" value="提交"/><br> </form>
注解修飾的方法無返回值寫法
@RequestMapping(path = "testModelAttribute") public String testModelAttribute(@ModelAttribute("key") User user){ System.out.println("執行了.........."); System.out.println(user); return "success"; } @ModelAttribute //修飾方法,該方法優先于控制器之前執行 public void showUser(User user, Map<String,User> userMap){ /*模擬jsp傳的user封裝數據不全, 通過名字查詢數據庫對應的信息 返回全的user對象*/ user.setBirthday(new Date()); userMap.put("key",user); }
測試
注解只能作用于類,用于存取數據到session域對象中,實現方法數據共享
實現方式:從request域對象中復制數據到session域中
/** * @Date 2019/9/12 2:05 * by mocar */ @Controller @RequestMapping(path = "/anno") @SessionAttributes(names = {"msg"})//從request域對象中復制到session域對象 public class annoController { @RequestMapping("/setRequest")//存入 public String setRequest(ModelMap modelMap){ System.out.println("setRequest......"); modelMap.addAttribute("msg","test");//往Request域對象存值 return "success"; } @RequestMapping("/getSession")//獲取 public String getSession(ModelMap modelMap){ System.out.println("getSession......."); Object msg = modelMap.get("msg"); System.out.println(msg.toString()); return "success"; } @RequestMapping("/delSession")//刪除 public String delSession(SessionStatus sessionStatus,ModelMap modelMap){ System.out.println("delSession......."); sessionStatus.setComplete(); Object msg = modelMap.get("msg"); System.out.println(msg.toString()); return "success"; } }
jsp:
<br> <a href="anno/setRequest" rel="external nofollow" >setRequest</a><br> <a href="anno/getSession" rel="external nofollow" >getSession</a><br> <a href="anno/delSession" rel="external nofollow" >delSession</a><br>
success.jsp 設置不忽略EL表達式,顯示session域數據
<%-- Created by IntelliJ IDEA. User: Mocar Date: 2019/9/11 Time: 4:34 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %> <html> <head> <title>快速入門</title> </head> <body> <h4>success</h4> ${sessionScope} </body> </html>
setsession
getsession
delsession
關于springmvc之常用注解和操作傳入參數的示例分析就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。