SpringMVC--常用注解,java面试数据库试题

本文详细介绍了SpringMVC中常用的注解,包括@RequestParam, @RequestBody, @PathVariable, @RequestHeader, @CookieValue, @ModelAttribute以及@SessionAttribute的使用方法和应用场景,通过实例代码展示了它们在处理请求参数、获取请求头和Cookie值等方面的功能。" 82889712,5686716,TensorFlow教程:利用matplotlib可视化Iris数据集,"['数据可视化', 'matplotlib', 'TensorFlow', 'Iris数据集', '机器学习基础']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

@RequestMapping("/anno")

public class AnnoController {

@RequestMapping("/testRequestParam")

public String testRequestParam(@RequestParam(name = “name”) String username,@RequestParam(value = “age”,required=false) Integer age){

System.out.println(“执行了…”);

System.out.println(“用户名是:”+username+",年龄:"+age);

return “success”;

}

}

RequestBody注解


@RequestBody用于获取请求体内容。直接使用得到是 key=value&key=value…结构的数据,get 请求方式不适用。

属性:required:是否必须有请求体。默认值是:true。当取值为 true 时,get 请求方式会报错。如果取值为 false,get 请求得到是 null。

post 请求 jsp 代码:

用户名称:

用户密码:

用户年龄:

get 请求 jsp 代码:

requestBody 注解 get 请求

控制器代码:

/**

  • RequestBody 注解

  • @param user

  • @return

*/

@RequestMapping("/useRequestBody")

public String useRequestBody(@RequestBody(required=false) String body){

System.out.println(body);

return “success”;

}

post 请求获得结果,get 请求运行结果为null;

PathVaribale注解


@PathVaribale用于绑定 url 中的占位符。Spring MVC的路径变量是在URL项目名后,问号(?)之前所包含的信息,路径变量获取通过在控制器映射路径中通过{路径映射名}进行指定,在形参上通过@PathVariable(“id名”)指定获取路径变量,可以通过多个路径变量请求参数。

属性:value:用于指定 url 中占位符名称,required:是否必须提供占位符。

jsp 代码:

pathVariable 注解

控制器代码:

/**

  • PathVariable 注解

  • @param user

  • @return

*/

@RequestMapping("/usePathVariable/{id}")

public String usePathVariable(@PathVariable(“id”) Integer id){

System.out.println(id);

return “success”;

}

运行结果:100

RequestHeader注解


@RequestHeader用于获取请求消息头

属性:value:提供消息头名称required:是否必须有此消息头,注:在实际开发中一般不怎么用。

jsp 中代码:

获取请求消息头

控制器中代码:

/**

  • RequestHeader 注解

  • @param user

  • @return

*/

@RequestMapping("/useRequestHeader")

public String useRequestHeader(@RequestHeader(value=“Accept-Language”,required=false)String requestHeader){

System.out.println(requestHeader);

return “success”;

}

运行结果:

在这里插入图片描述

CookieValue注解

@CookieValue用于把指定 cookie 名称的值传入控制器方法参数。

属性:value:指定 cookie 的名称。required:是否必须有此 cookie。

jsp 中的代码:

绑定 cookie 的值

控制器中的代码:

/**

  • Cookie 注解注解

  • @param user

  • @return

*/

@RequestMapping("/useCookieValue")

public String useCookieValue(@CookieValue(value=“JSESSIONID”,required=false) String cookieValue){

System.out.println(cookieValue);

return “success”;

}

运行结果:

在这里插入图片描述

ModelAttribute注解


@ModelAttribute该注解是 SpringMVC4.3 版本以后新加入的。它可以用于修饰方法和参数。出现在方法上,表示当前方法会在控制器的方法执行之前,先执行。它可以修饰没有返回值的方法,也可以修饰有具体返回值的方法。出现在参数上,获取指定的数据给参数赋值。

属性:

value:用于获取数据的 key。key 可以是 POJO 的属性名称,也可以是 map 结构的 key。

应用场景:

当表单提交数据不是完整的实体类数据时,保证没有提交数据的字段使用数据库对象原来的数据。

例如:

我们在编辑一个用户时,用户有一个创建信息字段,该字段的值是不允许被修改的。在提交表单数

据是肯定没有此字段的内容,一旦更新会把该字段内容置为 null,此时就可以使用此注解解决问题。

基于 POJO 属性的基本使用:

jps 代码:

测试 modelattribute

控制器代码:

/**

  • 被 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 的代码:

用户名称:

用户年龄:

控制的代码:

/**

  • 查询数据库中用户信息

  • @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”

【一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义】

浏览器打开:qq.cn.hn/FTf 开源分享

;

}

/**

  • 模拟去数据库查询

  • @param username

  • @return

*/

private User findUserByName(String username) {

User user = new User();

user.setUsername(username);

user.setAge(19);

user.setPassword(“123456”);

return user;

}

在这里插入图片描述

运行结果:

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

需求:修改用户信息,要求用户的密码不能修改

jsp 中的代码:

用户名称:

用户年龄:

控制器中的代码:

/**

  • 查询数据库中用户信息

  • @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;

}

SessionAttribute注解


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

属性:value:用于指定存入的属性名称、type:用于指定存入的数据类型。

jsp 中的代码:

存入 SessionAttribute

取出 SessionAttribute


清除 SessionAttribute

控制器中的代码:

@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”;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值