一般在实际开发中,我们离不开与表单打交道,所以在此来说一下SpringMVC如何处理表单。
我们新建一个包,然后在下面创建两个类,User的pojo类和UserController
User:
package com.hty.userbiaodan;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.stereotype.Component;
/**
* @program: springmvc
* @author: Semineces
* @create: 2020-02-09 17:10
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Component
public class User {
private String username;
private String password;
private String address;
private boolean receivePaper;
private String[] favoriteFrameworks;
private String gender;
private Integer numb;
private String province;
private String[] skills;
private String secret;
}
ps:信息比较多,因为要处理不同表单的内容。
UserController:
package com.hty.userbiaodan;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @program: springmvc
* @author: Semineces
* @create: 2020-02-09 17:13
*/
@Controller
@ComponentScan
public class UserController {
@Autowired
private User user;
/**
* 服务方法user(),在ModelAndView对象中传递了一个名称为command的空User对象,因为如果在JSP文件中使用<form:form>标签
* spring框架需要一个名称为command的对象,所以当调用这个user()方法时,将返回user.jsp的视图
* 所以这个user里面的属性变量,就对应着user.jsp里面的各种属性
* @return
*/
@RequestMapping(value = "/user", method = RequestMethod.GET)
public ModelAndView user() {
return new ModelAndView("user", "command", user);
}
/**
* 服务方法addUser() 将根据URL => /addUser 上的POST请求时被调用,根据提交的信息来准备模型对象,最后从服务方法返回userlist.jsp,也就是提交了的表单
* 也就是呈现 userlist.jsp的视图
* @param user
* @param modelMap
* @return
*/
@RequestMapping(value = "/addUser", method = RequestMethod.POST)
public String addUser(@ModelAttribute("userInformation") @Validated User user, ModelMap modelMap) {
modelMap.addAttribute("username", user.getUsername());
modelMap.addAttribute("password", user.getPassword());
modelMap.addAttribute("address", user.getAddress());
modelMap.addAttribute("receivePaper", user.isReceivePaper());
modelMap.addAttribute("favoriteFrameworks" ,user.getFavoriteFrameworks());
modelMap.addAttribute("gender", user.getGender());
modelMap.addAttribute("numb", user.getNumb());
modelMap.addAttribute(