别个代码阅读学习(一)
2018-02-11 16:08
218 查看
关于CommonsMultipartFile一点点
就是个关于文件操作的类,见识于对Excel文件导入时;使用起来很方便,需要注意的是前后端的对接:
2.html写法注意两点
a.input类型为
file:<input type="file" name="sealPfxFile" id="sealPfxFile" size="24" />
b.form中增加参数enctype="multipart/form-data":
<form id="addSeal" name="addSeal" action="${root}/seal/o_add.do" enctype="multipart/form-data" method="post">
3.Service的写法(注意与html中定义的名称相同即可通过get方法取得需要的内容)
public String doAction(@RequestParam("sealPfxFile") CommonsMultipartFile sealPfxFile, Seal seal, ModelMap modelMap, HttpServletRequest request) throws Exception { //上传文件名 String fileName = sealPfxFile.getFileItem().getName(); //上传文件流 InputStream is = sealPfxFile.getInputStream(); }
之后是数据的应用,这里用的是HSSFWorkbook类进行的加载,比较关键的代码如下:
{ Workbook wb = loadWorkbook(inputStream); Sheet current = wb.getSheetAt(0); int lastRowNum = current.getLastRowNum(); for (int i = 0; i <= lastRowNum; i++) { if(i == 0) continue;//title Row row = this.getRow(current, i); if(row == null){ return result; } int numOfCells = row.getPhysicalNumberOfCells(); if (numOfCells < minCount) { LOG.error("数据错误,行数:{}, 数据:{}", i, StringUtil.join(row.cellIterator(), ",")); continue; } String answer = getCellValue(row, categoryCount); } ········ protected Workbook loadWorkbook(InputStream inputStream) throws IOException { return new HSSFWorkbook(inputStream); } public String getCellValue(Row row, int column) { String val = null; try { Cell cell = row.getCell(column); val = getString(getCellValue(cell)); } catch (Exception e) { //ignore } return val; }
总结一下:load(InputStream)——》sheet——》row——》cell;
其中又有一些细节,比如load的时候单独拆出来的方法(每个方法关注的重点不同,去耦合,同时也有Exception的考虑!),比如重复性代码的拆分(getCellValue)
最后再给出引用的一篇博文:CommonsMultipartFile---用Spring实现文件上传
由StringUtils.isNumeric引发的一些思考
首先,这个方法是检验某个字符串是不是数字类型,这样子后面转int等类型比较可靠;然后,会想到去看下StringUtils这个类,平时也是常用其中几个方法的,但几乎是十中一二罢了;
然后,就会想到如何学习这种类呢?死记硬背么?肯定不行啊。
最后呢,根据两种思路进行了求证
由下到上:见证某个方法的奇妙用法,看源码和用法,记录积累;
由上到下:对某种数据类型有某种操作需求,思考相关要求,找相关类(工具类等),找其中的方法;
这样想了下,发现最终都是需要一个事情:多tm做事情,多tm看代码!
具体操作,综合两种思路:平时有操作需求,多思考下,然后如果成行,或者有不错的事例,记录下来;
最后,引用两个知乎答案:如何高效学习Java API提供的的类和方法?,Java开发人员必知必会的20种常用类库和API
this和代码书写的艺术
this,这个常见,缺不是常懂。。经常就是照着已有代码比葫芦画瓢;其实很简单,说白了就是当前对象
this的本质就是“创建好的对象的地址”! 由于在构造方法调用前,对象已经创建。因此,在构造方法中也可以使用this代表“当前对象” 。this最常的用法: 1.在程序中产生二义性之处,应使用this来指明当前对象;普通方法中,this总是指向调用该方法的对象。构造方法中,this总是指向正要初始化的对象。2.使用this关键字调用重载的构造方法,避免相同的初始化代码。但只能在构造方法中用,并且必须位于构造方法的第一句。3.this不能用于static方法中。
那么看下我这边说的代码书写艺术的体现吧
new MultiBatchJob<E>(this, MAX_BATCH_SIZE, list).batchStore().awaitFinish();
前面一部分都是实例化类,然后执行awaitFinish();
所以,艺术的部分在于构造函数的利用!
public MultiBatchJob(StorageImporter storageImporter, int batchCount, List<E> list) { } public MultiBatchJob batchStore() { return this; }
只看框架就知道,构造函数,然后执行操作,再需要执行操作呢?return this!!!我了个擦。。。
一般只在构造函数以及setter中用this的简直对此着迷!!!
无f可说,后面自己骚操作一下好么
相关文章推荐
- 嵌入式 十个最值得阅读学习的C开源项目代码
- [Android阅读代码]android-async-http源码学习一
- Cocos2d-x精灵学习笔记 分类: cocos2d代码编写 2015-07-27 17:17 5人阅读 评论(0) 收藏
- 最值得学习阅读的10个C语言开源项目代码
- 学习ns2过程中,如何在vim中使用cscope高效阅读代码
- 阅读《重构 改善既有代码的设计》学习笔记
- 嵌入式 十个最值得阅读学习的C开源项目代码
- 最值得阅读学习的 10 个 C 语言开源项目代码
- 怎么学习阅读大型项目的代码
- 十个最值得阅读学习的C开源项目代码
- Android 混淆代码学习以及And… 分类: Android开发 2014-05-30 10:55 95人阅读 评论(0) 收藏
- 深度学习——caffe安装与代码阅读第一步
- Cocos2d-x事件分发机制学习笔记 分类: cocos2d代码编写 2015-07-27 18:02 6人阅读 评论(0) 收藏
- 整理了旧有代码并应用了git来托管代码另外大量阅读了关于学习安排方面的资料
- 最值得阅读学习的 10 个 C 语言开源项目代码
- 转: 最值得阅读学习的 10 个 C 语言开源项目代码
- 嵌入式 十个最值得阅读学习的C开源项目代码
- Cocos2d-x 文件系统学习笔记 分类: cocos2d代码编写 2015-07-27 19:04 5人阅读 评论(0) 收藏
- PHP_Bibel阅读学习(一)——看书看经典,写文写代码
- 最值得阅读学习的 10 个 C 语言开源项目代码