zoukankan      html  css  js  c++  java
  • 使用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中提到的数据类型转换,并且进行全局配置。

  • 相关阅读:
    windows 2019 server系统中网卡里面的“详细信息”空白,无法连接网络
    Python一些插件安装
    pip版本过旧,提示要升级pip
    Mac idea 默认全局配置maven设置
    Java并发/多线程-锁的区别与使用
    Java反射的理解
    Git远程连接GitHub添加远程库
    部署Django云服务器 Gunicorn + Nginx
    Nginx在 Centos 没有sites-available 和 sites-enabled目录
    java基础学习笔记4(maven)
  • 原文地址:https://www.cnblogs.com/wyhluckdog/p/10181134.html
Copyright © 2011-2022 走看看