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,如需转载请自行联系原作者
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Laravel find in set排序

    Laravel find in set排序

    2021年11月9日
    53
  • 玫瑰花(C语言代码)

    玫瑰花(C语言代码)代码用到图形库,有音乐,音乐名为BadApple.mp3,可以找一首mp3形式的歌,歌名改成BadApple.mp3,与.exe文件放在同一个文件夹下,程序执行时会播放名字为BadApple.mp3音乐(会玩的可以去看程序自己改),不同编译器颜色不同左vc,右Dev,颜色也可以通过RGB()进行修改。加个图形库(EasyX)的链接(根据提示来就行):https://blog.csdn…

    2022年7月26日
    13
  • java runtimeexception check_CheckException和RuntimeException

    java runtimeexception check_CheckException和RuntimeExceptionjava文档中对RuntimeException的定义是:RuntimeException是那些可能在Java虚拟机正常运行期间抛出的异常的超类。可能在执行方法期间抛出但未被捕获的RuntimeException的任何子类都无需在throws子句中进行声明。java中Exception分为两类,一类是CheckException一类是UncheckException。并且java的E…

    2022年7月24日
    12
  • 淘宝、天猫、京东、苏宁等平台抢购脚本

    淘宝、天猫、京东、苏宁等平台抢购脚本淘宝、天猫、京东、苏宁等平台抢购脚本扫码添加“SevenBlog”公众号,获取更多好玩脚本进入正题:建议使用Chrome浏览器1、安装浏览器插件,Ghelper(需要注册账号)打开浏览器扩展程序,并且打开开发者模式,将下载好的Ghelper解压,然后添加已解压的扩展程序2、浏览器地址栏输入chrome://apps/,并打开下面的网上应用店…

    2022年6月7日
    54
  • ASP也做工作流

    ASP也做工作流

    2021年8月7日
    63
  • vscode运行python_vscode python 调试

    vscode运行python_vscode python 调试Vscode+python+flake8安装配置使用总述Vscode+python环境下,配置flake8与yapf,以及使用方法1.1. Flake8——Python静态代码检查工具Flake8是由Python官方发布的一款辅助检测Python代码是否规范的工具,相对于目前热度比较高的Pylint来说,Flake8检查规则灵活,支持集成额外插件,扩展性强。Flake8是对下面三个工具的封装: PyFlakes:静态检查Python代码逻辑错误的工具。 Pep8:静态检查PEP

    2025年11月3日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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