springMVC 绑定pojo类型

 

 

 

 

需求 

将页面修改后的商品信息保存到数据库中。

需求分析

请求的url:/updateItem.action

参数:表单中的数据。

响应内容:更新成功页面

使用pojo接收表单数据

如果提交的参数很多,或者提交的表单中的内容很多的时候,可以使用简单类型接受数据,也可以使用pojo接收数据。

要求:pojo对象中的属性名和表单中input的name属性一致

 

页面定义如下图:

 

 

Pojo(逆向工程生成)如下图:

请求的参数名称和pojo的属性名称一致,会自动将请求参数赋值给pojo的属性。

 

ItemService接口

ItemService里编写接口方法

 

 

/**
 * 根据id更新商品
 * 
 * @param item
 */
void updateItemById(Item item);

 

 

ItemServiceImpl实现类

ItemServiceImpl里实现接口方法

使用updateByPrimaryKeySelective(item)方法,忽略空参数

 

@Override
public void updateItemById(Item item) {
	this.itemMapper.updateByPrimaryKeySelective(item);
}

 

 

ItemController

 

/**
 * 更新商品,绑定pojo类型
 * 
 * @param item
 * @param model
 * @return
 */
@RequestMapping("/updateItem")
public String updateItem(Item item) {
	// 调用服务更新商品
	this.itemService.updateItemById(item);

	// 返回逻辑视图
	return "success";
}

 

 

注意:

提交的表单中不要有日期类型的数据,否则会报400错误。如果想提交日期类型的数据需要用到后面的自定义参数绑定的内容。

 

 

编写success页面

如下图创建success.jsp页面

 

页面代码:

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>

<h1>商品修改成功!</h1>

</body>
</html>

 

 

解决post乱码问题

提交发现,保存成功,但是保存的是乱码

在web.xml中加入:

 

<!-- 解决post乱码问题 -->
	<filter>
		<filter-name>encoding</filter-name>
		<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
		<!-- 设置编码参是UTF8 -->
		<init-param>
			<param-name>encoding</param-name>
			<param-value>UTF-8</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>encoding</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

 

 

 

 

以上可以解决post请求乱码问题。

 

对于get请求中文参数出现乱码解决方法有两个:

修改tomcat配置文件添加编码与工程编码一致,如下:

 

 

<Connector URIEncoding="utf-8" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>

 

 

另外一种方法对参数进行重新编码:

 

String userName new 
String(request.getParamter("userName").getBytes("ISO8859-1"),"utf-8")

 

 

ISO8859-1是tomcat默认编码,需要将tomcat编码后的内容按utf-8编码

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值