86.如何将数据库中的CLOB格式输出到JSP页面

    xiaoxiao2021-04-18  61

    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键 鼠标左键点一下,看能不不能点进去(如图)

    转载请注明原文地址: https://ju.6miu.com/read-675427.html

    最新回复(0)