900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > SpringMVC框架----请求参数的绑定

SpringMVC框架----请求参数的绑定

时间:2024-03-23 11:56:01

相关推荐

SpringMVC框架----请求参数的绑定

1.请求参数绑定入门

作为web层框架,客户端发请求过来,一定会携带请求参数,把数据传给我,拿到数据的过程称之为参数的绑定。

表单提交数据,都是一组键值对,比如username=hehe&password=123.这是一组键值对。

传过来MVC框架,

username=hehe&password=123

sayHello(String username,String password)

如果参数名都是一样的,MVC框架就自动的把传的值赋值到这个方法的参数上。底层通过反射的方式,拿到这个方法的属性,然后把表单这个名字传给属性参数的值所以请求中的参数名要和方法中参数名保持一致

支持的数据类型

1.基本数据类型

2.实体类型(JavaBean)

3.集合数据类型(List,Map集合)

编写controller类

/*请求参数绑定*/@Controller@RequestMapping("/param")public class ParamController {/*请求参数绑定入门*/@RequestMapping("/testParam")public String testParam(String username,String password){System.out.println("执行了....");System.out.println("用户名:"+username);System.out.println("密码:"+password);return "success";}}

编写index.jsp<%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head><title>Title</title></head><body><!--请求参数绑定--><a href="param/testParam?username=hehe&password=123">请求参数绑定</a></body></html>

执行结果

2.请求参数绑定实体类型

先建立一个Javabean对象User类

public class Account implements Serializable {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;}@Overridepublic String toString() {return "Account{" +"username='" + username + '\'' +", password='" + password + '\'' +", money=" + money +'}';}}

下面我们将数据封装到Javabean的一个对象

index.jsp

<!--请求参数绑定--><!--<a href="param/testParam?username=hehe&password=123">请求参数绑定</a>--><!--现在往一个类里面封装,要求name与Javabean的属性相同,它会通过你写的名字找set方法--><form action="param/saveAccount" method="post">姓名:<input type="text" name="username"/><br/>密码:<input type="text" name="password"/><br/>金额:<input type="text" name="money"/><br/><input type="submit" value="提交"/></form>

controller类

/*请求参数绑定,把数据封装到JavaBean的类中*/@RequestMapping("/saveAccount")//提交表单数据,默认全部封装到account中public String saveAccount(Account account){System.out.println(account);return "success";}

我们再添加一个类User,有属性

private String uname;private Integer age;

当account中有引用类型,我们怎么给引用类型赋值?能不能往user属性中封装。

private String username;private String password;private Double money;private User user;

再account类中添加user的get和set方法,以及修改tostring

public User getUser() {return user;}public void setUser(User user) {this.user = user;}@Overridepublic String toString() {return "Account{" +"username='" + username + '\'' +", password='" + password + '\'' +", money=" + money +", user=" + user +'}';}

<form action="param/saveAccount" method="get">姓名:<input type="text" name="username"/><br/>密码:<input type="text" name="password"/><br/>金额:<input type="text" name="money"/><br/><!--user与account类中user的属性-->用户姓名:<input type="text" name="user.uname"/><br/>用户年龄:<input type="text" name="user.age"/><br/><input type="submit" value="提交"/></form>

controller不变

最后输出结果

3.配置解决中文乱码的问题

如果是post方式提交的时候,此时会中文乱码

如何解决Post的中文乱码。

SpringMVC给我们提供了一个过滤器的机制,我们发任何请求,过滤器都可以进行拦截。如果过滤器拦到,就可以帮我们解决中文乱码。

在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>

提交方式要求是post

4.请求参数绑定集合类型

public class Account implements Serializable {private String username;private String password;private Double money;private List<User> lists;private Map<String,User> map;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;}public List<User> getLists() {return lists;}public void setLists(List<User> lists) {this.lists = lists;}public Map<String, User> getMap() {return map;}public void setMap(Map<String, User> map) {this.map = map;}@Overridepublic String toString() {return "Account{" +"username='" + username + '\'' +", password='" + password + '\'' +", money=" + money +", lists=" + lists +", map=" + map +'}';}}

<form action="param/saveAccount" method="post">姓名:<input type="text" name="username"/><br/>密码:<input type="text" name="password"/><br/>金额:<input type="text" name="money"/><br/><!--把这一组数据封装到user对象,再把这user对象存入到list集合中去,-->用户姓名:<input type="text" name="lists[0].uname"/><br/>用户年龄:<input type="text" name="lists[0].age"/><br/><!--把这一组数据封装到user对象,然后把这个对象存入到map集合中去-->用户姓名:<input type="text" name="map['one'].uname"/><br/>用户年龄:<input type="text" name="map['one'].age"/><br/><input type="submit" value="提交"/></form>

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。