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,如需转载请自行联系原作者

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 微信小程序,循环下拉列表,点击时只展开其中一个「建议收藏」

    微信小程序,循环下拉列表,点击时只展开其中一个这是效果1.wxml<!–bigwarp–><viewclass=”dewarp”><viewclass=’com-selectBox’wx:for=”{{detil}}”wx:for-item=”item”wx:key=””><viewclass=’co…

    2022年4月10日
    302
  • pycharm激活码2021【永久激活】

    (pycharm激活码2021)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

    2022年3月22日
    156
  • 机器学习框架对比

    机器学习框架对比2.1主流深度学习框架对比各个开源框架在Github上的数据统计数据统计截止于2017.07.15可以看到各大主流框架基本都支持Python,目前Python在科学计算和数据挖掘领域可以说是独领风骚。虽然有来自R、Julia等语言的竞争压力,但是Python的各种库实在是太完善了,Web开发、数据可视化、数据预处理、数据库连接,爬虫等无所不能,有一个完美的生态环境。仅

    2022年6月16日
    31
  • 关于pfx证书和cer证书

    关于pfx证书和cer证书Pfx证书,同时包含了公钥信息和私钥信息Cer证书只包含公钥信息如果客户端与网站通信时需要用到私钥(基本所有需要数字证书的网站都会用到私钥),则cer证书是无法正常访问网站的,网站会提示“该页要求客户证书”由于cer证书只包含公钥信息,一般只能用于解密使用(解密该公钥对应的私钥加密的数据)。Pfx证书既可以导出为pfx证书,也可以导出为cer证书。Pfx证书导出时,会提示是…

    2022年5月2日
    64
  • CountDownLatch踩过的坑[通俗易懂]

    CountDownLatch踩过的坑[通俗易懂]线上生产环境dubbo报线程池满了,经过一天排查锁定在开三个线程计算最后合并数据的步骤中。简单描述下该步骤线程开三个调用三个不同的方法使用countdownlatch计数器等待三个方法全部执行完成合并数据。但是由于其中一个方法调用第三方接口,接口返回异常导致转换数据报错。导致其中一个方法未正常完成。举例demo:publicstaticvoidmain(String[]a…

    2022年7月13日
    40
  • linux设置定时关机命令,linux定时关机命令是什么?

    linux设置定时关机命令,linux定时关机命令是什么?linux定时关机命令是什么?在之前的教程中,我们分享了win7系统定时关机命令的使用方法,给网友们带来了不少的便利。也有网友使用的是Linux系统,因此,他们好奇:Linux系统的定时关机命令跟win7系统的一样吗?Linux系统定时关机的命令是什么?在今天的教程中,我们就简单了解一下同样的功能在linux下使用shutdown命令和在Windows下使用shutdown命令的不同。系统关机1….

    2022年5月14日
    51

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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