spingmvc学习总结——5

通过表单提交我们在后台需要获取提交的数据:
这里我们可以在业务方法中提交HttpRequest参数,来进行获取,这里就不演示了,接下来我们看一种spring的方法:
主要看一下我们的控制类中的业务方法的书写:

/**
 * Action 控制器
 * 获取参数
 * 单例
 * @author user
 *
 */
@Controller
@RequestMapping(value = "/user")
public class UserAction {
    /*
     * 用户注册
     */
    @RequestMapping(value = "register")
    public String register(Model model,String userName,double salary) throws Exception{
        System.out.println("username = "+userName+"    salary :"+salary);
        model.addAttribute("message", "增加员工成功");
        return "/jsp/success.jsp";
    }
    /*
     * 用户登录
     */
    @RequestMapping(value = "logon")
    public String logon(Model model,String userName) throws Exception{
        System.out.println("userName = "+userName);
        model.addAttribute("message", "员工登录成功");
        return "/jsp/success.jsp";
    }
}

我们在业务方法中加了两个参数,String类型的userName,和Double类型的salary。提交表单以后,会自动获取form中的name属性和业务方法参数一样的值,并给业务方法参数赋值。
但是如果提交的值很多的话,这种方法就很不方便。
所以,很容易想到,可以在业务方法中添加对象。比如我们创建User的JavaBean:

/*
     * 用户注册  只能接受post请求
     */
    @RequestMapping(value = "register")
    public String register(User user,Model model) throws Exception{
        System.out.println("用户注册:"+user.toString());
        model.addAttribute("user", user);
        //转发到success.jsp页面
        return "/jsp/success.jsp";
    }

User.java:

/**
 * 用户
 * @author user
 *
 */
public class User {
    private Integer id = 1;
    private String userName;
    private Double salary;
    private Date hireDate;
    public User() {
        // TODO Auto-generated constructor stub
    }
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
    public Double getSalary() {
        return salary;
    }
    public void setSalary(Double salary) {
        this.salary = salary;
    }
    public Date getHireDate() {
        return hireDate;
    }
    public void setHireDate(Date hireDate) {
        this.hireDate = hireDate;
    }
    @Override
    public String toString() {
        return "User [id=" + id + ", userName=" + userName + ", salary=" + salary + ", hireDate=" + hireDate.toLocaleString() + "]";
    }

}

这里要注意Bean里面的属性的名字和form表单中的名字要一样。这样才会自动赋值。
接下来,我们看一下,如果碰到时间格式的数据,用注解方式如何实现:
在xml中我们是重写initBinder方法来实现,用注解的话,只需要在我们的自定义的类型转换器上的方法加initBinder注解即可:

@InitBinder
    protected void initBinder(HttpServletRequest request, ServletRequestDataBinder binder) throws Exception {
        //向springmvc内部注入一个自定义的转换器
        //参数一:最终将String转成什么类型的字节码
        //参数二:属性编辑器:自定义的转换规则
//      CustomDateEditor参数一:时间的格式,参数二:可不可以为空
        binder.registerCustomEditor(Date.class, new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"), true));
    }

猜你喜欢

转载自blog.csdn.net/qq_39411208/article/details/81835700
今日推荐