在上一篇写了使用形参的方式传参,但是当前端页面的表单内容数据较多时,使用形参会很不方便,因此就可以使用模型传参的方式,将请求参数封装到实体中。示例如下:
仍以上一篇的项目为基础,进行学习。
封装实体,首先需要创建实体类:
package com.zs.entity; import org.springframework.stereotype.Component; @Component public class User { private int uid; private String username; private String password; public int getUid() { return uid; } public void setUid(int uid) { this.uid = uid; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } @Override public String toString() { return "User{" + "uid=" + uid + ", username='" + username + '\'' + ", password='" + password + '\'' + '}'; } }
添加注解使用spring工厂来管理对象,同时在spring的主配置文件中扫描实体类包entity包:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:contect="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <contect:component-scan base-package="com.zs.entity"/> </beans>
然后修改控制器内容,在上一篇中我们 使用形参传参,这里使用模型传参
package com.zs.controller; import com.zs.entity.User; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @Controller @RequestMapping("/user") public class UserController { /** * 通过映射地址找到对应的方法,method为请求方式 * @param user user为将请求参数封装成的对象,会根据请求参数的键值自动给实体对象赋值, * @return */ @RequestMapping(value = "/login",method = {RequestMethod.GET,RequestMethod.POST}) public String login(User user) { /** * 查看传递过来的参数,可以通过get方法来获取值 */ System.out.println(user); System.out.println("用户名:"+user.getUsername()); System.out.println("密码:"+user.getPassword()); return "index"; } }
运行程序,输入表单内容,结果如下:
可以看出,前台传递过来的参数根据键值与属性名配对,因为没有传递uid,所以默认值为0。
3.HttpservletRequest对象传参
从前台往后台传参还可以使用我们以前在servlet阶段时使用的HttpServletRequest对象传参
实例如下:
运行结果: