在上一篇写了使用形参的方式传参,但是当前端页面的表单内容数据较多时,使用形参会很不方便,因此就可以使用模型传参的方式,将请求参数封装到实体中。示例如下:
仍以上一篇的项目为基础,进行学习。
封装实体,首先需要创建实体类:
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对象传参
实例如下:
运行结果: