——注:基于spring-framework-5.2.6.RELEASE

1. RequestMapping注解

1.1 源码

  1. @Target({ElementType.TYPE, ElementType.METHOD})
  2. @Retention(RetentionPolicy.RUNTIME)
  3. @Documented
  4. @Mapping
  5. public @interface RequestMapping {
  6. String name() default "";
  7. @AliasFor("path")
  8. String[] value() default {};
  9. @AliasFor("value")
  10. String[] path() default {};
  11. RequestMethod[] method() default {};
  12. String[] params() default {};
  13. String[] headers() default {};
  14. String[] consumes() default {};
  15. String[] produces() default {};
  16. }

1.2 作用

用于建立请求 URL 和处理请求方法之间的对应关系。

1.3 出现位置

位置 具体描述 举例
类上 请求 URL 的第一级访问目录。此处不写的话,就相当于应用的根目录。 /account
方法上 请求 URL 的第二级访问目录 /add
/delete

1.4 相关属性

属性名称 属性描述 举例
value 用于指定请求的 URL。它和 path 属性的作用是一样的。(当只有一个属性时,可以省略value=) @RequestMapping(value = “/add”)
path 用于指定请求的 URL。它和 value属性的作用是一样的。(当只有一个属性时,可以省略path=) @RequestMapping(path = “/add”)
method 用于指定请求的方式


@RequestMapping(path = “/add”, method = RequestMethod.GET)
params 用于指定限制请求参数的条件。它支持简单的表达式。要求请求参数的 key 和 value 必须和
配置的一模一样。
@RequestMapping(value=”/removeAccount”,params= {“accountName”,”money>100”})
headers 用于指定限制请求消息头的条件
consumes 未知
produces 未知

1.5 案例展示

  1. package com.tipsyspirit.controller;
  2. import com.tipsyspirit.vo.Account;
  3. import com.tipsyspirit.vo.UserProV1;
  4. import org.springframework.stereotype.Controller;
  5. import org.springframework.web.bind.annotation.RequestMapping;
  6. /**
  7. * 请求参数的绑定
  8. */
  9. @Controller
  10. @RequestMapping("/params")
  11. public class ParamController {
  12. /**
  13. * 测试是否创建成功controller
  14. * @return
  15. */
  16. @RequestMapping("/testParamController")
  17. public String testParamController(){
  18. System.out.println("测试是否创建成功...");
  19. return "success";
  20. }
  21. /**
  22. * 测试接收前端数据----简单初级版单参数
  23. * @param username
  24. * @return
  25. */
  26. @RequestMapping("/testParamSimpleSingleParam")
  27. public String testParamSimpleSingleParam(String username){
  28. System.out.println("测试接收前端数据--初级版单参数...");
  29. System.out.println("名字:"+username);
  30. return "success";
  31. }
  32. /**
  33. * 测试接收前端数据----简单初级版多参数
  34. * @param username
  35. * @return
  36. */
  37. @RequestMapping("/testParamSimpleMultiParam")
  38. public String testParamSimpleMultiParam(String username, String password){
  39. System.out.println("测试接收前端数据--初级版多参数...");
  40. System.out.println("名字:"+username);
  41. System.out.println("密码:"+password);
  42. return "success";
  43. }
  44. /**
  45. * 测试接收前端数据----简单中级版----使用javabean
  46. * @param username
  47. * @return
  48. */
  49. @RequestMapping("/testParamSimpleJavaBeanParam")
  50. public String testParamSimpleJavaBeanParam(Account account){
  51. System.out.println("测试接收前端数据----简单中级版----使用javabean...");
  52. System.out.println("名字:"+account.getUsername());
  53. System.out.println("密码:"+account.getPassword());
  54. System.out.println("金钱:"+account.getMoney());
  55. System.out.println(account.toString());
  56. return "success";
  57. }
  58. }

2. RequestParam注解

2.1 源码

  1. package org.springframework.web.bind.annotation;
  2. import java.lang.annotation.Documented;
  3. import java.lang.annotation.ElementType;
  4. import java.lang.annotation.Retention;
  5. import java.lang.annotation.RetentionPolicy;
  6. import java.lang.annotation.Target;
  7. import org.springframework.core.annotation.AliasFor;
  8. @Target({ElementType.PARAMETER})
  9. @Retention(RetentionPolicy.RUNTIME)
  10. @Documented
  11. public @interface RequestParam {
  12. @AliasFor("name")
  13. String value() default "";
  14. @AliasFor("value")
  15. String name() default "";
  16. boolean required() default true;
  17. String defaultValue() default "\n\t\t\n\t\t\n\ue000\ue001\ue002\n\t\t\t\t\n";
  18. }

2.2 作用

把请求中指定名称的参数给控制器中的形参赋值。

2.3 出现位置

位置 具体描述 举例
方法上的参数列表上 参数列表上的每个参数,用于指定对参数的约束 @RequestParam(“name”)String username

2.4 相关属性

属性名称 属性描述 举例
value 请求参数中的名称 @RequestParam(“name”)String username
required 请求参数中是否必须提供此参数。默认值:true。表示必须提供,如果不提供将报错 @RequestParam(value=”age”,required=false)Integer age

2.5 案例展示

  1. // jsp代码 ----------执行成功
  2. <h2>测试RequestParam</h2>
  3. <form action="/anno/testRequestParam" method="post">
  4. <label>姓名:</label>
  5. <input type="text" name="name"/><br>
  6. <label>年龄:</label>
  7. <input type="text" name="age"/><br>
  8. <input type="submit" value="提交"/>
  9. </form>
  1. @Controller
  2. @RequestMapping("/anno")
  3. public class AnnotationController {
  4. /**
  5. * 测试RequestParam 注解的用法
  6. * @param name
  7. * @param age
  8. * @return
  9. */
  10. @RequestMapping("/testRequestParam")
  11. public String testRequestParam(@RequestParam(value = "name", required = true) String name,
  12. @RequestParam(value = "age", required = false) Integer age){
  13. System.out.println("executing...........");
  14. System.out.println("name: "+ name);
  15. System.out.println("age: "+ (age>0?age:""));
  16. return "success";
  17. }
  18. }

2.6 失败案例(前端)

  1. // jsp代码 ----------执行失败
  2. // 原因:参数不匹配,后台的@RequestParam指定的名称是name,而前端传过去的参数是ename
  3. <h2>测试RequestParam</h2>
  4. <form action="/anno/testRequestParam" method="post">
  5. <label>姓名:</label>
  6. <input type="text" name="ename"/><br>
  7. <label>年龄:</label>
  8. <input type="text" name="age"/><br>
  9. <input type="submit" value="提交"/>
  10. </form>

3. RequestBody注解

3.1 源码

  1. package org.springframework.web.bind.annotation;
  2. import java.lang.annotation.Documented;
  3. import java.lang.annotation.ElementType;
  4. import java.lang.annotation.Retention;
  5. import java.lang.annotation.RetentionPolicy;
  6. import java.lang.annotation.Target;
  7. @Target({ElementType.PARAMETER})
  8. @Retention(RetentionPolicy.RUNTIME)
  9. @Documented
  10. public @interface RequestBody {
  11. boolean required() default true;
  12. }

3.2 作用

用于获取请求体内容。直接使用得到是 key=value&key=value…结构的数据。
get 请求方式不适用。
针对的是post, put, delete等操作
主要是用于json数据的处理。

3.3 出现位置

位置 具体描述 举例
方法上的参数列表上 参数列表上的每个参数,用于指定对参数的约束 @RequestBody String username

3.4 相关属性

属性名称 属性描述 举例
required required:是否必须有请求体。默认值是:true。当取值为 true 时,get 请求方式会报错。如果取值
为 false,get 请求得到是 null。
@RequestBody(required=false) String body

3.5 案例展示

  1. // jsp代码 ----------执行成功
  2. <h2>测试RequestBody--post---单参数</h2>
  3. <form action="/anno/testRequestBodySingleParam" method="post">
  4. <label>姓名:</label>
  5. <input type="text" name="ename"/><br>
  6. <input type="submit" value="提交"/>
  7. </form>
  1. @Controller
  2. @RequestMapping("/anno")
  3. public class AnnotationController {
  4. /**
  5. * 测试RequestBody 注解的用法------单个参数
  6. * @param name
  7. * @return
  8. */
  9. @RequestMapping("/testRequestBodySingleParam")
  10. public String testRequestBody(@RequestBody String ename){
  11. System.out.println("executing............");
  12. System.out.println("name: "+ ename);
  13. // 注意此时的中文数据将会出现乱码, 主要原因没有采用 application/json的方式请求
  14. // 后续会进行处理, 因为目前主要使用的就是json格式进行数据传输
  15. // 而不是 application/x-www-form-urlencoded;charset=UTF-8
  16. return "success";
  17. }
  18. }

4. PathVariable注解

4.1 源码

  1. package org.springframework.web.bind.annotation;
  2. import java.lang.annotation.Documented;
  3. import java.lang.annotation.ElementType;
  4. import java.lang.annotation.Retention;
  5. import java.lang.annotation.RetentionPolicy;
  6. import java.lang.annotation.Target;
  7. import org.springframework.core.annotation.AliasFor;
  8. @Target({ElementType.PARAMETER})
  9. @Retention(RetentionPolicy.RUNTIME)
  10. @Documented
  11. public @interface PathVariable {
  12. @AliasFor("name")
  13. String value() default "";
  14. @AliasFor("value")
  15. String name() default "";
  16. boolean required() default true;
  17. }

4.2 作用

用于绑定 url 中的占位符。例如:请求 url 中 /delete/{id},这个{id}就是 url 占位符。
url 支持占位符是 spring3.0 之后加入的。是 springmvc 支持 rest 风格 URL 的一个重要标志。

4.3 出现位置

位置 具体描述 举例
方法上的参数列表上 参数列表上的每个参数,用于参数是否可以占位 @PathVariable(“id”) Integer id

4.4 相关属性

属性名称 属性描述 举例
value 用于指定 url 中占位符名称,同name @PathVariable(“id”) Integer id
name 用于指定 url 中占位符名称,同value @PathVariable(“id”) Integer id
required 是否必须提供占位符。 @PathVariable(value=”age”,required=false)Integer age

4.5 案例展示

  1. // jsp代码 ----------执行成功
  2. <h2>测试PathVariable 注解的用法</h2>
  3. <a href="/anno/testPathVariable/123">测试PathVariable</a>
  4. <hr>
  1. @Controller
  2. @RequestMapping("/anno")
  3. public class AnnotationController {
  4. /**
  5. * 测试PathVariable 注解的用法
  6. * @param id
  7. * @return
  8. */
  9. @RequestMapping("/testPathVariable/{id}")
  10. public String testPathVariable(@PathVariable("id") String id){
  11. System.out.println("id: "+id);
  12. return "success";
  13. }
  14. }

4.6 案例展示(多参数)

  1. // jsp代码 ----------执行成功
  2. <h2>测试PathVariable 注解的用法---多参数</h2>
  3. <a href="/anno/testPathVariableMulti/123-zqw">测试PathVariable</a>
  4. <hr>
  1. @Controller
  2. @RequestMapping("/anno")
  3. public class AnnotationController {
  4. /**
  5. * 测试PathVariable 注解的用法----多参数
  6. * @param id
  7. * @param name
  8. * @return
  9. */
  10. @RequestMapping("/testPathVariableMulti/{id}-{name}")
  11. public String testPathVariableMulti(@PathVariable("id") String id, @PathVariable(value = "name", required = false) String name){
  12. System.out.println("executing............");
  13. System.out.println("id: "+id);
  14. System.out.println("name: "+name);
  15. return "success";
  16. }
  17. }

5. RequestHeader注解

5.1 源码

  1. package org.springframework.web.bind.annotation;
  2. import java.lang.annotation.Documented;
  3. import java.lang.annotation.ElementType;
  4. import java.lang.annotation.Retention;
  5. import java.lang.annotation.RetentionPolicy;
  6. import java.lang.annotation.Target;
  7. import org.springframework.core.annotation.AliasFor;
  8. @Target({ElementType.PARAMETER})
  9. @Retention(RetentionPolicy.RUNTIME)
  10. @Documented
  11. public @interface RequestHeader {
  12. @AliasFor("name")
  13. String value() default "";
  14. @AliasFor("value")
  15. String name() default "";
  16. boolean required() default true;
  17. String defaultValue() default "\n\t\t\n\t\t\n\ue000\ue001\ue002\n\t\t\t\t\n";
  18. }

5.2 作用

用于获取请求消息头。(注: 在实际开发中一般不怎么用)

5.3 出现位置

位置 具体描述 举例
方法上的参数列表上 参数列表上的每个参数,用于参数是否需要消息头信息 @RequestHeader(value=”Accept-Language”)String requestHeader

5.4 相关属性

属性名称 属性描述 举例
value 提供消息头名称,同name @RequestHeader(value=”Accept-Language”)String requestHeader
name 提供消息头名称,同value @RequestHeader(name=”Accept-Language”)String requestHeader
required 是否必须有此消息头 @RequestHeader(value=”Accept-Language”,
required=false)String requestHeader

5.5 案例展示

  1. // jsp代码 ----------执行成功
  2. <h2>测试RequestHeader 注解的用法</h2>
  3. <a href="/anno/testRequestHeader">测试RequestHeader</a>
  4. <hr>
  1. @Controller
  2. @RequestMapping("/anno")
  3. public class AnnotationController {
  4. /**
  5. * 测试RequestHeader 注解的用法
  6. * @param header
  7. * @return
  8. */
  9. @RequestMapping("/testRequestHeader")
  10. public String testRequestHeader(@RequestHeader(value = "Accept-Language",
  11. required = false) String header){
  12. System.out.println("executing............");
  13. System.out.println("header: "+header);
  14. return "success";
  15. }
  16. }

6. CookieValue注解

6.1 源码

  1. package org.springframework.web.bind.annotation;
  2. import java.lang.annotation.Documented;
  3. import java.lang.annotation.ElementType;
  4. import java.lang.annotation.Retention;
  5. import java.lang.annotation.RetentionPolicy;
  6. import java.lang.annotation.Target;
  7. import org.springframework.core.annotation.AliasFor;
  8. @Target({ElementType.PARAMETER})
  9. @Retention(RetentionPolicy.RUNTIME)
  10. @Documented
  11. public @interface CookieValue {
  12. @AliasFor("name")
  13. String value() default "";
  14. @AliasFor("value")
  15. String name() default "";
  16. boolean required() default true;
  17. String defaultValue() default "\n\t\t\n\t\t\n\ue000\ue001\ue002\n\t\t\t\t\n";
  18. }

6.2 作用

用于把指定 cookie 名称的值传入控制器方法参数。(注: 在实际开发中一般不怎么用)

6.3 出现位置

位置 具体描述 举例
方法上的参数列表上 参数列表上的每个参数,用于参数是否需要cookie信息 @CookieValue(value=”JSESSIONID”) String cookieValue

6.4 相关属性

属性名称 属性描述 举例
value 指定 cookie 的名称,同name @CookieValue(value=”JSESSIONID”) String cookieValue
name 指定 cookie 的名称,同value @CookieValue(value=”JSESSIONID”) String cookieValue
required 是否必须有此 cookie @CookieValue(value=”JSESSIONID”,required=false)
String cookieValue

6.5 案例展示

  1. // jsp代码 ----------执行成功
  2. <h2>测试CookieValue 注解的用法</h2>
  3. <a href="/anno/testCookieValue">测试CookieValue</a>
  4. <hr>
  1. @Controller
  2. @RequestMapping("/anno")
  3. public class AnnotationController {
  4. /**
  5. * 测试CookieValue 注解的用法
  6. * @param cookieValue
  7. * @return
  8. */
  9. @RequestMapping("/testCookieValue")
  10. public String testCookieValue(@CookieValue(value = "JSESSIONID", required = false) String cookieValue){
  11. System.out.println("executing............");
  12. System.out.println("cookieValue: "+cookieValue);
  13. return "success";
  14. }
  15. }

7. ModelAttribute注解

7.1 源码

  1. package org.springframework.web.bind.annotation;
  2. import java.lang.annotation.Documented;
  3. import java.lang.annotation.ElementType;
  4. import java.lang.annotation.Retention;
  5. import java.lang.annotation.RetentionPolicy;
  6. import java.lang.annotation.Target;
  7. import org.springframework.core.annotation.AliasFor;
  8. @Target({ElementType.PARAMETER, ElementType.METHOD})
  9. @Retention(RetentionPolicy.RUNTIME)
  10. @Documented
  11. public @interface ModelAttribute {
  12. @AliasFor("name")
  13. String value() default "";
  14. @AliasFor("value")
  15. String name() default "";
  16. boolean binding() default true;
  17. }

7.2 作用

  1. 该注解是 SpringMVC4.3 版本以后新加入的。它可以用于修饰方法和参数。
  2. 出现在方法上,表示当前方法会在控制器的方法执行之前,先执行。它可以修饰没有返回值的方法,也可

以修饰有具体返回值的方法。

  1. 出现在参数上,获取指定的数据给参数赋值。

    7.3 出现位置

    | 位置 | 具体描述 | 举例 | | :—-: | :—-: | :—-: | | 方法的参数列表上 | 获取指定的数据给参数赋值。 | @ModelAttribute(value=”a”) User user | | 方法上 | 表示当前方法会在控制器的方法执行之前,先执行。它可以修饰没有返回值的方法,也可
    以修饰有具体返回值的方法。 | @ModelAttributepublic void showModel(User user){} |

7.4 相关属性

属性名称 属性描述 举例
value 用于获取数据的 key,同name @ModelAttribute(value=”a”) User user
name 用于获取数据的 key,同value @ModelAttribute(name=”a”) User user

7.5 案例展示(修饰方法执行顺序—参数POJO)

  1. // jsp代码 ----------执行成功
  2. <h2>测试ModelAttribute 注解的用法</h2>
  3. <form action="/anno/testModelAttribute" method="post">
  4. <label>姓名:</label>
  5. <input type="text" name="ename">
  6. <br>
  7. <label>年龄:</label>
  8. <input type="text" name="age">
  9. <br>
  10. <input type="submit" value="提交">
  11. </form>
  1. @Controller
  2. @RequestMapping("/anno")
  3. public class AnnotationController {
  4. /**
  5. * 测试ModelAttribute 注解的用法
  6. * @param cookieValue
  7. * @return
  8. */
  9. @RequestMapping("/testModelAttribute")
  10. public String testModelAttributeForSequence(User user){
  11. System.out.println("executing............");
  12. System.out.println("cookieValue: ");
  13. return "success";
  14. }
  15. /**
  16. * 被ModelAttribute注解修饰的方法
  17. * @param user
  18. */
  19. @ModelAttribute
  20. public void showModel(User user){
  21. System.out.println("执行了showModel方法----"+user.getEname());
  22. }
  23. }

总结: 被ModelAttribute注解修饰的方法肯定是优先于控制器中的其他方法执行的, 可以通过它实现部分初始化操作.

7.6 案例展示(修饰方法有返回值)

7.6.1 失败案例

  1. // jsp代码 ----------执行不成功
  2. <h2>测试ModelAttribute 注解的用法</h2>
  3. <form action="/anno/testModelAttribute" method="post">
  4. <label>姓名:</label>
  5. <input type="text" name="ename">
  6. <br>
  7. <label>年龄:</label>
  8. <input type="text" name="age">
  9. <br>
  10. <input type="submit" value="提交">
  11. </form>
  1. @Controller
  2. @RequestMapping("/anno")
  3. public class AnnotationController {
  4. /**
  5. * 测试ModelAttribute 注解的用法---有返回值
  6. * @param user
  7. * @return
  8. */
  9. @RequestMapping("/testModelAttributeForReturn")
  10. public String testModelAttributeForReturn(User user){
  11. System.out.println("executing............");
  12. System.out.println(user.toString());
  13. return "success";
  14. }
  15. /**
  16. * 被ModelAttribute注解修饰的方法2
  17. * @param user
  18. */
  19. @ModelAttribute
  20. public User showModel3(User user){
  21. System.out.println("执行了showModel2方法----"+user.getEname());
  22. user.setEname(user.getEname()+"v2");
  23. return user;
  24. }
  25. // 类似过滤器的作用,没有效果
  26. }

7.6.2 成功案例

  1. // jsp代码 ----------执行成功
  2. <h2>测试ModelAttribute有返回值 注解的用法</h2>
  3. <a href="/anno/testModelAttributeForReturn?username=zhangsan">测试CookieValue</a>
  1. @Controller
  2. @RequestMapping("/anno")
  3. public class AnnotationController {
  4. /**
  5. * 测试ModelAttribute 注解的用法---有返回值
  6. * @param user
  7. * @return
  8. */
  9. @RequestMapping("/testModelAttributeForReturn")
  10. public String testModelAttributeForReturn(User user){
  11. System.out.println("executing............");
  12. System.out.println(user.toString());
  13. return "success";
  14. }
  15. /**
  16. * 被ModelAttribute注解修饰的方法2
  17. * @param username
  18. */
  19. @ModelAttribute
  20. public User showModel2(String username){
  21. User user1 = new User();
  22. user1.setEname(username);
  23. user1.setAge(18);
  24. System.out.println("执行了showModel2方法----"+user1.getEname());
  25. return user1;
  26. }
  27. }

总结: 被ModelAttribute注解修饰的方法如果有返回值时, 可以用作类似过滤器的角色; 如果传过去已经是一个与请求路径对应的方法参数类型不一样时, 通过传入某个字段,然后通过字段进行信息匹配(数据库查询的动态方式或者数据直接设置的静态方式),然后给请求路径对应的方法进行处理; 如果传过去已经是一个与请求路径对应的方法参数类型一样的, 被ModelAttribute注解修饰的方法的静态设置将没有效果

7.7 案例展示(修饰方法有返回值/修饰参数)

  1. // jsp代码 ----------执行成功
  2. <h2>测试ModelAttribute无返回值 注解的用法</h2>
  3. <a href="/anno/testModelAttributeForNoReturn?username=lisi">测试ModelAttribute无返回值</a>
  4. <hr>
  1. @Controller
  2. @RequestMapping("/anno")
  3. public class AnnotationController {
  4. /**
  5. * 被ModelAttribute注解修饰的方法----无返回值
  6. * @param username
  7. */
  8. @ModelAttribute
  9. public void showModel4(String username, Map<String, User> maps){
  10. User user = new User();
  11. user.setEname(username);
  12. user.setAge(18);
  13. maps.put("a", user);
  14. }
  15. /**
  16. * 被ModelAttribute注解修饰的参数
  17. * @param user
  18. * @return
  19. */
  20. @RequestMapping("testModelAttributeForNoReturn")
  21. public String testModelAttributeForNoReturn(@ModelAttribute("a") User user){
  22. System.out.println("执行testModelAttributeForNoReturn方法");
  23. System.out.println(user.toString());
  24. return "success";
  25. }
  26. }

8. SessionAttribute注解

8.1 源码

  1. package org.springframework.web.bind.annotation;
  2. import java.lang.annotation.Documented;
  3. import java.lang.annotation.ElementType;
  4. import java.lang.annotation.Inherited;
  5. import java.lang.annotation.Retention;
  6. import java.lang.annotation.RetentionPolicy;
  7. import java.lang.annotation.Target;
  8. import org.springframework.core.annotation.AliasFor;
  9. @Target({ElementType.TYPE})
  10. @Retention(RetentionPolicy.RUNTIME)
  11. @Inherited
  12. @Documented
  13. public @interface SessionAttributes {
  14. @AliasFor("names")
  15. String[] value() default {};
  16. @AliasFor("value")
  17. String[] names() default {};
  18. Class<?>[] types() default {};
  19. }

8.2 作用

用于多次执行控制器方法间的参数共享。

8.3 出现位置

位置 具体描述 举例
类上 @RequestHeader(value=”Accept-Language”)String requestHeader

8.4 相关属性

属性名称 属性描述 举例
value 用于指定存入的属性名称,同name @RequestHeader(value=”Accept-Language”)String requestHeader
name 提供消息头名称,同value @RequestHeader(name=”Accept-Language”)String requestHeader
type 用于指定存入的数据类型。 @RequestHeader(value=”Accept-Language”,
required=false)String requestHeader

8.5 案例展示

  1. // jsp代码 ----------执行成功
  2. <h2>测试SessionAttributes 注解的用法</h2>
  3. <a href="/anno/setSessionData?key=username&value=zhangsan">测试SessionAttributes----设置</a>
  4. <a href="/anno/getSessionData?key=username">测试SessionAttributes----获取</a>
  5. <a href="/anno/clearSessionData">测试SessionAttributes----清空</a>
  6. <hr>
  1. @Controller
  2. @RequestMapping("/anno")
  3. public class AnnotationController {
  4. /**
  5. * 保存session内容
  6. * @param model
  7. * @param key
  8. * @param value
  9. * @return
  10. */
  11. @RequestMapping("/setSessionData")
  12. public String setSessionData(Model model, String key, String value){
  13. model.addAttribute(key, value);
  14. return "success";
  15. }
  16. /**
  17. * 获取session内容
  18. * @param map
  19. * @param key
  20. * @return
  21. */
  22. @RequestMapping("/getSessionData")
  23. public String getSessionData(ModelMap map, String key){
  24. System.out.println("执行getSessionData方法");
  25. String value = (String)map.getAttribute(key);
  26. System.out.println(key+"对应的值:"+ value);
  27. return "success";
  28. }
  29. /**
  30. * 清空session内容
  31. * @param sessionStatus
  32. * @return
  33. */
  34. @RequestMapping("/clearSessionData")
  35. public String clearSessionData(SessionStatus sessionStatus){
  36. System.out.println("执行clearSessionData方法");
  37. sessionStatus.setComplete();
  38. return "success";
  39. }
  40. }
  1. // 成功后的页面跳转页面
  2. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  3. <html>
  4. <head>
  5. <title>测试</title>
  6. </head>
  7. <body>
  8. <h1>哈哈哈哈哈,成功了</h1>
  9. ${username}
  10. </body>
  11. </html>