bbossgroups 3.3 釋出,該版本在3.2的基礎上做了非常多的功能增強和功能改進,具體情況參考後面的功能點清單。
項目部落格:
http://yin-bp.iteye.com/ 項目sourceforge下載下傳位址: http://sourceforge.net/projects/bboss/files/ 項目官網: http://www.bbossgroups.comrelease version : bbossgroups-3.3
release date: 2011/08/14
********************************************************
release futures:
************************************************bbossgroups-3.3******************************
1.aop/ioc
◆ 增加netty協定消息大小配置參數,解決發送/接收的資料封包超過預設1M時傳輸失敗的問題
<!-- 能夠解碼的最大資料size,超過時,将抛異常,預設20M -->
<property name="maxFramgeLength_" value="20971520" />
<!-- 編碼塊大小 -->
<property name="estimatedLength_" value="1024" />
◆ 修改預設服務釋出時,serviceport帶了ws:字首
◆ 修複注入屬性缺陷:
當屬性值注入以後沒有立即退出注入循環,而是把循環跑完,對性能有一定的影響。
修改程式:
/bbossaop/src/org/frameworkset/spi/assemble/BeanAccembleHelper.java
◆ 修複配置檔案sql不能安照特定資料庫類型或者到指定資料庫sql語句的缺陷
2.mvc
◆ 控制器方法參數綁定機制增加MultipartFile、MultipartFile[]類型綁定支援,必須和RequestParam注解一起使用,使用方法如下:
public String uploadFileWithMultipartFile(@RequestParam(name="upload1") MultipartFile file,
ModelMap model)
public String uploadFileWithMultipartFiles(@RequestParam(name="upload1") MultipartFile[] files,
ModelMap model)
◆ PO對象屬性資料綁定機制增加MultipartFile、MultipartFile[]類型綁定支援,可以和RequestParam注解一起使用,也可以直接與屬性名稱直接綁定,使用方法如下:
public String uploadFileWithFileBean(FileBean files)
FileBean是一個自定義的java bean,結構如下:
public class FileBean
{
private MultipartFile upload1;
@RequestParam(name="upload1")
private MultipartFile[] uploads;
@RequestParam(name="upload1")
private MultipartFile anupload;
//省略屬性的get/set方法
}
◆ 完善@ResponseBody注解,增加直接對檔案下載下傳功能的支援,隻要控制器方法傳回File對象即可
◆ 完善認證攔截器功能,增加認證失敗後跳轉頁面的方式為redirect和forward兩種,可以在攔截器上配置directtype屬性
來實作具體的跳轉方式:
<property class="org.frameworkset.web.interceptor.MyFirstInterceptor">
<!-- 配置認證檢查攔截器攔截url模式規則 -->
<property name="patternsInclude">
<list componentType="string">
<property value="/**/*.htm"/>
</list>
</property>
<!-- 配置認證檢查攔截器不攔截url模式規則 -->
<property name="patternsExclude">
<list componentType="string">
<property value="/*.html"/>
</list>
</property>
<property name="redirecturl" value="/login.jsp"/>
<property name="directtype" value="forward"/>
</property>
◆ 修複mvc分頁跳轉頁碼為負數時,不能正常分頁的問題
◆ 修複ResponseBody指定資料傳回類型和字元集不生效的問題
3.persistent
◆ 處理日期和時間類型時轉換為字元串時,如果值為空時抛出空指針異常的問題修複
◆ 解決sql server中繼資料擷取為空的問題
◆ 改進SQLParams api,可以直接對MultipartFile對象存入clob或者blob列。
sqlparams.addSQLParam("FILECONTENT", multipartfile,SQLParams.BLOBFILE);
對于大字段的處理建議采用以下方法:
sqlparams.addSQLParam("FILECONTENT", multipartfile,SQLParams.BLOBFILE);//直接傳遞MultipartFile對象進行插入
sqlparams.addSQLParam("FILECONTENT", inputStream, size,SQLParams.BLOBFILE);//直接傳遞InputStream對象以及流大小Size屬性進行插入
◆ 增加FieldRowHandler處理器,以便實作從blob/clob中擷取單個字段檔案對象的處理,其他類似類型資料也可以使用FieldRowHandler,使用示例如下:
public File getDownloadClobFile(String fileid) throws Exception
{
try
{
return SQLExecutor.queryTField(
File.class,
new FieldRowHandler<File>() {
@Override
public File handleField(
Record record)
throws Exception
{
// 定義檔案對象
File f = new File("d:/",record.getString("filename"));
// 如果檔案已經存在則直接傳回f
if (f.exists())
return f;
// 将blob中的檔案内容存儲到檔案中
record.getFile("filecontent",f);
return f;
}
},
"select * from CLOBFILE where fileid=?",
fileid);
}
catch (Exception e)
{
throw e;
}
}
◆ 增加對檔案上傳入庫和從db下載下傳功能的支援,使用執行個體
上傳
public boolean uploadFile(InputStream inputStream,long size, String filename) throws Exception {
boolean result = true;
String sql = "";
try {
sql = "INSERT INTO filetable (FILENAME,FILECONTENT,fileid,FILESIZE) VALUES(#[filename],#[FILECONTENT],#[FILEID],#[FILESIZE])";
SQLParams sqlparams = new SQLParams();
sqlparams.addSQLParam("filename", filename, SQLParams.STRING);
sqlparams.addSQLParam("FILECONTENT", inputStream, size,SQLParams.BLOBFILE);
sqlparams.addSQLParam("FILEID", UUID.randomUUID().toString(),SQLParams.STRING);
sqlparams.addSQLParam("FILESIZE", size,SQLParams.LONG);
SQLExecutor.insertBean(sql, sqlparams);
} catch (Exception ex) {
ex.printStackTrace();
result = false;
throw new Exception("上傳附件關聯臨控指令布控資訊附件失敗:" + ex);
} finally {
if(inputStream != null){
inputStream.close();
}
}
return result;
}
下載下傳
SQLExecutor.queryByNullRowHandler(new NullRowHandler(){
@Override
public void handleRow(Record record)
throws Exception
{
record.getBlob("filecontent").getBinaryStream();
StringUtil.sendFile(request, response, record.getString("filename"),record.getBlob("filecontent"));
}}, "select * from filetable where fileid=?",fileid);
◆ 如果沒有指定一條sql語句,PreparedDBUtil.executePreparedBatch将報出異常,這個不是很合理
直接改為info方式。
4.taglib
◆ 增加map和mapkey兩個标簽,用來循環疊代展示map中的value對象值或者value對象中的資料值以及mapkey值
使用方法如下:
<table>
<h3>map<String,po>對象資訊疊代功能</h3>
<pg:map requestKey="mapbeans">
<tr class="cms_data_tr">
<td>
mapkey:<pg:mapkey/>
</td>
<td>
id:<pg:cell colName="id" />
</td>
<td>
name:<pg:cell colName="name" />
</td>
</tr>
</pg:map>
</table>
<table>
<h3>map<String,String>字元串資訊疊代功能</h3>
<pg:map requestKey="mapstrings">
<tr class="cms_data_tr">
<td>
mapkey:<pg:mapkey/>
</td>
<td>
value:<pg:cell/>
</td>
</tr>
</pg:map>
</table>
◆ cell标簽提供actual屬性,可以直接輸出改屬性設定的值,值可以為el表達式的值
◆ 修改empty和notempty兩個邏輯标簽增加對Collection和Map對象的為empty判斷支援
◆ 修改rowcount标簽,去除多餘的空格
◆ 完善标簽排序功能更新檔
增加相應的訓示箭頭,辨別升序和降序
相關檔案
/bboss-mvc/WebRoot/include/pager.css
WebRoot\WEB-INF\lib\frameworkset.jar
5.util
◆ StringUtil類中增加檔案下載下傳方法:
StringUtil.sendFile(request, response, record
.getString("filename"), record
.getBlob("filecontent"));
StringUtil.sendFile(request, response, file);
◆ 支援數字向BigDecimal轉換、數字數組向BigDecimal數組轉換功能