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="..."/>