SpringMVC学习笔记(二)常用注解

1.RequestParam

  • 作用:

    • 把请求中指定名称的参数给控制器中的形参赋值。
  • 属性:
    • value:请求参数中的名称。
    • required:请求参数中是否必须提供此参数。默认值:true。表示必须提供,如果不提供将报错。

使用示例

jsp  中的代码:
<!-- requestParams 注解的使用 -->
<a href="springmvc/useRequestParam?name=test">requestParam 注解</a>控制器中的代码:
/**
* requestParams 注解的使用
* @param username
* @return
*/
@RequestMapping("/useRequestParam")
public String  useRequestParam(@RequestParam("name")String username,@RequestParam(value="age",required=false)Integer age){System.out.println(username+","+age);return "success";
}

运行结果

2.RequestBody

  • 作用:

    • 用于获取请求体内容。直接使用得到是 key=value&key=value...结构的数据。
    • get 请求方式不适用。
  • 属性:
    • required:是否必须有请求体。默认值是:true。当取值为 true 时,get 请求方式会报错。如果取值为 false,get 请求得到是 null。

使用示例

post  请求 jsp  代码:
<!-- request body 注解 -->
<form action="springmvc/useRequestBody" method="post">
用户名称:<input type="text" name="username" ><br/>
用户密码:<input type="password" name="password" ><br/>
用户年龄:<input type="text" name="age" ><br/>
<input type="submit" value=" 保存 ">
</form>get  请求 jsp  代码:
<a href="springmvc/useRequestBody?body=test">requestBody 注解 get 请求</a>控制器代码:
/**
* RequestBody 注解
* @param user
* @return
*/
@RequestMapping("/useRequestBody")
public String  useRequestBody(@RequestBody(required=false) String body){System.out.println(body);return "success";
}

post 请求运行结果:

get 请求运行结果:

3.PathVaribale

  • 作用:

    • 用于绑定 url 中的占位符。例如:请求 url 中 /delete/{id},这个{id}就是 url 占位符。url 支持占位符是 spring3.0 之后加入的。是 springmvc 支持 rest 风格 URL 的一个重要标志。
  • 属性:
    • value:用于指定 url 中占位符名称。
    • required:请求参数中是否必须提供此参数。默认值:true。表示必须提供,如果不提供将报错。

使用示例

jsp  代码:
<!-- PathVariable 注解 -->
<a href="springmvc/usePathVariable/100">pathVariable 注解</a>控制器中的代码:
/**
* PathVariable 注解
* @param user
* @return
*/
@RequestMapping("/usePathVariable/{id}")
public String  usePathVariable(@PathVariable("id") Integer id){System.out.println(id);return "success";
}

运行结果

4.RequestHeader

  • 作用:

    • 用于获取请求消息头。
  • 属性:
    • value:提供消息头名称。
    • required:请求参数中是否必须提供此参数。默认值:true。表示必须提供,如果不提供将报错。

使用示例

jsp  代码:
<!-- RequestHeader 注解 -->
<a href="springmvc/useRequestHeader">获取请求消息头</a>控制器中的代码:
/**
* RequestHeader 注解
* @param user
* @return
*/
@RequestMapping("/useRequestHeader")
public String  useRequestHeader(@RequestHeader(value="Accept-Language",
required=false)String requestHeader){System.out.println(requestHeader);return "success";
}

运行结果

5.CookieValue

  • 作用:

    • 用于把指定 cookie 名称的值传入控制器方法参数。
  • 属性:
    • value:指定 cookie 的名称。
    • required:请求参数中是否必须提供此参数。默认值:true。表示必须提供,如果不提供将报错。

使用示例

jsp  代码:
<!-- CookieValue 注解 -->
<a href="springmvc/useCookieValue">绑定 cookie 的值</a>控制器中的代码:
/**
*  Cookie 注解注解
* @param user
* @return
*/
@RequestMapping("/useCookieValue")
public String  useCookieValue(@CookieValue(value="JSESSIONID",required=false)
String cookieValue){System.out.println(cookieValue);return "success";
}

运行结果

6.ModelAttribute

  • 作用:

    • 该注解是 SpringMVC4.3 版本以后新加入的。它可以用于修饰方法和参数。
    • 出现在方法上,表示当前方法会在控制器的方法执行之前,先执行。它可以修饰没有返回值的方法,也可以修饰有具体返回值的方法。
    • 出现在参数上,获取指定的数据给参数赋值。
  • 属性:
    • value:用于获取数据的 key。key 可以是 POJO 的属性名称,也可以是 map 结构的 key。
  • 应用场景:
    • 当表单提交数据不是完整的实体类数据时,保证没有提交数据的字段使用数据库对象原来的数据。
    • 例如:我们在编辑一个用户时,用户有一个创建信息字段,该字段的值是不允许被修改的。在提交表单数据是肯定没有此字段的内容,一旦更新会把该字段内容置为 null,此时就可以使用此注解解决问题。

基于 POJO 属性使用示例

jsp  代码:
<!-- ModelAttribute 注解的基本使用 -->
<a href="springmvc/testModelAttribute?username=test">测试 modelattribute</a>控制器中的代码:
/**
* 被 ModelAttribute 修饰的方法
* @param user
*/
@ModelAttribute
public void showModel(User user) {System.out.println("执行了 showModel 方法"+user.getUsername());
}
/**
* 接收请求的方法
* @param user
* @return
*/
@RequestMapping("/testModelAttribute")
public String testModelAttribute(User user) {System.out.println("执行了控制器的方法"+user.getUsername());return "success";
}

运行结果

基于 Map 的应用场景示例 1 :ModelAttribute

jsp  代码:
需求:
修改用户信息,要求用户的密码不能修改
<!-- 修改用户信息 -->
<form action="springmvc/updateUser" method="post">
用户名称:<input type="text" name="username" ><br/>
用户年龄:<input type="text" name="age" ><br/>
<input type="submit" value=" 保存 ">
</form>控制器中的代码:
/**
* 查询数据库中用户信息
* @param user
*/
@ModelAttribute
public User showModel(String username) {//模拟去数据库查询User abc = findUserByName(username);System.out.println("执行了 showModel 方法"+abc);return abc;
}
/**
* 模拟修改用户方法
* @param user
* @return
*/
@RequestMapping("/updateUser")
public String testModelAttribute(User user) {System.out.println("控制器中处理请求的方法:修改用户:"+user);return "success";
}
/**
* 模拟去数据库查询
* @param username
* @return
*/
private User findUserByName(String username) {User user = new User();user.setUsername(username);user.setAge(19);user.setPassword("123456");return user;
}

运行结果

基于 Map 的应用场景示例 1 :ModelAttribute 修饰方法 不带返回值

需求:
修改用户信息,要求用户的密码不能修改
jsp  代码:
<!-- 修改用户信息 -->
<form action="springmvc/updateUser" method="post">
用户名称:<input type="text" name="username" ><br/>
用户年龄:<input type="text" name="age" ><br/>
<input type="submit" value=" 保存 ">
</form>控制器中的代码:
/**
* 查询数据库中用户信息
* @param user
*/
@ModelAttribute
public void showModel(String username,Map<String,User> map) {
//模拟去数据库查询User user = findUserByName(username);System.out.println("执行了 showModel 方法"+user);map.put("abc",user);
}
/**
* 模拟修改用户方法
* @param user
* @return
*/
@RequestMapping("/updateUser")
public String testModelAttribute(@ModelAttribute("abc")User user) {System.out.println("控制器中处理请求的方法:修改用户:"+user);return "success";
}
/**
* 模拟去数据库查询
* @param username
* @return
*/
private User findUserByName(String username) {User user = new User();user.setUsername(username);user.setAge(19);user.setPassword("123456");return user;
}

运行结果

7.SessionAttribute

  • 作用:

    • 用于多次执行控制器方法间的参数共享。
  • 属性:
    • value:用于指定存入的属性名称。
    • type:用于指定存入的数据类型。

使用示例

jsp  代码:
<!-- SessionAttribute 注解的使用 -->
<a href="springmvc/testPut">存入 SessionAttribute</a>
<hr/>
<a href="springmvc/testGet">取出 SessionAttribute</a>
<hr/>
<a href="springmvc/testClean">清除 SessionAttribute</a>控制器中的代码:
/**
* SessionAttribute 注解的使用
* @author 黑马程序员
* @Company http://www.ithiema.com
* @Version 1.0
*/
@Controller("sessionAttributeController")
@RequestMapping("/springmvc")
@SessionAttributes(value ={"username","password"},types={Integer.class})
public class SessionAttributeController {
/**
* 把数据存入 SessionAttribute
* @param model
* @return
* Model 是 spring 提供的一个接口,该接口有一个实现类 ExtendedModelMap
* 该类继承了 ModelMap,而 ModelMap 就是 LinkedHashMap 子类
*/
@RequestMapping("/testPut")
public String testPut(Model model){model.addAttribute("username", "泰斯特");model.addAttribute("password","123456");model.addAttribute("age", 31);//跳转之前将数据保存到 username、password 和 age 中,因为注解@SessionAttribute 中有这几个参数return "success";
}
@RequestMapping("/testGet")
public String testGet(ModelMap model){System.out.println(model.get("username")+";"+model.get("password")+";"+model.get("age"));return "success";
}
@RequestMapping("/testClean")
public String complete(SessionStatus sessionStatus){sessionStatus.setComplete();return "success";}

运行结果

转载于:https://www.cnblogs.com/yangweiguo123/p/11286606.html

SpringMVC学习笔记(二)常用注解相关推荐

  1. springmvc学习笔记二:重定向,拦截器,参数绑定

    springmvc学习笔记二:重定向,拦截器,参数绑定 Controller方法返回值 返回ModelAndView controller方法中定义ModelAndView对象并返回,对象中可添加mo ...

  2. springMVC学习笔记(二)-----注解和非注解入门小程序

    阅读目录 一:基础环境准备 二:非注解的处理器和映射器 三:注解的处理器映射器和适配器 四:springmvc.xml中的内容以及项目工程目录 最近一直在做一个电商的项目,周末加班,忙的都没有时间更新 ...

  3. spring学习笔记04-IOC常用注解(一)

    文章目录 2.3常用注解 2.3.1 用于创建对象的 2.3.1.1 @Component 2.3.1.2 @Controller @Service @Repository 2.3.2 用于注入数据的 ...

  4. SpringMVC 学习笔记(二) @RequestMapping、@PathVariable等注解

    版权声明:本文为博主原创文章,博客地址:http://blog.csdn.net/a67474506?viewmode=contents 1.1. @RequestMapping映射请求 Spring ...

  5. spring学习笔记05-IOC常用注解(二)

    文章目录 2.3 关于 Spring 注解和 XML 的选择问题 2.4spring 管理对象细节 2.5spring 的纯注解配置 2.5.1 待改造的问题 2.5.2 新注解说明 2.5.2.1 ...

  6. SpringMVC学习记录二——非注解和注解的处理器映射器和适配器

    3      非注解的处理器映射器和适配器 3.1      非注解的处理器映射器 处理器映射器: org.springframework.web.servlet.handler.BeanNameUr ...

  7. springMVC学习笔记二

    原理 发起请求时被前置控制器拦截到,这个其实就是一个DispatcherServlet,然后根据请求的参数生成代理请求,找到请求对应的实际控制器,控制器处理请求,创建数据模型,访问数据库,将模型响应给 ...

  8. springmvc学习笔记(10)-springmvc注解开发之商品改动功能

    springmvc学习笔记(10)-springmvc注解开发之商品改动功能 springmvc学习笔记(10)-springmvc注解开发之商品改动功能 标签: springmvc springmv ...

  9. SpringMVC学习笔记

    文章目录 SpringMVC学习笔记 Spring MVC 什么是 MVC 设计模式? Spring MVC 的核心组件 Spring MVC 的工作流程 如何使用? Spring MVC 注解 Sp ...

最新文章

  1. BootStrap table 数据填充与分页应用总结
  2. 更新 绑定数据_Blazor 修仙之旅 组件与数据绑定
  3. KOFLive Beta Daily-Scrum 9
  4. 图灵计算机模型意义,图灵机有什么意义_学习图灵机模型中遇到的问题
  5. 首席技术执行官_如何在几分钟内找到任何首席执行官的电子邮件地址
  6. gitbook mysql_使用Gitbook做笔记
  7. android 多态如何组件化,Android组件化之子模块之间通信方案
  8. springMVC4(14)各类视图输出实例分析
  9. PHP服务缓存加速软件
  10. 大姨吗的戏 投资人的伤
  11. 微分方程数值解法(1)——常微分方程初值问题的数值解法
  12. dpdk Ipv4组包逻辑解析
  13. NSI50150ADT4G TO-252 ON安森美 150-350mA 50V 4.2W LED驱动器 工业级规格认证
  14. IR-CUT选择须知
  15. 一发入魂的音乐,如何来到你的耳边?
  16. javaweb常识类英语
  17. VS2019 error C2855: 命令行选项“/source-charset”与预编译头不一致(Charsets inconsistent with precompiled heade)
  18. 【软件测试】QTP参数化的使用
  19. 为什么小姐姐能摇一晚上不倒?
  20. Android 之 拦截手机短信并自动转发

热门文章

  1. mysql错误代码1813_ERROR 1813 (HY000) at line 404: Tablespace for table '`xxx`.`xxxxx`' exists.
  2. java广告无限点击_什么是互联网广告,互联网广告的投放形式都有哪些?
  3. echat 图表动态数据生成,渲染,自定义Y轴坐标值
  4. 网站接入QQ登录最新2020 java版本
  5. Docker/Docker 起步123
  6. mac m1下golang连接mysql极速入门
  7. linux中fork和exec
  8. LeetCode每日一题 24. 两两交换链表中的节点
  9. Leetcode题库 6.Z字形变换(C实现)
  10. 排序算法——快速排序算法