1.1 需求
將頁面修改后的商品信息保存到數據庫中。
1.2 需求分析
請求的url:/updateitem.action
參數:表單中的數據
響應內容:更新成功頁面
1.3 接收表單數據
1.3.1 使用基本數據類型接收表單數據
springmvc可以直接接收基本數據類型,包括string。springmvc可以幫你在傳參時自動進行類型轉換。
轉換的前提:controller方法接收的參數名稱必須等於頁面上input框的name屬性名。
1.3.1.1 在spring的業務層的ItemService接口中添加通過id進行更新數據庫的方法。
public void update(Items items);
1.3.1.2 在ItemServiceImpl實現類中定義public void update(Items items)方法
@Override public void update(Items items) { // //按照主鍵id進行修改 //使用WithBLOBs作用是最整個文本進行修改 itemsMapper.updateByPrimaryKeyWithBLOBs(items); }
1.3.1.3 在控制層的ItemsController中定義更新方法
在控制層的ItemsController中定義根據接收的參數調用業務層的更新方法,實現將數據更新到數據庫中。
/* * springmvc可以直接接受基本數據類型,包括string,springmvc可以幫你在傳參時自動進行 * 類型轉換 * 轉換的前提:controller方法接受的參數名稱必須等於 * 頁面上input框的name屬性名 */ @RequestMapping("/updateitem") public String update(Integer id,String name,float price,Date createtime,String detail){ System.out.println(id); System.out.println(createtime); Items items=new Items(); items.setId(id); items.setName(name); items.setPrice(price); items.setDetail(detail); //items.setCreatetime(new Date()); items.setCreatetime(createtime); //調用業務層對相關 itemService.update(items); return "success"; }
處理完成后,跳轉到success頁面。
在這里我們的數據庫表中有一個creaetime的字段,它的類型是Date類型。而我們從頁面獲取到的參數都是Sring類型的,對於基本的數據類型springmvc可以給我們自動進行類型轉換,而由String類型轉換為Date類型,不能自動完成,所以需要我們手動進行類型准換。
(1)創建轉換類CustomGlobalStrToDateConverter:
package com.huida.controller.convert; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import org.springframework.core.convert.converter.Converter; //全局的轉換器 public class CustomGlobalStrToDateConverter implements Converter<String, Date>{ //將頁面傳過來的字符串轉換為Date類型 @Override public Date convert(String str) { Date date=null; //定義日期的格式器 try { date=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").parse(str); } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } return date; } }
(2)對轉換器進行全局配置
因為轉換器是控制層要進行的操作,所以我們需要將配置配置到SpringMvc.xml中。
<!-- 轉換器配置 注意:一定要將自定義的轉換器配置到注解驅動上 --> <bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean"> <property name="converters"> <set> <bean class="com.huida.controller.convert.CustomGlobalStrToDateConverter"/> </set> </property> </bean>
需要注意的是:一定要將自定義的轉換器配置到注解驅動上。
<!-- 加載注解驅動 --> <mvc:annotation-driven conversion-service="conversionService"/>
1.3.2 使用pojo接收表單數據
如果提交的參數很多,或者提交的表單中的內容很多的時候,可以使用pojo接收數據。
注意:要求pojo對象中的屬性名和表單中input的nama屬性一致。
頁面定義如下:
<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><input type="text" name="createtime" value="<fmt:formatDate value="${item.createtime}" pattern="yyyy-MM-dd HH:mm:ss"/>" /></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>
pojo定義:
請求的參數名稱和pojo的屬性名稱一致,會自動將請求參數輔助給pojo的屬性。
ItemsController的更新方法為:
@RequestMapping("/updateitem") public String update(Items items){ //springmvc可以接受pojo類型,但是要求頁面上input框的name屬性必須等於pojo的屬性名稱 itemService.update(items); return "success"; }
注意:提交的表單中不要有日期類型的數據,否則會報400錯誤。如果想提交日期類型的數據需要使用1.3.1中提到的數據類型轉換,並且進行全局配置。