ITPub博客

首页 > IT职业 > IT职场 > JSTL+EL表达式方法获取Oracle的Clob字段内容

JSTL+EL表达式方法获取Oracle的Clob字段内容

IT职场 作者:ahcow 时间:2021-09-09 10:23:55 0 删除 编辑


我们在页面获得数据的时候一般的类型还是很好获得的,但是一遇到Clob类型就比较麻烦,最常用的方法是用一个流将其读取出来.使用MVC框架的时候这些都是无所谓的事情,因为反正是写在java类中怎么写都行,可是不使用MVC框架,使用jsp页面+JSTL的sql标签去读取数据库的数据这种方式就麻烦了,真的很麻烦,你不能在jsp上面嵌java代码吧?要是写java代码…脸上都无光啊….呵呵.我们这个新项目就是使用jsp+JSTL标签进行开发.可是有几个表的字段都是Clob类型的(因为要往里面存网页)存的时候使用的控件,可是取出来就取不出来了…结果我写了一个Tag(自定义标签),但是还是挺麻烦的(毕竟自定义标签不是干这个用的,他是干更高级任务的),最终我想到了EL表达式方法在我的一篇Blog中有介绍[自定义EL表达式方法[url]http://tonyaction.blog.51cto.com/227462/42348[/url]]

代码其实很简单,主要是一种技术的应用.下面是代码:

    public static String mClob(Object clob) throws Exception {

       if (clob == null) {

           return "";

       }

       StringBuffer clobString = new StringBuffer();

       if (clob instanceof Clob) {

           int y;

           char ac[] = new char[4096];

           Reader reader = ((Clob) clob).getCharacterStream();

           while ((y = reader.read(ac, 0, 4096)) != -1) {

              clobString.append(new String(ac, 0, y));

           }

       } else {

           clobString.append(clob.toString());

       }

       return clobString.toString();

    }

 

elfunc.tld配置文件中需要这么写

<function>

       <description>取Clob数据内容函数</description>

       <name>mClob</name>

       <function-class>com.tianjin.canic.tjeg.utils.ELFuncUtil</function-class>

       <function-signature>java.lang.String mClob(java.lang.Object)</function-signature>

       <example>${elf:mClob(clob)}</example>

    </function>

 

 

Jsp页面需要这么写

获得数据库中的结果集

 

<sql:transaction dataSource="jdbc/tjeg">

           <sql:query var="fwsx_info">

                   SELECT WBJ_ID,BL_URL,FWSX_INFO,FWSX_NAME,FW_FALV,FW_QIXIAN,FW_TIAOJIAN,FW_CAILIAO,FW_SHOUFEI,FW_DOWN FROM TJEG_FWSX WHERE ID = ?

                   <sql:param>${param.id}</sql:param>

           </sql:query>

       </sql:transaction>

迭代结果集

<c:forEach var="row" items="${fwsx_info.rows}">

<c:set value="${row.FW_FALV}" var="FW_FALV" scope="page"></c:set>

</c:forEach>

然后页面将其读取出来

<c:out value="${elf:mClob(FW_FALV)}" escapeXml="false"></c:out>

©著作权归作者所有:来自51CTO博客作者程序员王涛的原创作品,如需转载,请注明出处,否则将追究法律责任

javaOracleClobEL表达式方法


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/3663/viewspace-2821501/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-08-30

  • 博文量
    90
  • 访问量
    948