FusionChartsFree的JSP标签开发

FusionChartsFree的JSP标签开发写一个JSP标签,一个Java文件,一个标签定义,避免重复写好多嵌入FusionChartsFree的代码。第一步:定义标签属性等信息,编写TLD文件;第二步:编写标签处理的代码;第三步:测试标签;第四步:打包发布。关键:TLD文件:12345678910111213…

大家好,又见面了,我是你们的朋友全栈君。

  写一个JSP标签,一个Java文件,一个标签定义,避免重复写好多嵌入FusionChartsFree的代码。

 

  第一步:定义标签属性等信息,编写TLD文件;

  第二步:编写标签处理的代码;  

  第三步:测试标签;

  第四步:打包发布。

   关键:TLD文件

   

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
<?
xml 
version
=
"1.0" 
encoding
=
"UTF-8"
?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
                        
"http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
<
taglib
>
    
<
tlib-version
>1.0</
tlib-version
>
    
<
jsp-version
>1.2</
jsp-version
>
    
<
short-name
>jrtz</
short-name
>
    
<
uri
>http://www.sunrise.com/jrtz</
uri
>
    
<
tag
>
        
<
name
>fcf</
name
>
        
<
tag-class
>com.sunrise.broncho.tag.FusionChart</
tag-class
>
        
<
body-content
>JSP</
body-content
>
        
<
description
>
<![CDATA[FusionChartsFree 图表组件应用在JSP页面]]>
</
description
>
        
<
attribute
>
            
<
name
>chartSWF</
name
>
            
<
required
>true</
required
>
            
<
rtexprvalue
>true</
rtexprvalue
>
            
<
description
>
<![CDATA[FusionChart的模版图例文件名]]>
</
description
>
        
</
attribute
>
        
<
attribute
>
            
<
name
>divId</
name
>
            
<
required
>true</
required
>
            
<
rtexprvalue
>true</
rtexprvalue
>
            
<
description
>
<![CDATA[图表所显示在的Div的Id]]>
</
description
>
        
</
attribute
>
        
<
attribute
>
            
<
name
>chartId</
name
>
            
<
required
>true</
required
>
            
<
rtexprvalue
>true</
rtexprvalue
>
            
<
description
>
<![CDATA[图表的名称Id]]>
</
description
>
        
</
attribute
>
        
<
attribute
>
            
<
name
>dataXml</
name
>
            
<
required
>false</
required
>
            
<
rtexprvalue
>true</
rtexprvalue
>
            
<
description
>
<![CDATA[数据源信息,XML数据源.如果使用XML数据源时,URL和XML同时存在优先使用XML数据源]]>
</
description
>
        
</
attribute
>
        
<
attribute
>
            
<
name
>dataUrl</
name
>
            
<
required
>true</
required
>
            
<
rtexprvalue
>true</
rtexprvalue
>
            
<
description
>
<![CDATA[数据源信息,URL数据源.如果使用XML数据源时该参数设为:""即可]]>
</
description
>
        
</
attribute
>
        
<
attribute
>
            
<
name
>chartWidth</
name
>
            
<
required
>false</
required
>
            
<
rtexprvalue
>true</
rtexprvalue
>
            
<
description
>
<![CDATA[图标显示的宽,默认值为300]]>
</
description
>
        
</
attribute
>
        
<
attribute
>
            
<
name
>chartHeight</
name
>
            
<
required
>false</
required
>
            
<
rtexprvalue
>true</
rtexprvalue
>
            
<
description
>
<![CDATA[图标显示的高,默认值为180]]>
</
description
>
        
</
attribute
>
        
<
attribute
>
            
<
name
>deCode</
name
>
            
<
required
>false</
required
>
            
<
rtexprvalue
>true</
rtexprvalue
>
            
<
description
>
<![CDATA[注意:仅在使用URL数据源下使用,对URL进行编码或解码,ture为解码,false为编码,默认值为false]]>
</
description
>
        
</
attribute
>
        
<
attribute
>
            
<
name
>charName</
name
>
            
<
required
>false</
required
>
            
<
rtexprvalue
>true</
rtexprvalue
>
            
<
description
>
<![CDATA[注意:仅在使用URL数据源下使用,对URL进行编码解码的处理的字符名称,默认为:UTF-8]]>
</
description
>
        
</
attribute
>
    
</
tag
>
</
taglib
>

FusionChartsFree的相关:http://aiilive.blog.51cto.com/1925756/1267021

    关键:Java业务处理

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
import 
java.io.IOException;
import 
java.io.UnsupportedEncodingException;
import 
java.net.URLDecoder;
import 
java.net.URLEncoder;
import 
javax.servlet.jsp.JspException;
import 
javax.servlet.jsp.tagext.TagSupport;
/**
 
* 使用FusionChartsFree图标组件的标签支持类
 
*
 
* @author ZhangXiao
 
* @time 2013-8-12
 
*/
public 
class 
FusionChart 
extends 
TagSupport {
    
/**
     
*
     
*/
    
private 
static 
final 
long 
serialVersionUID = -455570295257618661L;
    
private 
String chartSWF = 
""
;
    
private 
String divId = 
""
;
    
private 
String dataUrl = 
null
;
    
private 
String dataXml = 
null
;
    
private 
String chartId = divId + 
"chart"
;
    
private 
int 
chartWidth = 
300
;
    
private 
int 
chartHeight = 
180
;
    
private 
boolean 
deCode = 
false
;
    
private 
String charName = 
"UTF-8"
;
    
@Override
    
public 
int 
doStartTag() 
throws 
JspException {
        
try 
{
            
byte
[] script = createScript().getBytes();
            
pageContext.getOut().write(
new 
String(script, 
"UTF-8"
));
        

catch 
(UnsupportedEncodingException e) {
            
e.printStackTrace();
        

catch 
(IOException e) {
            
e.printStackTrace();
        
}
        
return 
super
.doStartTag();
    
}
    
/**
     
* 通过标签参数创建JavaScript脚本信息
     
*
     
* @return 返回图表渲染脚本
     
*/
    
private 
String createScript() {
        
StringBuffer sb = 
new 
StringBuffer();
        
sb.append(
"<script type='text/javascript'>"
);
        
sb.append(
"var fcf=new FusionCharts("
);
        
sb.append(
"'"
);
        
sb.append(chartSWF);
        
sb.append(
"', "
);
        
sb.append(
"'"
);
        
sb.append(chartId);
        
sb.append(
"', "
);
        
sb.append(
"'"
);
        
sb.append(chartWidth);
        
sb.append(
"', "
);
        
sb.append(
"'"
);
        
sb.append(chartHeight);
        
sb.append(
"' ); "
);
        
if 
((
this
.dataUrl == 
null 
&& 
this
.dataXml == 
null
)
                
|| (
this
.dataUrl == 
"" 
&& 
this
.dataXml == 
""
)) {
            
sb = 
new 
StringBuffer();
            
sb.append(
"无有效数据支持!"
);
        

else 
{
            
// 数据源的选取,XML和URL都存在时:优先选择XML
            
if 
(
this
.dataXml != 
null
) {
                
sb.append(
"fcf.setDataXML(\""
);
                
sb.append(
this
.dataXml);
                
sb.append(
"\"); "
);
            

else 
{
                
sb.append(
"fcf.setDataURL('"
);
                
if 
(!
this
.deCode) {
                    
sb.append(
this
.encode(
this
.dataUrl));
                

else 
{
                    
sb.append(
this
.decode(
this
.dataUrl));
                
}
                
sb.append(
"'); "
);
            
}
            
sb.append(
"fcf.render('"
);
            
sb.append(
this
.divId);
            
sb.append(
"'); "
);
            
sb.append(
"</script>"
);
        
}
        
return 
sb.toString();
    
}
    
/**
     
* 对URL进行解码
     
*
     
* @param url
     
* @return 返回解码字符串
     
*/
    
private 
String decode(String url) {
        
try 
{
            
return 
URLDecoder.decode(url, 
this
.charName);
        

catch 
(UnsupportedEncodingException e) {
            
e.printStackTrace();
        
}
        
return 
url;
    
}
    
/**
     
* 对URL进行编码
     
*
     
* @param url
     
* @return 返回编码字符串
     
*/
    
private 
String encode(String url) {
        
try 
{
            
return 
URLEncoder.encode(url, 
this
.charName);
        

catch 
(UnsupportedEncodingException e) {
            
e.printStackTrace();
        
}
        
return 
url;
    
}
}

 

 关于测试参见附件例子FusionChartsFree JSP Tag web工程,例子文件要去掉.txt后缀。

本文转自 secondriver 51CTO博客,原文链接:http://blog.51cto.com/aiilive/1285886,如需转载请自行联系原作者

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/159274.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • pycharm2021.10激活码教程【最新永久激活】[通俗易懂]

    (pycharm2021.10激活码教程)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.cn/100143.html0UY7RF7AC5-eyJsaWNlbnNlSW…

  • linux系统抓包工具_kali 抓包

    linux系统抓包工具_kali 抓包在使用ECS服务器时,发现网络流量异常,或者发现服务器有异常向外发包行为,可使用抓包工具抓取网络流量包,分析流量包的特征,看看这些流量包来自哪里,或者发向哪里了。根据这些信息,可进一步诊断异常。本文介绍Linux系统,使用tcpdump工具分析流量的方法。TcpDump可将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、not、or等逻…

  • Hello,C++(4)继承

    Hello,C++(4)继承

  • 华为太极magisk安装教程_教程:如何升级太极内部的应用

    华为太极magisk安装教程_教程:如何升级太极内部的应用使用过太极的小伙伴都知道,要把应用添加到太极(magisk版除外)中是个麻烦事儿:首先得花费大量的时间来创建应用,然后还必须卸载原来的应用,安装完毕之后又要花很长的时间来优化。如果待创建的应用安装包比较大并且你手机的CPU不在工作状态,那这个流程就不是一般的长了。这时候就有童鞋会问了,如果我在太极里面创建的应用要升级了怎么办?是不是每次升级都需要卸载原应用?实际上,在太极内部升级应用…

  • OleDbCommand 的特点

    OleDbCommand 的特点OleDbCommand的特点在于以下对数据源执行命令的方法:ExecuteReader 执行返回行的命令。如果用ExecuteReader执行如SQLSET语句等命令,则可能达不到预期的效果。ExecuteNonQuery 执行SQLINSERT、DELELE、UPDATE和SET语句等命令。ExecuteScalar 从数据库中检索单个值(例如一个聚合值)。您

  • 2019 最新 JAVA eclipse 中文汉化包 安装教程&Eclipse 汉化教程完美版

    2019 最新 JAVA eclipse 中文汉化包 安装教程&Eclipse 汉化教程完美版2019最新JAVAeclipse中文汉化包安装教程https://blog.csdn.net/qq_40763929/article/details/83067921Eclipse汉化教程完美版https://blog.csdn.net/weixin_39626452/article/details/80631849…

发表回复

您的电子邮箱地址不会被公开。

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