使用springmvc從頁面中獲取數據,然后根據獲得的參數信息進行修改,最后將修改的信息返回給數據庫,並顯示修改成功


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中提到的數據類型轉換,並且進行全局配置。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM