扯淡:老規(guī)矩,先扯淡,老實說,過年就是回家在親戚面前吹吹牛喝喝酒,再聽聽別人的牛,然后回來繼續(xù)苦逼....
所以不是你把別人吹倒,就是別人把你吹倒,大家要加油吹哦!
-----------------------------------------
最近很多人糾結(jié)自己文章被別人抄襲的事。
我一直想不明白:自己寫的博客被人抄襲,甚至當成別人的原創(chuàng)這種情況對自己有多大的傷害?
我不明白:除了自己虛榮心上的一點挫折,其他損失還有多少呢?除了部分惡意的抄襲行為,的確要反對外。
我覺得:一個分享的行為,被放大,被傳播,本來就是一件很nice,很cool的事。
我個人也會轉(zhuǎn)文章,一般文章署名了,我也會會復(fù)制過來,沒寫的我也懶的一個個標記好是從哪里復(fù)制來的了,但是有一點是肯定的,雖然是復(fù)制粘貼的幾秒鐘,我是感謝作者的,至少我會傾佩他幾秒,我覺得他教給我一些東西,無形的東西,但卻可能有價值。
為什么要糾結(jié)別人對你文章的復(fù)制粘貼呢?
當你把一些思考,總結(jié),經(jīng)驗貼到自己的博客后。一個月后在另一個博客上看到了自己文章,難道這件事反而會讓各位生氣嗎?這在博客園里應(yīng)該是件快樂的事情吧,想想自己文章被人反復(fù)閱讀,并被記錄下來,成為別人思想的一部分,這是多么有趣的一件事??!
到了這里卻被看成是有點罪惡感的事了。
寫博客正真的收獲的是什么?
1,寫的時候自己的思考
2,寫完后自己對自己文章的閱讀重新思考
3,別人看了你的文章的反饋,然后你就可以再進行擴展思考。
整一個過程就是不斷的促使自己思考的過程。只要這個過程還能促使你思考,寫這篇博客就是有價值的,至少對自己是有的。
所以我個人覺得,還是不要太糾結(jié)別人的什么抄襲這種事,別人抄襲你只能代表別人覺得這篇博客有幫到他,覺得你不錯,是吧。
主題:
1,下載文件
文件躺在服務(wù)器的某個文件夾下,頁面點擊下載,將文件保存到本地的過程:
action用springmvc實現(xiàn):
public ModelAndView downloadModelForm(HttpServletRequest request, HttpServletResponse response) throws Exception{ response.setContentType("application/octet-stream"); String fileName = "用戶申請表.docx"; String path = request.getSession().getServletContext().getRealPath(BusinessConstants.DOWNLOAD_FILE_PATH + fileName); File file = new File(path); // 清空response response.reset(); if (request.getHeader("User-Agent").toLowerCase().indexOf("firefox") > 0){ fileName = new String(fileName.getBytes("UTF-8"), "ISO8859-1");//firefox瀏覽器 } else{ fileName = URLEncoder.encode(fileName, "UTF-8");//其他瀏覽器包括IE瀏覽器和google瀏覽器 } // 設(shè)置response的Header response.addHeader("Content-Disposition", "attachment;filename="+ fileName); response.addHeader("Content-Length", ""+file.length()); try{ //以流的形式下載文件 InputStream fis = new BufferedInputStream(new FileInputStream(path)); byte[] buffer = new byte[fis.available()]; fis.read(buffer); fis.close(); OutputStream toClient = new BufferedOutputStream(response.getOutputStream()); toClient.write(buffer); toClient.flush(); toClient.close(); }catch(Exception e){ e.printStackTrace(); } return null; }
特別要注意的是代碼是哦那個對fileName 編碼邏輯,根據(jù)不同瀏覽器來實現(xiàn)不同的編碼,這樣做是為了在輸出文件名時可以使用中文名。
測試對firefox,ie8,谷歌通過,可用。如果不做操作,結(jié)果是文件名使用中文的話會出現(xiàn)亂碼問題。(可能這只是一種解決方案,如果你有更好的解決方式,請告訴我哦)
2,導(dǎo)出excle文件:
導(dǎo)出的是賬單表的內(nèi)容,數(shù)據(jù)需要先去數(shù)據(jù)庫中取的,組裝成excel。
這里使用最新的pio3.9(開源項目),來完成excel的導(dǎo)出:
service層的方法:組裝出一個完整內(nèi)容的HSSFWorkbook
public HSSFWorkbook export(List<Sale> list) { HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet = wb.createSheet(BusinessConstants.EXCEL_SHEET_NAME); HSSFRow row = sheet.createRow((int) 0); HSSFCellStyle style = wb.createCellStyle(); style.setAlignment(HSSFCellStyle.ALIGN_CENTER); String[] excelHeader = BusinessConstants.EXCEL_HEADER; for (int i = 0; i < excelHeader.length; i++) { HSSFCell cell = row.createCell(i); cell.setCellValue(excelHeader[i]); cell.setCellStyle(style); sheet.autoSizeColumn(i); } SimpleDateFormat sdf = new SimpleDateFormat(BusinessConstants.DATE_FORMAT); for (int i = 0; i < list.size(); i++) { row = sheet.createRow(i + 1); Sale sale = list.get(i); row.createCell(0).setCellValue(sdf.format(sale.getTime())); //setCellValue方法參數(shù)不能是null,會導(dǎo)致異常,所以對每一個內(nèi)容進行必要的檢查 if(sale.getStrType() == null){ row.createCell(1).setCellValue(BusinessConstants.STRIKE); }else{ row.createCell(1).setCellValue(sale.getStrType()); } if(sale.getStrPayType() == null){ row.createCell(2).setCellValue(BusinessConstants.STRIKE); }else{ row.createCell(2).setCellValue(""+sale.getStrPayType()); } if(sale.getAmount() == null){ row.createCell(3).setCellValue(BusinessConstants.STRIKE); }else{ row.createCell(3).setCellValue(sale.getAmount()); } if(sale.getProductNum() == null){ row.createCell(4).setCellValue(BusinessConstants.STRIKE); }else{ row.createCell(4).setCellValue(sale.getProductNum()); } if(sale.getProductValid() == null){ row.createCell(5).setCellValue(BusinessConstants.STRIKE); }else{ row.createCell(5).setCellValue(sale.getProductValid()); } if(sale.getProductName() == null){ row.createCell(6).setCellValue(BusinessConstants.STRIKE); }else{ row.createCell(6).setCellValue(sale.getProductName()); } } return wb; }
action層的代碼:
public ModelAndView downloadBill(HttpServletRequest request, HttpServletResponse response) throws IOException { User user = (User) request.getSession().getAttribute("user"); List<Sale> saleList = accountService.getSale(user.getId(), null, null, 0); HSSFWorkbook wb = accountService.export(saleList); // 清空response response.reset(); String fileName = ""; if (request.getHeader("User-Agent").toLowerCase().indexOf("firefox") > 0){ fileName = new String(BusinessConstants.EXCEL_FILE_NAME.getBytes("UTF-8"), "ISO8859-1");//firefox瀏覽器 } else{ fileName = URLEncoder.encode(BusinessConstants.EXCEL_FILE_NAME, "UTF-8");//其他瀏覽器包括IE瀏覽器和google瀏覽器 } response.setContentType("application/vnd.ms-excel");//Office2003 response.setHeader("Content-disposition", "attachment;filename="+fileName); OutputStream ouputStream = response.getOutputStream(); wb.write(ouputStream); ouputStream.flush(); ouputStream.close(); return null; }
同樣的我們需要對fileName進行編碼上的設(shè)置,以使可以正常使用中文名。
如果進行操作,效果可能是這樣的:
導(dǎo)出效果:
以上,希望能幫到你。
各位,新年快樂!
讓我們繼續(xù)前行
----------------------------------------------------------------------
努力不一定成功,但不努力肯定不會成功。
共勉。
聯(lián)系客服