springmvc参数传递二:模型传参(非常常用)

在上一篇写了使用形参的方式传参,但是当前端页面的表单内容数据较多时,使用形参会很不方便,因此就可以使用模型传参的方式,将请求参数封装到实体中。示例如下:

仍以上一篇的项目为基础,进行学习。

封装实体,首先需要创建实体类:

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对象传参

实例如下:

运行结果:

猜你喜欢

转载自www.cnblogs.com/Zs-book1/p/11096809.html