在开始之前,应该先新建一个maven
工程,注入SpringMVC
以及Servlet
依赖,再使用注解配置一下Controller
,可以点击这些字查看详细配置过程!
一、接收请求参数
1、提交的域名称和处理方法的参数名一致
首先在前台的index.jsp
写一个表单,然后提交一个username
:
<html>
<head>
<title>$Title$</title>
</head>
<body>
<form method="post" action="/test/">
<input name="username">
<br>
<input type="submit">
</form>
</body>
</html>
新建一个Controller
,处理前台来的数据,返回到hello.jsp
页面(这是个空页面):
package com.wzq.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class ControllerTest2 {
@RequestMapping("/test")
public String Test1(String username){
System.out.println(username);
return "hello";
}
}
运行Tomcat
,在index.jsp
页面的表单里输入:wzq
点击提交,查看后台:
通过上面的案例,知道了一点:就是前台input
的name
属性和Controller
参数名称一样的时候,可以直接读取到
2、提交的域名称和处理方法的参数名不一致
如果不一致怎么呢?会出现什么情况?把上面的Controller
修改一下:
@RequestMapping("/test")
public String Test1(String name){
System.out.println(name);
return "hello";
}
只把参数名称修改了一下,和前台的不一样了!运行,打印一下:
可以看到,只输出了null
,证明没有匹配到,遇到这种情况,只需要在Controller
的方法的参数里加个注解@RequestParam("对应前台的name属性")
就好了,修改一下:
@RequestMapping("/test")
public String Test1(@RequestParam("username") String name){
System.out.println(name);
return "hello";
}
输入数据,运行:
3、提交的是一个对象
这个要求提交的表单域和对象的属性名称一致,参数使用对象即可。如果使用对象,但是参数名称不一致,则匹配不到,对应名称不一致的字段都为null
新建一个User
的pojo
类:
package com.wzq.pojo;
public class User {
private int id;
private String name;
private int age;
/*
get/set
toString
...
省略
*/
}
修改一个前端的表单:
<form method="post" action="/test/">
id:<input name="id">
<br>
name:<input name="name">
<br>
age:<input name="age">
<br>
<input type="submit">
</form>
对应的后台:
@RequestMapping("/test")
public String Test2(User user){
System.out.println(user);
return "hello";
}
运行:
点击提交:
OK了