ToyManage项目心的

4 篇文章 0 订阅
1 篇文章 0 订阅

前言

这是一次独立的编写项目的经历,也是第一次使用SpringBoot+Maven+Jpa+Thymeleaf去搭建一个项目,前台页面是完全基于bootstrap的样式。其中SpringBoot、Jpa和Thymeleaf都是第一次使用,所以只是第一次于第一次的碰撞,尤显得火花四射。

Thymeleaf

由于SpringBoot 官方比较认可Thymeleaf之类的模板而渐渐放弃了JSP页面的使用,故而我也就是用了Thymeleaf的这个模板。在使用之前一定就是对技术的学习,大多数情况下我会选这观看视频(快:过程快、理解快),但是很不幸,在网上没有找到相关的视频,只有一些技术博客,然后我就选择观看官方文档来一次较系统的学习,官方文档上是以杂货铺的案例为基础述说的(国外大多数都是这个模式,或者说我接触的都是这个模式)。系统看了8~10章后开始写项目。遇到的问题零零散散没有很影响深刻的。唯一的就是th:include和th:replace,官网上说提倡使用th:replace,然而我却发现我用不良,一番排查才发现我看的官方文档是3.x版本的,而是用的是2.x版本的,而2.x版本的不支持th:replace,这让我有点哭笑不得。

文件上传

文件上传这一块当时学习的时候老师是以原理的形式讲述,所以呢,显得有点复杂。现在回过头想想其实也就是那么一回事,首先先获得上传文件的二进制文件,然后获得存放路径,最后写入文档。而在SpringBoot中可以通过入参的方式获得MultipartFile对象。


从API上我们可以看出这个接口提供的方法,就不难文件上传其实很简单。getBytes就是获得二进制文件,transferTo就是讲接受的文件对象保存至Dest对象中。除此以外要谈到的就是Ajax实现异步上传文件,就需要使用FormData这个对象,最后要谈的是我的一个同学,在使用Ajax上传图片成功返回结果,之后想使用(上传者)本地的图片地址作为Img的src的值,想法很好,虽然有点不走寻常路的意思,但是真的很好起码少了一次请求。然而chrome浏览器作为对使用者的保护,禁止通过类似的方法访问使用者本地的文件路径。所以这个方法是失败了,当然我的同学也不气馁,一番操作之后也实现这个方法(我不告诉你)。

分页

分页,我认为是一个项目必不可少的一部分。所以JPA提供了分页查询的插件(对于Oracle这个是否适用我不知道,但是对于MySQL是完全适用的)。在我的认知中,JPA只是一套规范,所以他定义了一套接口,而Hibernate的习惯也很符合这个接口(两个的关系我没去深究过,也不太清楚),所以JPA我就没有再去系统的学习。JPA有自己的一套查询的套路,而在分页中,我们所关心的其实也就那几点,1、从哪一条开始查 2、去几条信息 3 是否要先排序,以那个字段为基础,排序规则是什么 4 总页数是多少。其中前三条是条件,最后一条是分页必须要知道的一点.所以JPA将前三条作为一个对象,(PageRequest)作为查询的依据,将List和总页数封装成一个对象Page(这么说感觉有点不对劲,因为Page是一个接口,反正就这意思,就意思一下吧)。对于前台显示来说也就是那几个点, 1 当前页 2 总页数 3 展示的页码数(我定义为(页码宽度:pageWidth), 结合着Thymeleaf,我索性就写了一个方法,返回一个List,前台遍历即可。现在再想想为什么不把我上面说的都结合起来,但是时候返回一个一个对象即可,生的麻烦,所以总上面来看,这个对象中包含以下属性: (查询结果+总页数=Page) + List存放显示的页码 + 当前页。下面贴上我存放显示页码的List的生成方法:

/**
     * 分页的页码
     * @param pageWidth 页宽 可以通过配置文件的方式配置一个项目共享的页宽
     * @param currentPage 当前页
     * @param totalPage 总页数
     * @return list
     */
    public static List<Integer> pageList(int pageWidth, int currentPage, int totalPage){
        List<Integer> pages = new ArrayList<>(pageWidth);
        pageWidth = pageWidth > totalPage? totalPage: pageWidth;
        int mid = pageWidth/2;
        int start = currentPage <= mid ? 1: currentPage - mid;
        int end = totalPage - currentPage > mid ? totalPage + 1 : currentPage + mid + 1;
        for (int i = start; i < end; i++) {
            pages.add(i);
        }
        System.out.println(pages);
        return pages;
    }

代码没有什么技术含量,很笨,通用。

感想

项目不是很难,逻辑也不是很复杂,但是功能零零散散,加上冬天我又有点懒,所以还是花了点时间。再接再厉吧

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值