SpringMVC中的参数绑定还是蛮重要的,所以单独开一篇文章来讲解。温馨提示:本文所有案例代码的编写均建立在前文《SpringMVC快速入门第四讲——Spring、MyBatis和SpringMVC的整合》的案例基础之上,因此希望读者能仔细阅读这篇文章。
默认支持的数据类型
现在有这样一个需求:打开商品编辑页面,展示商品信息。如何解决这个需求呢?这儿是我对这个需求的分析:编辑商品信息,先要根据商品id查询商品信息,然后展示到页面中。这里假设请求的url为itemEdit.action
,由于我想要根据商品id查询商品信息,所以需要传递商品id这样一个参数。最终的一个响应结果就是在商品编辑页面中展示商品详细信息,如下图所示。
为了解决这个需求,必然要有一个商品编辑页面,这里将如下itemEdit.jsp页面复制到工程的WEB-INF/jsp目录下。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<!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>修改商品信息</title>
</head>
<body>
<span>${msg }</span>
<!-- 上传图片是需要指定属性 enctype="multipart/form-data" -->
<!-- <form id="itemForm" action="" method="post" enctype="multipart/form-data"> -->
<form id="itemForm" action="${pageContext.request.contextPath }/updateItem.action" method="post">
<input type="hidden" name="id" value="${item.id }" /> 修改商品信息:
<table width="100%" border=1>
<tr>
<td>商品名称</td>
<td><input type="text" name="name" value="${item.name }" /></td>
</tr>
<tr>
<td>商品价格</td>
<td><input type="text" name="price" value="${item.price }" /></td>
</tr>
<tr>
<td>商品简介</td>
<td><textarea rows="3" cols="30" name="detail">${item.detail }</textarea>
</td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" value="提交" />
</td>
</tr>
</table>
</form>
</body>
</html>
当然了,在商品列表展示页面(itemList.jsp)中,我们还须注意编辑以下这个修改超链接,如下图所示。
所有前端页面准备好之后,接下来就要编写后台业务代码了。
编写service层代码
首先在ItemService接口中声明一个如下方法。
/**
* 根据ID查询商品信息
* @param id
* @return
*/
Item getItemById(Integer id);
如此一来,ItemService接口的内容就要变成下面这个样子了。
package com.meimeixia.springmvc.service;
import java.util.List;
import com.meimeixia.springmvc.pojo.Item;
/**
* 商品信息业务逻辑接口
* @author liayun
*
*/
public interface ItemService {
/**
* 获取商品列表
* @return
*/
List<Item> getItemList();
/**
* 根据ID查询商品信息
* @param id
* @return
*/
Item getItemById(Integer id);
}
然后,在以上接口的实现类(ItemServiceImpl.java)中实现以上方法,即在ItemServiceImpl实现类中添加一个如下方法。
@Override
public Item getItemById(Integer id