纳税服务系统一(用户模块)【简单增删改查、日期组件、上传和修改头像】(三)

简介: 为了更好地掌握SSH的用法,使用一个纳税服务系统来练手…..搭建SSH框架环境在上一篇已经详细地说明了。

日期组件

我们都知道Struts2仅仅只会自动封装yyyy-MM-dd格式的日期数据,如果不是这个格式,它就会报错。我们也可以自定义类型转换器来让Struts2匹配多种的日期格式。自定义类型转换器我们已经会了。

我们来用用wdatepicker日期组件,这个组件从源头上就把日期格式定义成yyyy-MM-dd格式了。


导入文件夹到js目录


9.pnga


引入日期组件


添加用户界面和编辑用户界面都要引入:


<script type="text/javascript" src="${basePath}js/datepicker/WdatePicker.js"></script>


在日期上使用


<tr>
            <td class="tdBg" width="200px">生日:</td>
            <td><s:textfield id="birthday" name="user.birthday" readonly="true" onfocus="WdatePicker({'skin':'whyGreen','dateFmt':'yyyy-MM-dd'});"/></td>
        </tr>

10.png这里写图片描述



编辑页面


当使用了日期控件的时候,如果不指定格式,回显日期的格式是有点乱的:

11.jpg这里写图片描述

因此,我们在指定回显的日期格式:


<td class="tdBg" width="200px">生日:</td>
    <td>
        <s:textfield id="birthday" name="user.birthday" readonly="true"
                     onfocus="WdatePicker({'skin':'whyGreen','dateFmt':'yyyy-MM-dd'})">
            <s:param name="value">
                <s:date name='user.birthday' format='yyyy-MM-dd'/>
            </s:param>
        </s:textfield>
    </td>


新增上传头像


我们在学习Struts2的时候已经说过Struts2也为我们封装了上传文件的功能。用起来特别简单:http://blog.csdn.net/hon_3y/article/details/71091593


Action处理


Action给出对应的属性值,和setter()方法


/*************上传头像************************/
    private File headImg;
    private String headImgFileName;
    private String headImgContentType;
    public void setHeadImg(File headImg) {
        this.headImg = headImg;
    }
    public void setHeadImgFileName(String headImgFileName) {
        this.headImgFileName = headImgFileName;
    }
    public void setHeadImgContentType(String headImgContentType) {
        this.headImgContentType = headImgContentType;
    }


Action业务方法


public String add() throws IOException {
        if (user != null) {
            //判断用户有没有传入头像
            if (headImg != null) {
                //得到要把头像上传到服务器的路径
                javax.servlet.ServletContext servletContext = ServletActionContext.getServletContext();
                String realPath = servletContext.getRealPath("upload/user");
                //由于用户上传的名字可能会相同,如果相同就被覆盖掉,因此我们要修改上传文件的名字【独一无二】
                headImgFileName = UUID.randomUUID().toString() + headImgFileName.substring(headImgFileName.lastIndexOf("."));
                FileUtils.copyFile(headImg, new File(realPath, headImgFileName));
            }
            //设置图片与用户的关系
            user.setHeadImg(headImgFileName);
            userServiceImpl.save(user);
            //跳转到列表显示页面
            return "list";
        }
        return null;
    }

效果:

12.png这里写图片描述

13.png

这里写图片描述



修改上传头像


editUI


在编辑显示的时候,需要判断该用户是否有没有上传图片,有的话才显示。不然就会出现一张无法显示的图片。


<td>
        <%--未必用户就有上传图片,因此需要判断一下--%>
        <s:if test="%{user.headImg != null && user.headImg != ''}">
            <img src="${basePath}upload/user/<s:property value="user.headImg"/>" width="100" height="100"/>
        </s:if>
        <input type="file" name="headImg"/>
    </td>


Action处理


用户修改时,Action的处理和新增是一样的。也是判断JSP页面有没有把图片带过来,如果有,修改就行了。


public String edit() throws IOException {
        //Struts2会自动把JSP带过来的数据封装到User对象上
        if (user.getId() != null && user != null) {
            if (headImg != null) {
                //得到要把头像上传到服务器的路径
                javax.servlet.ServletContext servletContext = ServletActionContext.getServletContext();
                String realPath = servletContext.getRealPath("upload/user");
                //由于用户上传的名字可能会相同,如果相同就被覆盖掉,因此我们要修改上传文件的名字【独一无二】
                headImgFileName = UUID.randomUUID().toString() + headImgFileName.substring(headImgFileName.lastIndexOf("."));
                FileUtils.copyFile(headImg, new File(realPath, headImgFileName));
                //设置图片与用户的关系
                user.setHeadImg(headImgFileName);
            }
            userServiceImpl.update(user);
        }
        return "list";
    }

效果:

14.gif这里写图片描述


总结


这一篇几乎都是我们经常用的知识点,只是CRUD而已了。

  • 如果在JSP某些代码有很多地方都能使用的话,那么我们可以把它抽取出来。
  • 使用FileUpload工具类将文件上传到指定的位置上
  • 在Web程序中,页面上很多的效果都是可以用JS组件来干的。比如我们这次的日期组件,不仅仅在页面上可以有很好的效果,还能够从根本上限定用户不能随意输入数据。
目录
相关文章
|
1月前
|
数据库连接 Go 数据库
Go语言中的错误注入与防御编程。错误注入通过模拟网络故障、数据库错误等,测试系统稳定性
本文探讨了Go语言中的错误注入与防御编程。错误注入通过模拟网络故障、数据库错误等,测试系统稳定性;防御编程则强调在编码时考虑各种错误情况,确保程序健壮性。文章详细介绍了这两种技术在Go语言中的实现方法及其重要性,旨在提升软件质量和可靠性。
29 1
|
1月前
|
关系型数据库 MySQL Linux
Linux系统如何设置自启动服务在MySQL数据库启动后执行?
【10月更文挑战第25天】Linux系统如何设置自启动服务在MySQL数据库启动后执行?
111 3
|
1月前
|
Java 数据库连接 数据库
深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能
在Java应用开发中,数据库操作常成为性能瓶颈。本文通过问题解答形式,深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能。文章介绍了连接池的优势、选择和使用方法,以及优化配置的技巧。
39 1
|
2月前
|
SQL 存储 关系型数据库
数据储存数据库管理系统(DBMS)
【10月更文挑战第11天】
139 3
|
2月前
|
存储 关系型数据库 MySQL
PACS系统 中 dicom 文件在mysql 8.0 数据库中的 存储和读取(pydicom 库使用)
PACS系统 中 dicom 文件在mysql 8.0 数据库中的 存储和读取(pydicom 库使用)
43 2
|
2月前
|
安全 NoSQL 关系型数据库
阿里云数据库:构建高性能与安全的数据管理系统
在企业数字化转型过程中,数据库是支撑企业业务运转的核心。随着数据量的急剧增长和数据处理需求的不断增加,企业需要一个既能提供高性能又能保障数据安全的数据库解决方案。阿里云数据库产品为企业提供了一站式的数据管理服务,涵盖关系型、非关系型、内存数据库等多种类型,帮助企业构建高效的数据基础设施。
125 2
|
2月前
|
前端开发 Java 数据库连接
javamvc配置,增删改查,文件上传下载。
【10月更文挑战第4天】javamvc配置,增删改查,文件上传下载。
41 1
|
2月前
|
存储 NoSQL 关系型数据库
数据库管理系统
【10月更文挑战第8天】
149 1
|
2月前
|
JavaScript 前端开发 测试技术
[新手入门]todolist增删改查:vue3+ts版本!
【10月更文挑战第15天】[新手入门]todolist增删改查:vue3+ts版本!
|
2月前
|
运维 NoSQL BI
简道云搭载阿里云MongoDB数据库,帮助数以万计企业重构业务系统
通过与MongoDB和阿里云团队的合作,让简道云少走了弯路,保障了线上服务的长期稳定运行,提高了吞吐效率,并相应降低了线上运行成本
下一篇
DataWorks