- 单个提交数据
页面:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
首页
点击
中央调度器DispatcherServlet对 *.action的请求进行过滤
@Controller
public class MyController {
// RequestMapping注解与@WebServlet很像
@RequestMapping("/first.action")
public String first(String myname, int myage){ ===> 自动注入
要求名称与页面中的name="myname" AND name="myage"要完全一样
System.out.println("myname=" + myname + "myage=" + myage);
return "first"; // 对应first.jsp页面
// first是由视图解析器进行的字符串拼接
}
}
- 对象封装提交数据
在提交请求中,保证请求参数的名称与实体类中成员变量的名称一致,则可以自动创建对象,自动提交数据,自动类型转换,自动封装数据到对象中。
public class User {
private String name;
private int age;
public User() {
}
@Override
public String toString() {
return "User{" +
"name='" + name + ''' +
", age=" + age +
'}';
}
public User(String name, int age) {
this.name = name;
this.age = age;
}
public void setName(String name) { // setter方法必须要重写,否则无法注入
this.name = name;
}
public void setAge(int age) {
this.age = age;
}
}
页面:
以下是bean/User javabean对象 <%--private String name; private int age;--%>
@RequestMapping("/second.action")
public String second(User user){
System.out.println(user);
return "first";
}
控制台输出 User{name='李四', age=12}
- 动态占位符
仅限于超链接或地址栏提交数据,采用一/一值的,一/一大括号{}的形式,使用注解@PathVariable来解析
页面:
<%--一"/"一值--%>
动态提交
@RequestMapping("/third/{uname}/{uage}.action")
public String third( // 类似别名的方式当uname不等于成员变量名时
@PathVariable("uname") String name,
@PathVariable("uage") int age){
System.out.println("姓名"+name + ",年龄" + age);
return "first";
}
- 映射名称不一致
提交请求参数与action方法的形参的名称不一致时,使用注解@RequestParam来解析。
页面:
@RequestMapping("/forth.action")
public String forth(
@RequestParam("name") String uname, // 请求中数据提交的数据属性"name"与
// 方法中的属性"uname"不一致采用这种
// 方式,与第三种的区别很小,但是相比
// 较而言
@RequestParam("age") int uage) {
System.out.println("姓名" + uname + " , 年龄" + uage);
return "first";
}
// 姓名李四 , 年龄12
- 手工提取数据
实现方法和采用Servlet中从Request请求中拿出数据一样,在SpringMVC中已经帮我们实现了这个对象。
页面:
@RequestMapping("/five.action")
// 从request对象中拿出数据
public String five(HttpServletRequest request) {
String name = request.getParameter("name");
// 要自己手动转
int age = Integer.parseInt(request.getParameter("age"));
System.out.println("name" + name + ",age" + age);
return "first";
}



