Spring 请求参数绑定

首先还在我们的框架的基础上建立文件

在domian下建立Account实体类

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping(value = "/account")
public class Account {

    private String username;
    private  String password;
    private Double money;

    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;
    }

    public Double getMoney() {
        return money;
    }

    public void setMoney(Double money) {
        this.money = money;
    }

    @Override
    public String toString() {
        return "Account{" +
                "username='" + username + '\'' +
                ", password='" + password + '\'' +
                ", money=" + money +
                '}';
    }
}
Account

然后在controller中的 类中进行对象绑定

在controller中的ParamsController中的建立一个方法接受这个类对象

    @RequestMapping(value = "/accout")
    public String save(Account account){  //把Account类中的信息都有封装进去  
        return "success";
    }

然后传参的时候把对象的值得信息给传递进去

前端定义界面

<form action="/params/accout" method="post">


    姓名:<input name="username" type="text"/> <br/>   //传递的是account类中的属性值 因为请求路径中需要的参数的封装进了account类中 也就是把参数给整合了
    密码:<input name="password" type="text"/> <br/>
    金额:<input name="money" type="text"/> <br/>

    <input type="submit" value="提交"/>



</form>

这个时候请求是可以成功的  因为就相当于把需要的参数给整合在一起了

如果对象中再包含对象怎么做呢?

下面看

我们再建立一个对象类User

User:

public class User {



    private  String username;
    private  String u_password;

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getU_password() {
        return u_password;
    }

    public void setU_password(String u_password) {
        this.u_password = u_password;
    }

    @Override
    public String toString() {
        return "User{" +
                "username='" + username + '\'' +
                ", u_password='" + u_password + '\'' +
                '}';
    }
}
User

然后把User这个对象传递到Account中

get  set 和toString方法也要重新生成

然后再把Account当成参数的时候  那么久也需要对Account中封装的User类也要传递参数的

这个时候的前端传值要把那个对象的名字也加上

前端传值:  直接在值前面加上对象. 值

<form action="/params/accout" method="post">


    <!--姓名:<input name="account.name" type="text"/> <br/>-->  <!--这里不可以指定对象传值不然就会识别不到-->
    姓名:<input name="name" type="text"/> <br/> 
    密码:<input name="password" type="text"/> <br/>
    金额:<input name="money" type="text"/> <br/>
    User名字:<input name="user.username" /><br/>
    User密码:<input name="user.u_password"/><br/>

    <input type="submit" value="提交"/>
    
</form>

解决中文乱码问题

如果我们输入中文的话 不会报错但是显示就是乱码的 

因为web.xml控制着和前端交互的配置  我们就需要再这里配置下

web.xml中加入这些内容:

    配置解决中文乱码的过滤器
    <filter>
        <filter-name>characterEncodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>Utf-8</param-value>
        </init-param>
    </filter>

    <filter-mapping>   <!--所有的请求都会经过这里-->
        <filter-name>characterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

再输入中文就不会乱码了

 输入:

输出信息:

也可以在Controller中加 但是那样就要每个Controller都要加了

在controller中的RequestMapping中加入

produces = "text/html; charset=utf-8"

 这样也可以对这个请求的返回都解决中文乱码 但是其他的Controller不解决  所以还是配置中加比较好

猜你喜欢

转载自www.cnblogs.com/zhaoyunlong/p/10903384.html