参数绑定
1.参数绑定定义
客户端请求的key/value数据 经过参数绑定,将其绑定到Controller的形参上,然后Controller直接使用该形参。
2.默认数据类型
- HttpServletRequest
- HttpServletResponse
- HttpSession:HttpServletRequest调用getSession方法创建的
- Model/ModelMap对象:ModelMap对象用来传递控制器方法中的数据信息到结果页面,类似request的setAttribute方法。Model/ModelMap通过addAttribute方法向页面传递参数。
实现
- MyController
@Controller
public class MyController3 {
@RequestMapping(value = "/con3", method = RequestMethod.POST)
public void param(HttpServletRequest request, HttpServletResponse response) throws Exception{
String msg = request.getParameter("msg");
System.out.println(msg);
response.setContentType("text/html;charset = UTF-8");
response.getWriter().print("Response");
}
@RequestMapping(value = "/con32", method = RequestMethod.GET)
public String param2(HttpSession session, Model model, Map<String,Object> map) throws Exception{
session.setAttribute("session1", "lwx");
model.addAttribute("model1", "SpringMVC");
map.put("map1","MAP");
return "page3";
}
}
- page3.jsp
界面点击执行/con3对应方法
界面接受/con32对应方法转发的参数
<body>
<form action="con3" method="post">
<input name="msg" placeholder="input"><br>
<input type="submit" value="post">
</form>
httpsession: ${session1}<br>
Model ${model1}<br>
Map ${map1}
</body>
- page32.jsp
界面点击执行/con32对应方法,再转发到page3.jsp
<body>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://" + request.getServerName() + ":" +
request.getServerPort() + path + "/";
%>
<a href="<%= basePath %>con32">con32</a>
</body>
3.简单数据类型
Controller层
/**
* 参数绑定
* 基本类型
* String/包装类型 默认为null
* 数组
* 集合-list/map
*/
@Controller
public class ParamsController {
/**
* 访问时带参数a=1&1.1即可绑定
* 如果不设置默认值 也没传入值 会报错500错误
* @RequsetParam name为参数别名
* @param a
* @param b
*/
@RequestMapping("fun1")
public void fun1(@RequestParam(name = "a",defaultValue = "10") int a
,@RequestParam(defaultValue ="10.10" ) double b){
System.out.println(a+" "+b);
}
/**
* 传参形式?arr=1&arr=2
* @param arr
*/
@RequestMapping("fun2")
public void fun2(int[] arr){
for(int v:arr){
System.out.println(v);
}
}
/**
* 客户端参数名称与user属性名一致即可
* http://localhost:8080/fun3.do?id=123&userName=admin
* @param user
*/
@RequestMapping("fun3")
public void fun3(User user){
System.out.println(user.getId()+" "+user.getUserName());
}
/**
* 集合:使用bean包装
*/
@RequestMapping("fun4")
public void fun4(User user){
System.out.println("fun4");
user.getList().forEach(val->{
System.out.println(val);
});
user.getMap().forEach((k,v)->{
System.out.println(k+" "+v);
});
}
}
form.jsp
<html>
<head>
<title>Title</title>
</head>
<body>
<%-- 自动绑定成bean--%>
<%-- name和实体属性名一致即可--%>
<form action="/fun4.do" method="post">
<input name="list" value="1234">
<input name="list" value="5678">
<input name="map['11']" value="1111">
<input name="map['22']" value="2222">
<button type="submit">submit</button>
</form>
</body>
</html>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律