本文共 4045 字,大约阅读时间需要 13 分钟。
上一讲我们已经讲了注解配置访问路径,但是访问后表单的提交方式那样是不可以做到的(在前面我们讲过利用xml
配置的方式实现AbstractCommandController
接口的方式接收表单),本章我们接着上一章的内容继续学习表单的接收。
我们把前面的UserController
类添加register
与registerUser
方法后如下
package web.Controller;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import java.util.Date;@Controller@RequestMapping("user")public class UserController { @RequestMapping(value = "list",method = RequestMethod.POST) public String list(){ return "user/UserList"; } @RequestMapping(value = "register") public String Register(){ return "user/register"; } @RequestMapping(value = "userInfo",method = RequestMethod.POST) public String registerUser(String name, String password, String gender, Date birthday, int[] hobbies){ System.out.println("name:"+name); System.out.println("password:"+password); System.out.println("gender:"+gender); System.out.println("birthday:"+birthday); System.out.println("hobbies:"); for (int hobby : hobbies) { System.out.print(hobby+" "); } return "user/userInfo"; }}
register.jsp
的代码如下:
<%-- Created by IntelliJ IDEA. User: Administrator Date: 2020/7/31 Time: 14:36 To change this template use File | Settings | File Templates.--%><%@ page contentType="text/html;charset=UTF-8" language="java" %>注册账号
访问:http://localhost:8080/user/register.do
registerUser()
的参数接收到,这就是通过方法参数(参数的名字要与input的name属性名一致
)接收表单数据的方式。 我们发现类型转化的时候出了问题,这是因为我们的出生日期填写的方式不对,应该写为31/7/2018
上面没有值的原因在于request
没有配置属性,因此这种方法并不是我们推荐的。 这种方式是通过poj对象来进行封装。
创建user类package web.model;import java.util.Arrays;public class User { @Override public String toString() { return "User{" + "name='" + name + '\'' + ", password='" + password + '\'' + ", gender='" + gender + '\'' + ", birthday='" + birthday + '\'' + ", hobbies=" + Arrays.toString(hobbies) + '}'; } private String name; private String password; private String gender; private String birthday; private String[] hobbies; public User(){ } public String[] getHobbies() { return hobbies; } public void setHobbies(String[] hobbies) { this.hobbies = hobbies; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getGender() { return gender; } public void setGender(String gender) { this.gender = gender; } public String getBirthday() { return birthday; } public void setBirthday(String birthday) { this.birthday = birthday; }}
然后我们再UserController
里加上下面方法:
@RequestMapping("register2")public String registerUser2(User user){ System.out.println(user); return "user/userInfo";}
同时将register.jsp
修改如下:
http://localhost:8080/user/register.do
上面表单数据提交后会把数据封装为User对象传给registerUser2
的参数user
,可以显示数据的原因在于SpringMVC
帮我们把registerUser2
的参数user
设置为了request
的属性了。 这种方式是接收包装类型。
包装类型如下;package web.model;public class UserExt { private User user; public UserExt(){ } //注意getter与setter方法同时需要,因为在底层是靠这两个方法操作值的 public User getUser() { return user; } public void setUser(User user) { this.user = user; } @Override public String toString() { return "UserExt{" + "user=" + user + '}'; }}
registerUser2
的修改如下:
register.jsp
作如下的加上user
的修改
userInfo.jsp
修改如下: 再次访问如下:
还有接收map
类型与list
类型的方式,这里做简单的介绍 map
类型: list
类型:
转载地址:http://dxlzi.baihongyu.com/