JSTL+EL表达式方法获取Oracle的Clob字段内容[通俗易懂]

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

大家好,又见面了,我是全栈君。

我们在页面获得数据的时候一般的类型还是很好获得的,但是一遇到Clob类型就比较麻烦,最常用的方法是用一个流将其读取出来.使用MVC框架的时候这些都是无所谓的事情,因为反正是写在java类中怎么写都行,可是不使用MVC框架,使用jsp页面+JSTLsql标签去读取数据库的数据这种方式就麻烦了,真的很麻烦,你不能在jsp上面嵌java代码吧?要是写java代码

脸上都无光啊

.
呵呵.我们这个新项目就是使用jsp+JSTL标签进行开发.可是有几个表的字段都是Clob类型的(因为要往里面存网页)存的时候使用的控件,可是取出来就取不出来了

结果我写了一个Tag(自定义标签),但是还是挺麻烦的(毕竟自定义标签不是干这个用的,他是干更高级任务的),最终我想到了EL表达式方法在我的一篇Blog中有介绍[
自定义
EL
表达式方法
[url]http://tonyaction.blog.51cto.com/227462/42348[/url]
]
代码其实很简单,主要是一种技术的应用.下面是代码:
/**
     
*
     
*
 
<pre>
     
*
 
创建人
:
 
王涛
     
*
 
创建于
:
 
2007

8

7
     
*
 

 

:
     
*
    
根据得参数
clob(CLOB
类型
)
获得其中的内容
,
并以
String
方式返回
     
*
 
</pre>
     
*
     
*
 
@param
 
clob
     
*
 
@return
     
*
 
@throws
 
Exception
     
*/
    
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>










本文转自 tony_action 51CTO博客,原文链接:http://blog.51cto.com/tonyaction/42455,如需转载请自行联系原作者
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/107944.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 虚拟服务器 emule,emule服务器

    虚拟服务器 emule,emule服务器emule服务器内容精选换一换生产站点服务器为SUSE操作系统,对该云服务器创建容灾演练后,发现容灾演练云服务器的网卡名称与生产站点服务器的网卡名称不一致。示例:操作系统为NovellSUSELinuxEnterpriseServer12SP364bit的生产站点服务器,挂载有5张网卡。登录生产站点服务器,查询网卡名称为eth0~eth4,如图1所示。创远程桌面协议(Remote…

  • mysql8.0.26安装及配置超详细教程(Burpsuite超详细安装教程)

    文章目录:官网下载MySQL的安装包添加并配置my.ini文件配置系统变量并初始化MySQL安装并启动MySQLNavicat连接MySQL并修其密码安装过程中常见问题及其解决方法官网下载MySQL的安装包下载链接如下:MySQL8.0.20版本其他版本:MySQL8.0.16版本MySQL8.0.20版本压缩包解压后如下图所示:添加并配置my.ini文件在原解压根…

  • pycharm2021专业版永久激活码【在线注册码/序列号/破解码】

    pycharm2021专业版永久激活码【在线注册码/序列号/破解码】,https://javaforall.cn/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

  • TLSF算法分析

    TLSF算法分析注:本文的大部分内容摘录自论文《TLSF:aNewDynamicMemoryAllocatorforReal-TimeSystems》,可以通过“科学上网”访问如下链接阅读原文:http://www.gii.upv.es/tlsf/files/ecrts04_tlsf.pdf。什么是TLSFTLSF是TwoLevelSegregatedFitmemoryal

  • 傅里叶变换概念及公式推导

    傅里叶变换概念及公式推导傅里叶变换傅里叶变换的目的是可将时域(即时间域)上的信号转变为频域(即频率域)上的信号,随着域的不同,对同一个事物的了解角度也就随之改变,因此在时域中某些不好处理的地方,在频域就可以较为简单的处理。傅里叶变换公式:(w代表频率,t代表时间,e^-iwt为复变函数)傅里叶变换认为一个周期函数(信号)包含多个频率分量,任意函数(信号)f(t)可通过多个周期函数(基函数)相加而合成。从物理角度

  • windows下面安装Python和pip终极教程「建议收藏」

    windows下面安装Python和pip终极教程「建议收藏」在大二的时候接触过一段时间的Python,最近又开始玩起了这门语言。总的来说,个人很喜欢Python的语言风格,但是这门语言对于windows并不算很友好,因为如果是初学者在windows环境下安装,

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号