3.学习SpringMVC注解深入

一.SpringMVC注解:

1.RequestParam注解:

其中required属性默认为true(必须得传而且传的名字一样),为false时可以不传。

编写jsp代码:

 1 <a href="/anno/testRequestParam?name=哈哈">RequestParam</a> 

编写AnnoController.java的方法:

 1     /**
 2      * RequestParam 页面的请求参数与接收参数不同
 3      * @param username
 4      * @return
 5      */
 6     @RequestMapping("/testRequestParam")
 7     public String testRequestParam(@RequestParam(name = "name") String username){
 8 
 9         System.out.println("执行了...");
10         System.out.println(username);
11 
12         return "success";
13     }

2.RequestBody

编写jsp代码:

1 <%--对于传输json数据时,获得请求体很重要,对于get请求是没有请求体的--%>
2 <form action="/anno/testRequestBody" method="post">
3     用户的姓名:<input type="text" name="username"><br>
4     用户年龄:<input type="text" name="age"><br>
5     <input type="submit" value="提交">
6 </form>

 1     /**
 2      * RequestBody 获取到请求体的内容
 3      * @param body
 4      * @return
 5      */
 6     @RequestMapping("/testRequestBody")
 7     public String testRequestBody(@RequestBody String body){
 8 
 9         System.out.println("执行了...");
10         System.out.println(body);
11 
12         return "success";
13     }

3.PathVariable

编写jsp代码:

 1 <a href="/anno/testPathVariable/10">PathVariable</a> 

编写方法:

 1     /**
 2      *PathVariable  绑定url中的占位符,使用restful的风格的URL(同样的URL但是不同的请求方式和占位符)
 3      * @param id
 4      * @return
 5      */
 6     @RequestMapping("/testPathVariable/{sid}")
 7     public String testPathVariable(@PathVariable(name = "sid") String id){
 8 
 9         System.out.println("执行了...");
10         System.out.println(id);
11 
12         return "success";
13     }

4.RequestHeader

编写jsp:

 1 <a href="/anno/testRequestHeader">RequestHeader</a> 

编写方法:

 1     /**
 2      * RequestHeader 获取请求头信息
 3      * @param header
 4      * @return
 5      */
 6     @RequestMapping("/testRequestHeader")
 7     public String testRequestHeader(@RequestHeader(value = "Accept") String header){
 8 
 9         System.out.println("执行了...");
10         System.out.println(header);
11 
12         return "success";
13     }

5.CookieValue

jsp:

 1 <a href="/anno/testCookieValue">CookieValue</a> 

编写方法:

 1     /**
 2      * CookieValue 获取到Cookie的值
 3      * @param cookieValue
 4      * @return
 5      */
 6     @RequestMapping("/testCookieValue")
 7     public String testCookieValue(@CookieValue(value = "JSESSIONID") String cookieValue){
 8 
 9         System.out.println("执行了...");
10         System.out.println(cookieValue);
11 
12         return "success";
13     }

6.ModelAttribute:

jsp:

1 <form action="/anno/testModelAttribute1" method="post">
2     用户的姓名:<input type="text" name="username"><br>
3     用户年龄:<input type="text" name="age"><br>
4     <input type="submit" value="提交">
5 </form>
  • 又返回值的方法:返回给后执行的方法当形参

 1     /**
 2      * ModelAttribute 测试有返回值的方法
 3      * @param user
 4      * @return
 5      */
 6     @RequestMapping("/testModelAttribute1")
 7     public String testModelAttribute1(User user){
 8 
 9         System.out.println("testModelAttribute1执行了...");
10         System.out.println(user);
11 
12         return "success";
13     }
14 
15     /**
16      * ModelAttribute 该方法会先于其他方法执行,目的是可以获取数据后先一步查询后操作数据库等
17      * @param uname
18      * @return
19      */
20     @ModelAttribute
21     public User showUser1(String uname){
22 
23         System.out.println("showUser1执行了...");
24 
25         //先获得提交的数据进行处理然后传给请求的控制器再进行处理
26         User user = new User();
27         user.setUname(uname);
28         user.setAge(20);
29         user.setDate(new Date());
30         return user;
31     }
  • 无返回值:

 1     /**
 2      * ModelAttribute 测试无返回值的方法
 3      * @param user
 4      * @return
 5      */
 6     @RequestMapping("/testModelAttribute2")
 7     public String testModelAttribute2(@ModelAttribute(value = "abc") User user){
 8 
 9         System.out.println("testModelAttribute2执行了...");
10         System.out.println(user);
11 
12         return "success";
13     }
14 
15     /**
16      * ModelAttribute 该方法会先于其他方法执行,目的是可以获取数据后先一步查询后操作数据库等
17      * @param username
18      * @param map
19      */
20     @ModelAttribute
21     public void showUser2(String username, Map<String,User> map){
22 
23         System.out.println("showUser2执行了...");
24 
25         //先获得提交的数据进行处理然后传给请求的控制器再进行处理
26         User user = new User();
27         user.setUname(username);
28         user.setAge(20);
29         user.setDate(new Date());
30 
31         map.put("abc",user);
32     }

7.SessionAttribute

jsp:

1 <a href="/anno/testSessionAttributes">向Session中存入值</a>
2 <a href="/anno/getSessionAttributes">取出session域值</a>
3 <a href="/anno/delSessionAttributes">删除session域值</a>

然后开启EL表达式:

1 <%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
1 <body>
2 入门成功
3 ${requestScope.msg}
4 
5 ${sessionScope}
6 
7 </body>

方法:

 1 /**
 2      * SessionAttributes注解
 3      * @param model
 4      * @return
 5      */
 6     @RequestMapping("/testSessionAttributes")
 7     public String testSessionAttributes(Model model){
 8 
 9         System.out.println("testSessionAttributes...");
10 
11         //底层会存储到request域对象中
12         model.addAttribute("msg","美美");
13 
14         return "success";
15     }
16 
17 
18     /**
19      * getSessionAttributes 获取Session域
20      * @param modelMap
21      * @return
22      */
23     @RequestMapping("/getSessionAttributes")
24     public String getSessionAttributes(ModelMap modelMap){
25 
26         System.out.println("getSessionAttributes...");
27 
28         String msg = (String) modelMap.get("msg");
29         System.out.println(msg);
30         return "success";
31     }
32 
33     /**
34      * delSessionAttributes 删除session域中值
35      * @param status
36      * @return
37      */
38     @RequestMapping("/delSessionAttributes")
39     public String delSessionAttributes(SessionStatus status){
40 
41         System.out.println("delSessionAttributes...");
42 
43         status.setComplete();
44         return "success";
45     }

学习完毕!

 

原文地址:https://www.cnblogs.com/zhihaospace/p/11962518.html