bbossgroups 3.3 发布

来源:互联网 发布:ubuntu切换中文输入法 编辑:程序博客网 时间:2024/06/06 03:58
 
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时传输失败的问题
Xml代码
  1. <!-- 能够解码的最大数据size,超过时,将抛异常,默认20M -->  
  2. <property name="maxFramgeLength_" value="20971520" />  
  3.   
  4. <!-- 编码块大小 -->  
  5. <property name="estimatedLength_" value="1024" />  

◆ 修改默认服务发布时,serviceport带了ws:前缀
◆ 修复注入属性缺陷:
当属性值注入以后没有立即退出注入循环,而是把循环跑完,对性能有一定的影响。
修改程序:
/bbossaop/src/org/frameworkset/spi/assemble/BeanAccembleHelper.java
◆ 修复配置文件sql不能安照特定数据库类型或者到指定数据库sql语句的缺陷

2.mvc

◆ 控制器方法参数绑定机制增加MultipartFile、MultipartFile[]类型绑定支持,必须和RequestParam注解一起使用,使用方法如下:


Java代码
  1. public String uploadFileWithMultipartFile(@RequestParam(name="upload1")  MultipartFile file,     
  2.             ModelMap model)     
  3. public String uploadFileWithMultipartFiles(@RequestParam(name="upload1")  MultipartFile[] files,     
  4.             ModelMap model)    



◆ PO对象属性数据绑定机制增加MultipartFile、MultipartFile[]类型绑定支持,可以和RequestParam注解一起使用,也可以直接与属性名称直接绑定,使用方法如下:
public String uploadFileWithFileBean(FileBean files)

FileBean是一个自定义的java bean,结构如下:

Java代码
  1. public class FileBean     
  2. {     
  3.     private MultipartFile upload1;     
  4.     @RequestParam(name="upload1")     
  5.     private MultipartFile[] uploads;     
  6.     @RequestParam(name="upload1")     
  7.     private MultipartFile anupload;     
  8.     //省略属性的get/set方法     
  9. }       


◆ 完善@ResponseBody注解,增加直接对文件下载功能的支持,只要控制器方法返回File对象即可
◆ 完善认证拦截器功能,增加认证失败后跳转页面的方式为redirect和forward两种,可以在拦截器上配置directtype属性
来实现具体的跳转方式:

   
Xml代码
  1. <property class="org.frameworkset.web.interceptor.MyFirstInterceptor">     
  2.                     <!-- 配置认证检查拦截器拦截url模式规则 -->     
  3.                     <property name="patternsInclude">     
  4.                         <list componentType="string">     
  5.                             <property value="/**/*.htm"/>     
  6.                         </list>     
  7.                     </property>     
  8.                     <!-- 配置认证检查拦截器不拦截url模式规则 -->     
  9.                     <property name="patternsExclude">     
  10.                         <list componentType="string">     
  11.                             <property value="/*.html"/>     
  12.                         </list>     
  13.                     </property>     
  14.                     <property name="redirecturl" value="/login.jsp"/>     
  15.                     <property name="directtype" value="forward"/>     
  16.                 </property>    



◆ 修复mvc分页跳转页码为负数时,不能正常分页的问题
◆ 修复ResponseBody指定数据返回类型和字符集不生效的问题

3.persistent

◆ 处理日期和时间类型时转换为字符串时,如果值为空时抛出空指针异常的问题修复
◆ 解决sql server元数据获取为空的问题
◆ 改进SQLParams api,可以直接对MultipartFile对象存入clob或者blob列。
sqlparams.addSQLParam("FILECONTENT", multipartfile,SQLParams.BLOBFILE);

对于大字段的处理建议采用以下方法:
   
Java代码
  1. sqlparams.addSQLParam("FILECONTENT", multipartfile,SQLParams.BLOBFILE);//直接传递MultipartFile对象进行插入    
  2.     sqlparams.addSQLParam("FILECONTENT", inputStream, size,SQLParams.BLOBFILE);//直接传递InputStream对象以及流大小Size属性进行插入    



◆ 增加FieldRowHandler处理器,以便实现从blob/clob中获取单个字段文件对象的处理,其他类似类型数据也可以使用FieldRowHandler,使用示例如下:
Java代码
  1. public File getDownloadClobFile(String fileid) throws Exception     
  2.        {     
  3.            try     
  4.            {     
  5.                return SQLExecutor.queryTField(     
  6.                                                File.class,     
  7.                                                new FieldRowHandler<File>() {     
  8.         
  9.                                                    @Override     
  10.                                                    public File handleField(     
  11.                                                            Record record)     
  12.                                                            throws Exception     
  13.                                                    {     
  14.         
  15.                                                        // 定义文件对象    
  16.                                                        File f = new File("d:/",record.getString("filename"));     
  17.                                                        // 如果文件已经存在则直接返回f    
  18.                                                        if (f.exists())     
  19.                                                            return f;     
  20.                                                        // 将blob中的文件内容存储到文件中    
  21.                                                        record.getFile("filecontent",f);     
  22.                                                        return f;     
  23.                                                    }     
  24.                                                },     
  25.                                                "select * from CLOBFILE where fileid=?",     
  26.                                                fileid);     
  27.            }     
  28.            catch (Exception e)     
  29.            {     
  30.                throw e;     
  31.            }     
  32.        }    



◆ 增加对文件上传入库和从db下载功能的支持,使用实例
上传
Java代码
  1. public boolean uploadFile(InputStream inputStream,long size, String filename) throws Exception {     
  2.           boolean result = true;     
  3.           String sql = "";     
  4.           try {     
  5.               sql = "INSERT INTO filetable (FILENAME,FILECONTENT,fileid,FILESIZE) VALUES(#[filename],#[FILECONTENT],#[FILEID],#[FILESIZE])";     
  6.               SQLParams sqlparams = new SQLParams();     
  7.               sqlparams.addSQLParam("filename", filename, SQLParams.STRING);     
  8.               sqlparams.addSQLParam("FILECONTENT", inputStream, size,SQLParams.BLOBFILE);     
  9.               sqlparams.addSQLParam("FILEID", UUID.randomUUID().toString(),SQLParams.STRING);     
  10.               sqlparams.addSQLParam("FILESIZE", size,SQLParams.LONG);     
  11.               SQLExecutor.insertBean(sql, sqlparams);              
  12.                    
  13.           } catch (Exception ex) {     
  14.               ex.printStackTrace();     
  15.               result = false;     
  16.               throw new Exception("上传附件关联临控指令布控信息附件失败:" + ex);     
  17.           } finally {     
  18.               if(inputStream != null){     
  19.                   inputStream.close();     
  20.               }     
  21.           }     
  22.           return result;     
  23.       }    



下载
Java代码
  1. SQLExecutor.queryByNullRowHandler(new NullRowHandler(){     
  2.                 @Override     
  3.                 public void handleRow(Record record)     
  4.                         throws Exception     
  5.                 {     
  6.                     record.getBlob("filecontent").getBinaryStream();     
  7.                     StringUtil.sendFile(request, response, record.getString("filename"),record.getBlob("filecontent"));     
  8.                 }}, "select * from filetable where fileid=?",fileid);    


◆ 如果没有指定一条sql语句,PreparedDBUtil.executePreparedBatch将报出异常,这个不是很合理
直接改为info方式。

4.taglib

◆ 增加map和mapkey两个标签,用来循环迭代展示map中的value对象值或者value对象中的数据值以及mapkey值
使用方法如下:
 
  1. <table>     
  2.         <h3>map<String,po>对象信息迭代功能</h3>     
  3.         <pg:map requestKey="mapbeans">     
  4.              
  5.             <tr class="cms_data_tr">     
  6.                 <td>     
  7.                     mapkey:<pg:mapkey/>     
  8.                 </td>      
  9.                 <td>     
  10.                     id:<pg:cell colName="id" />     
  11.                 </td>      
  12.                 <td>     
  13.                     name:<pg:cell colName="name" />     
  14.                 </td>      
  15.             </tr>     
  16.         </pg:map>     
  17.              
  18.              
  19.     </table>     
  20.          
  21.     <table>     
  22.         <h3>map<String,String>字符串信息迭代功能</h3>     
  23.         <pg:map requestKey="mapstrings">     
  24.              
  25.             <tr class="cms_data_tr">     
  26.                 <td>     
  27.                     mapkey:<pg:mapkey/>     
  28.                 </td>      
  29.                 <td>     
  30.                     value:<pg:cell/>     
  31.                 </td>      
  32.                      
  33.             </tr>     
  34.         </pg:map>     
  35.              
  36.              
  37.     </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类中增加文件下载方法:
Java代码
  1. StringUtil.sendFile(request, response, record     
  2.                             .getString("filename"), record     
  3.                             .getBlob("filecontent"));     
  4. StringUtil.sendFile(request, response, file);      



◆ 支持数字向BigDecimal转换、数字数组向BigDecimal数组转换功能
原创粉丝点击