天天看點

bbossgroups 3.3 釋出

bbossgroups 3.3 釋出,該版本在3.2的基礎上做了非常多的功能增強和功能改進,具體情況參考後面的功能點清單。

項目部落格:

http://yin-bp.iteye.com/ 項目sourceforge下載下傳位址: http://sourceforge.net/projects/bboss/files/ 項目官網: http://www.bbossgroups.com

release 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數組轉換功能