- 使用传统的request对象接收参数(参数名称要一致)
SpringMVC框架会自动把Request对象传递给方法,只需要根据名称即可获取对应的值
- goods.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Goods.jsp</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/myform.action" method="post">
商品名称:<input type="text" placeholder="输入商品名称" name="goods_name"><br>
商品价格:<input type="text" placeholder="输入商品价格" name="goods_price"><br>
<input type="submit" value="提交">
</form>
</body>
</html>
- result.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>result.jsp</title>
</head>
<body>
提交结果<br>
商品名称:${goods_name}<br>
商品价格:${goods_price}<br>
</body>
</html>
- Controller.java
@Controller
public class MyFirstController {
@RequestMapping("/myform.action")
public ModelAndView myform(HttpServletRequest request){
//获取数据
String goods_name = request.getParameter("goods_name");
String goods_price = request.getParameter("goods_price");
//创建ModelAndView用来存放数据和视图
ModelAndView modelAndView = new ModelAndView();
//设置数据到视图中
modelAndView.addObject("goods_name",goods_name);
modelAndView.addObject("goods_price",goods_price);
//设置视图
modelAndView.setViewName("result");//会根据springMVC.xml中的配置自动拼接成/result.jsp
//将modelAndView返回
return modelAndView;
}
}
- 运行结果
- 不使用request对象接收简单类型参数
当请求的参数名称和处理器形参名称一致时会将请求参数与形参进行绑定。
如果形参的类型与绑定的类型不一致时,可以使用@RequestParam进行匹配
@RequestParam使用说明:
value:请求参数名称
required:是否必须(默认为true),表示请求中一定要有相应的参数,否则会报错
defaultValue:设置默认值,表示请求中如果没有同名的参数,则使用defaultValue中的值
- 使用javaBean对象接收参数(要求对象当中的属性要和表单当中的名称一致)
- Goods.java
@Setter @Getter @ToString
public class Goods {
private String goods_name;
private String goods_price;
}
- result.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>result.jsp</title>
</head>
<body>
提交结果<br>
商品名称:${goods.goods_name}<br>
商品价格:${goods.goods_price}<br>
</body>
</html>
- Controller.java
@Controller
public class MyFirstController {
@RequestMapping("/myform.action")
public ModelAndView myform(Goods goods){
//创建ModelAndView用来存放数据和视图
ModelAndView modelAndView = new ModelAndView();
//设置数据到视图中
modelAndView.addObject("goods",goods);
//设置视图
modelAndView.setViewName("result");//会根据springMVC.xml中的配置自动拼接成/result.jsp
//将modelAndView返回
return modelAndView;
}
}
- 使用数组接收参数(name相同时可以使用数组来接收对应的参数)
- 编写User类
public class User {
private String user_name;
private String user_age;
private String hobby[];
public void setUser_name(String user_name) {
this.user_name = user_name;
}
public void setUser_age(String user_age) {
this.user_age = user_age;
}
public void setHobby(String[] hobby) {
this.hobby = hobby;
}
public String getUser_name() {
return user_name;
}
public String getUser_age() {
return user_age;
}
public String[] getHobby() {
return hobby;
}
@Override
public String toString() {
return "User{" +
"user_name='" + user_name + '\'' +
", user_age='" + user_age + '\'' +
", hobby=" + Arrays.toString(hobby) +
'}';
}
}
- First.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>First.jsp</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/mysubmit.action" method="post">
user:<input type="text" name="user_name"><br>
age:<input type="text" name="user_age" ><br>
爱好:<input type="checkbox" name="hobby" value="篮球"> 篮球
<input type="checkbox" name="hobby" value="乒乓球"> 乒乓球
<input type="checkbox" name="hobby" value="足球"&