当前位置: 代码迷 >> JavaScript >> jsp页面用自定义标签展示Clob类型数据
  详细解决方案

jsp页面用自定义标签展示Clob类型数据

热度:148   发布时间:2012-11-23 22:54:33.0
jsp页面用自定义标签显示Clob类型数据

?

?

/**

?* File Name: ? ?ClobToString.java

?*

?* File Desc: ? ?处理clob大对象类型

?*

?* Product AB: ? WEB_1_0_0

?*

?* Product Name: 网站

?*

?* Author: ? ? ? kan.jiang

?*

?* History: ? ? ?2010-9-14 created by kan.jiang

?*/

package com.sinitek.web.taglib.common;

?

import java.io.*;

import java.sql.*;

import javax.servlet.jsp.*;

import javax.servlet.jsp.tagext.*;

/**

?* 处理clob大对象类型

?* @author kan.jiang

?* @version 1.0

?* @date 2010-9-14 9:55:33

?*/

public class ClobToString extends SimpleTagSupport

{

?

?? ?private Object clob;

?

?? ?private int n;

?? ?private String addContent;

?

?? ?public String getAddContent()

?? ?{

?? ? ? ?return addContent;

?? ?}

?

?

?? ?public void setAddContent( String addContent )

?? ?{

?? ? ? ?this.addContent = addContent;

?? ?}

?

?

?? ?public int getN()

?? ?{

?? ? ? ?return n;

?? ?}

?

?

?? ?public void setN( int n )

?? ?{

?? ? ? ?this.n = n;

?? ?}

?

?

?? ?public Object getClob()

?? ?{

?? ? ? ?return clob;

?? ?}

?

?

?? ?public void setClob( Object clob )

?? ?{

?? ? ? ?this.clob = clob;

?? ?}

?

?

?? ?@Override

?? ?public void doTag() throws JspException, IOException

?? ?{

?? ? ? ?JspContext jc = super.getJspContext();

?? ? ? ?JspWriter out = jc.getOut();

?? ? ? ?if ( clob == null )

?? ? ? ?{

?? ? ? ? ? ?out.print( "" );

?? ? ? ?}

?? ? ? ?StringBuffer clobString = new StringBuffer();

?? ? ? ?if ( clob instanceof Clob )

?? ? ? ?{

?? ? ? ? ? ?int y;

?? ? ? ? ? ?char ac[] = new char[4096];

?? ? ? ? ? ?Reader reader;

?? ? ? ? ? ?try

?? ? ? ? ? ?{

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

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

?? ? ? ? ? ? ? ?{

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

?? ? ? ? ? ? ? ?}

?? ? ? ? ? ?}

?? ? ? ? ? ?catch ( SQLException e )

?? ? ? ? ? ?{

?? ? ? ? ? ? ? ?e.printStackTrace();

?? ? ? ? ? ?}

?

?? ? ? ?}

?? ? ? ?else

?? ? ? ?{

?? ? ? ? ? ?clobString.append( clob.toString() );

?? ? ? ?}

?? ? ? ?if ( clobString.toString().length() > n && n > 0 )

?? ? ? ?{

?? ? ? ? ? ?out.print( clobString.toString().substring( 0, n ) + addContent );

?? ? ? ?}

?? ? ? ?else

?? ? ? ?{

?? ? ? ? ? ?out.print( clobString.toString() );

?? ? ? ?}

?? ?}

}


***********************************ClobTag.tld**********************************
<?xml version="1.0" encoding="UTF-8" ?>

<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
?? ? ? ?xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
?? ? ? ?xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
?? ? ? ?version="2.0">

?? ?<description>自定义标签</description>
?? ?<display-name>mytag</display-name>
?? ?<tlib-version>1.0</tlib-version>
?? ?<short-name>tag</short-name>
?? ?<uri>http://myDefineTags.com/mytags</uri>
?? ?<tag>
?? ? ? ?<description>输出Colb对象</description>
?? ? ? ?<name>colb</name>
?? ? ? ?<tag-class>com.sinitek.web.taglib.common.ClobToString</tag-class>
?? ? ? ?<body-content>empty</body-content>

?? ? ? ?<attribute>
?? ? ? ? ? ?<description>需要输出的Colb对象</description>
?? ? ? ? ? ?<name>clob</name>
?? ? ? ? ? ?<required>true</required>
?? ? ? ? ? ?<!-- 必须出现 -->
?? ? ? ? ? ?<rtexprvalue>true</rtexprvalue>
?? ? ? ?</attribute>
?? ? ? ?<attribute>
?? ? ? ? ? ?<description>字符串超过n的时候截取</description>
?? ? ? ? ? ?<name>n</name>
?? ? ? ? ? ?<required>true</required>
?? ? ? ? ? ?<!-- 必须出现 -->
?? ? ? ? ? ?<rtexprvalue>true</rtexprvalue>
?? ? ? ?</attribute>
?? ? ? ?<attribute>
?? ? ? ? ? ?<description>追加内容</description>
?? ? ? ? ? ?<name>addContent</name>
?? ? ? ? ? ?<required>true</required>
?? ? ? ? ? ?<!-- 必须出现 -->
?? ? ? ? ? ?<rtexprvalue>true</rtexprvalue>
?? ? ? ?</attribute>
?? ?</tag>

</taglib>

**************************jsp中使用******************
<p:colb clob="${clobName}" n="45" addContent="..."/>