Spring MVC 传值方式总结

本文总结了Spring MVC中从前端传值到Controller的六种方法:HttpServletRequest、路径变量、参数名匹配、请求头参数、RequestBody及@ModelAttribute注解。同时介绍了Controller如何将数据传递到JSP,包括ModelAndView和Model/ModelMap的使用。建议尽量使用@RequestParam和@RequestBody以提高可读性。
摘要由CSDN通过智能技术生成

前端传到Controller:

方法1

通过HttpServletRequest 。写法如下:

@Controller
public class MyTestController {
@RequestMapping("/print")
public String PrintInfo(HttpServletRequest request) {
System.out.println("name:" +request.getParameter("name"));
System.out.println("age:" + request.getParameter("age"));
return "testpage";
}
}

HttpServletRequest类是Servlet中的类型,代表了一个Servlet请求。无论Post还是Get请求,都能通过这种方式获取到。

比如上面的代码,通过Get方法,如下地址

http://127.0.0.1:8080/WebApp/print?name=zhangsan&age=30

也可以通过Post方法,使用Postman工具模拟一个post请求,都可以将值传到Controller。

这招可以获得Cookie以及Session数据。

还可以通过注解@Autowired,将HttpServletRequest 自动的注入进来,不必担心多线程下的并发问题,因为这里HttpServletRequest注入的是一个AOP proxy ,而不是一个普通bean 。每次请求过来,都会检查线程本地属性,来获取真正的Request对象。这些都是Spring自动配置的默认场景。可以参阅https://docs.spring.io/spring/docs/current/spring-framework-reference/html/beans.html#beans-factory-scopes-other-injection

但是不推荐使用这个方法,因为这种方法破坏了对一个注入对象的常规理解,造成混乱。

代码如下:

@Controller
public class MyTestController {
@Autowired
private HttpServletRequest request;
@RequestMapping(value="/print")
public String PrintInfo() {
System.out.println("name:" +request.getParameter("name"));
System.out.println("age:" + request.getParameter("age"));
return "testpage";
}
}

方法2

使用路径变量。写法如下:

@Controller
public class MyTestController {
@RequestMapping("/print/{name}/{age}")
public String PrintInfo(@PathVariable String name, @PathVariable in
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值