1.数据库字段存储的CLOB类型字段
2.实体Bean中是Object类型对应数据库CLOB字段
3.控制层发送到JSP页面为对象
首先编写ClobToString.java类
/** * 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.saiyou.util; import java.io.*; import java.sql.*; import javax.servlet.jsp.*; import javax.servlet.jsp.tagext.*; /** * 处理clob大对象类型 * * @author DarrenMJ * @version 1.0 * @date 2017-4-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.saiyou.util.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>
需要注意的是,要对应的ClobToString.java文件所在路径(如图)
<tag-class>com.saiyou.util.ClobToString</tag-class> 然后到JSP页面<%@ page language="java" pageEncoding="UTF-8"%> <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <%@taglib prefix="p" uri="tld/ClobTag.tld"%>
。。。
<div><p:colb clob="${item.description}" n="45" addContent="..."/></div>
要注意的是<%@taglib prefix="p" uri="tld/ClobTag.tld"%> 写你tld所在位置 ,如果不确定对不对,按住CTRL键 鼠标左键点一下,看能不不能点进去(如图)