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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 低功耗蓝牙信标已成为室内定位御用信标–室内定位信标–新导智能

    低功耗蓝牙信标已成为室内定位御用信标–室内定位信标–新导智能低功耗蓝牙(BluetoothLE)信标已经在市场上部署了几年,而且已成为挨近感知运用的抢先技能挑选。BluetoothLE的低功耗和简略性,再加上其在智能手机中的普遍运用,可完成低成本、电池供电的信标,并使信标能广泛运用于室内定位信标智能手机运用程序中依据方位的服务。蓝牙室内定位信标:一般而言,信标是一种小型、廉价的无线设备,一般由电池供电,运用低功耗蓝牙技能来播送其存在。信标一般被描述为灯塔的射频版别,反复播送其规模内其他设备可以辨认的标识符。智能手机或平板电脑可以运…

    2022年5月29日
    27
  • PyCharm与Python的安装教程2021.11

    PyCharm与Python的安装教程2021.11文章预览:一、进入官网下载PyCharm安装包二、等待下载完成后点击进行安装三、Python安装(只介绍最新版本)四、第一个PyCharm程序五、PyCharm安装第三方库方法一、进入官网下载PyCharm安装包自行进入PyCharm官网或点击https://www.jetbrains.com/pycharm/download/#section=windows下载的是社区版,免费并且足够使用。二、等待下载完成后点击进行安装1.点击next2.选择自己要安装的目录3.勾选一些设定(1

    2022年8月28日
    6
  • pycharm配置python环境_pycharm环境配置教程

    pycharm配置python环境_pycharm环境配置教程以Windows版演示操作:一、首先安装pycharm1、首先从网站下载pycharm:点击打开链接(链接为:http://www.jetbrains.com/pycharm/download/#section=windows),进入后如下图,根据自己电脑的操作系统进行选择,对于windows系统选择图中红色圈中的区域。选择社区版(免费试用),专业版需要收费。2、下载完成之后如下图:3、直接双击下载好的exe文件进行安装,安装截图如下:4、记得修改安装路径,我..

    2022年8月29日
    3
  • spring IOC 概念理解

    spring IOC 概念理解

    2021年5月10日
    93
  • 信息收集8——masscan,nbtscan「建议收藏」

    信息收集8——masscan,nbtscan「建议收藏」目录masscannbtscanmasscan大规模地址范围扫描器默认每秒100包,可提升至约25,000,000包每秒 理论_上全球地址范围指定一个端口的打描可在3分钟完成命令格式masscan<ipaddresses/ranges>-pportsoptions地址范围1.1.1.1-1.1.1.10、1.0.0.0/8–exclude排除IP地址段–excludefile排除文件中IP地址端口-p80,20-25 -pU:1

    2022年9月13日
    2
  • 第三单元分支结构

    第三单元分支结构

    2021年9月28日
    54

发表回复

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

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