SpringMVC数据绑定----从⼊门到精通篇(三)POJO数据类型的绑定和⾃定义
数据绑定
⽂章⽬录
前⾔:
在使⽤简单数据类型绑定时,可以很容易的根据具体需求来定义⽅法中的形参类型和个数,然⽽在实际应⽤中,客户端请求可能会传递多个不同类型的参数数据,如果还使⽤简单数据类型进⾏绑定,那么就需要⼿动编写多个不同类型的参数,这种操作显然⽐较繁琐。
那么我们将采取何种⽅式处理呢?如果是某种特殊类型的请求,我们⼜该如何?
1.简单的POJO类型数据的绑定的使⽤
针对多类型、多参数的请求,可以使⽤POJO类型进⾏数据绑定。
POJO类型的数据绑定就是将所有关联的请求参数封装在⼀个POJO中,然后在⽅法中直接使⽤该POJO作为形参来完成数据绑定。
winform窗体项目大全
POIO ( Plain Ordinary Java Object意思是简单的Java对象,实际就是普通JavaBeans.
接下来通过⼀个⽤户注册案例,来演⽰POJO类型数据的绑定的使⽤。
1、在com.zsj.po包中创建⽤户类POJO,来封装⽤户注册信息
c语言手机在线编辑器package com.zsj.po;
public class User {
private Integer id;
private String username;
private Integer password;
public Integer getId(){
return id;
}
public void setId(Integer id){
this.id=id;
}
public String getUsername(){
return username;
}
public void setUsername(String username){
this.username=username;
}
public Integer getPassword(){
return password;
}
public void setPassword(Integer password){
this.password=password;
}
}
2、在控制器Controller中编写接收⽤户注册信息的⽅法和向注册页⾯跳转的⽅法
/**
* 接收⽤户注册信息
*/
@RequestMapping("/registerUser")
public String registerUser(User user){
String username = Username();
Integer password = Password();
System.out.println("username="+username);
System.out.println("password="+password);
return"success";
}
/**
* 向⽤户注册页⾯跳转
*/
@RequestMapping("/toRegister")
public String toRegister(){
return"register";
}
3、在WEB-INF/jsp⽬录下编写⽤户注册页⾯register.jsp
orcale分页查询<%@ page language="java" contentType="text/html;charset=UTF-8"
pageEncoding="UTF-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>注册</title>
</head>
<body>
<form action="${tPath}/registerUser" method="post">
⽤户名:<input type="text" name="username"/><br>
密 ;码:<input type="text" name="password"/><br />
<input type="submit" value="注册"/>
</form>
</body>
</html>
到这⾥就完成了吗?各位猜猜看!!输出的结果是否如愿呢?
在前端请求中,难免会有中⽂信息传递,此时后台⽅法绑定接收的中⽂信息却就会出现了中⽂乱码,如下图所⽰:
如何解决请求参数中的乱码问题呢?
为了防⽌前端传⼊的中⽂数据出现乱码问题,我们可以在I中配置Spring提供的编码过滤器来统⼀编码。
修改的l如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="/2001/XMLSchema-instance"
xmlns="java.sun/xml/ns/javaee"
xsi:schemaLocation="java.sun/xml/ns/javaee
java.sun/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0">
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param>
<param-name>contextConfigLocation</param-name>
<param-value>l</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
文件格式转换app<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>
</web-app>
输出结果如下:
2.绑定包装POJO数据类型
也许有⼩伙伴会有些疑问?上⾯的博客不是才将POJO吗?这两者都有什么区别呢?
其实包装POJO相当于给这些多类型,多参数的请求分类。
例如:在⽤户查询订单时,页⾯传递的参数可能包括:订单编号、⽤户名称等信息,这就包含了订单和⽤户两个对象的信息,此时后台⽅法如何绑定请求信息呢?采⽤POJO吗?⽅法可⽤,但订单和⽤户信息混合封装,显得⽐较混乱,
除此之外,还可以考虑使⽤包装POJO类型绑定所谓的包装POJO,就是在⼀个POJO中包含另⼀个简单POJO。例如,在订单对象中包含⽤户对象。这样在使⽤时,就可以通过订单查询到⽤户信息。
1、在com.zsj .po包中创建订单类Orders,⽤于封装订单和⽤户信息
package com.zsj.po;
/**
* 订单POJO
*/
public class Orders {
private Integer ordersId;// 订单编号
private User user;// ⽤户POJO,所属⽤户
public Integer getOrdersId(){
return ordersId;
}
public void setOrdersId(Integer ordersId){
}
public User getUser(){
return user;
}
public void setUser(User user){
this.user = user;
}
}
2、在com.zsj controller包中创建⼀个订单控制器类OrdersController
package ller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import com.zsj.po.Orders;
零基础学编程培训班
import com.zsj.po.User;
@Controller
public class OrdersController {
/**
* 向订单查询页⾯跳转
*/
@RequestMapping("/tofindOrdersWithUser")
public String tofindOrdersWithUser(){
return"orders";
}
/**
* 查询订单和⽤户信息
*/
@RequestMapping("/findOrdersWithUser")
public String findOrdersWithUser(Orders orders){
Integer orderId = OrdersId();
User user = User();
String username = Username();
System.out.println("orderId="+orderId);
System.out.println("username="+username);
return"success";系统架构设计师简历
}
}
3、在WEB-INF/jsp⽬录下编写订单查询页⾯orders jisp
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论