GVKun编程网logo

如何在服务器端Java中使用JavaScript图表库(如D3.js或Raphaël)

10

如果您对如何在服务器端Java中使用JavaScript图表库和如D3.js或Raphaël感兴趣,那么这篇文章一定是您不可错过的。我们将详细讲解如何在服务器端Java中使用JavaScript图表库

如果您对如何在服务器端Java中使用JavaScript图表库如D3.js或Raphaël感兴趣,那么这篇文章一定是您不可错过的。我们将详细讲解如何在服务器端Java中使用JavaScript图表库的各种细节,并对如D3.js或Raphaël进行深入的分析,此外还有关于4个顶级开源JavaScript图表库、C3.js —— 基于 D3 的可重用 JavaScript 图表库、cookie在javascript中的使用技巧以及隐私在服务器端的设置_javascript技巧、Ejscript 1.0.0发布,服务器端JavaScript框架的实用技巧。

本文目录一览:

如何在服务器端Java中使用JavaScript图表库(如D3.js或Raphaël)

如何在服务器端Java中使用JavaScript图表库(如D3.js或Raphaël)

我想将D3.js(或者也许是Raphaël)用于XSL-
FO和Java生成的后端报告。使用这些JavaScript库的原因有几个:

  1. 它们呈现的图表比我从Java库(IMO)中看到的图表还要漂亮
  2. 它们支持SVG和PNG(据我所知),这在XSL-FO中是必需的
  3. 它们还将在应用程序的前端部分使用。在Java后端也重用它们可以减少开发人员的学习曲线和代码库占用空间。

因此,使用任何类似的Java库都是不太理想的选择。

现在,将D3.js与Java结合使用的最直接的方法是使用诸如selenium之类的笨重的工具来渲染虚拟HTML页面并在其中执行JavaScript。但这对我来说似乎太过分了。

有没有更简单的方法可以在同一Java进程中直接执行这种JavaScript?我问是因为D3.js旨在在HTML文档的上下文中工作。我不确定Rhino或其他Java脚本实现是否可以做到这一点

答案1

小编典典

您可以使用phantom.js。这是一个基于webkit的无头浏览器,可让您无需浏览器即可运行JavaScript。

使用此方法,您只需执行一个系统调用即可运行phantom.js,并为其添加JavaScript代码和输入。然后它将相应地创建您的输出。请参阅此示例。

4个顶级开源JavaScript图表库

4个顶级开源JavaScript图表库

图表对于可视化数据和使网站具有吸引力非常重要。可视化演示使分析大块数据和传达信息变得更加容易。JavaScript图表库使你能够以易于理解和交互的方式可视化数据,并改善网站的设计。有四个顶级开源JavaScript图表库,你一定要Get!

1.Chart.js

Chart.js是一个开源JavaScript库,允许你在应用程序上创建动画,美观和交互式图表。它可以在MIT许可下获得。

使用Chart.js,你可以创建各种令人印象深刻的图表和图形,包括条形图,折线图,面积图,线性比例和散点图。它完全响应各种设备,并利用HTML5 Canvas元素进行渲染。

以下是使用库绘制条形图的示例代码。我们将使用Chart.js内容交付网络(CDN)将其包含在此示例中。请注意,使用的数据仅用于说明目的。

<!DOCTYPE html>
<html>
<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.5.0/Chart.min.js"></script>
</head>
<body>
<canvas id="bar-chart" width=300" height="150"></canvas>
<script>
new Chart(document.getElementById("bar-chart"), {
type: ''bar'',
data: {
labels: ["North America", "Latin America", "Europe", "Asia", "Africa"],
datasets: [
{
label: "Number of developers (millions)",
backgroundColor: ["red", "blue","yellow","green","pink"],
data: [7,4,6,9,3]
}
]
},
options: {
legend: { display: false },
title: {
display: true,
text: ''Number of Developers in Every Continent''
},
scales: {
yAxes: [{
ticks: {
beginAtZero:true
}
}]
}
}
});
</script>
</body>
</html>

前端全栈学习交流圈:866109386,面向1-3经验年前端开发人员,帮助突破技术瓶颈,提升思维能力

从这段代码中可以看出,通过将类型设置为bar来构造条形图。你可以将条形的方向更改为其他类型,例如将type设置为horizontalBar。

通过在backgroundColor数组参数中提供颜色类型来设置条形图的颜色。

颜色分配给在相应数组中共享相同索引的标签和数据。例如,第二个标签“拉丁美洲”将设置为“蓝色”(第二种颜色)和4(数据中的第二个数字)。

这是此代码的输出

2.Chartist.js

Chartist.js是一个简单的JavaScript动画库,允许你创建可自定义和美观的响应图表和其他设计。开源库可在WTFPL或MIT许可下获得。

该库是由一群对现有图表工具不满意的开发人员开发的,因此它为设计人员和开发人员提供了出色的功能。

在项目中包含Chartist.js库及其CSS文件后,你可以使用它们创建各种类型的图表,包括动画,条形图和折线图。它利用SVG动态渲染图表。

以下是使用库绘制饼图的代码示例

<link href="https//cdn.jsdelivr.net/chartist.js/latest/chartist.min.css" rel="external nofollow" rel="stylesheet" type="text/css" />
<style>
.ct-series-a .ct-slice-pie {
fill: hsl(100, 20%, 50%); /* filling pie slices */
stroke: white; /*giving pie slices outline */
stroke-width: 5px; /* outline width */
}
.ct-series-b .ct-slice-pie {
fill: hsl(10, 40%, 60%);
stroke: white;
stroke-width: 5px;
}
.ct-series-c .ct-slice-pie {
fill: hsl(120, 30%, 80%);
}
.ct-series-d .ct-slice-pie {
fill: hsl(90, 70%, 30%);
}
.ct-series-e .ct-slice-pie {
fill: hsl(60, 140%, 20%);
}
</style>
<div ct-golden-section"></div>
<script src="https://cdn.jsdelivr.net/chartist.js/latest/chartist.min.js"></script>
var data = {
series: [45, 35, 20]
};
var sum = function(a, b) { return a + b };
new Chartist.Pie(''.ct-chart'', data, {
labelInterpolationFnc: function(value) {
return Math.round(value / data.series.reduce(sum) * 100) + ''%'';
}
});
</script>

Chartist JavaScript库允许你使用各种预构建的CSS样式,而不是指定项目的各种与样式相关的组件。你可以使用它们来控制创建的图表的外观。

例如,预先创建的CSS类.ct-chart用于构建饼图的容器。而且,.ct-golden-section类用于获取宽高比,可以使用响应式设计进行缩放,并为你节省计算固定尺寸的麻烦。Chartist还提供了你可以在项目中使用的其他类别的容器比率。

要设置各种饼图样式,可以使用默认的.ct-series-a类。字母a与每个系列计数(a,b,c等)一起迭代,使得它与要设置样式的切片相对应。

Chartist.Pie方法用于创建饼图。要创建另一种类型的图表,例如折线图,请使用Chartist.Line。

这是代码的输出

3.D3.js

D3.js是另一个很棒的开源JavaScript图表库。它可以在BSD许可下使用。D3主要用于根据提供的数据操纵和添加文档的交互性。

你可以使用这个神奇的3D动画库,使用HTML5,SVG和CSS可视化你的数据,让网站更具吸引力。从本质上讲,D3使你能够将数据绑定到文档对象模型(DOM),然后使用基于数据的函数来更改文档。

以下是使用库绘制简单条形图的示例代码

.chart div {
font: 15px sans-serif;
background-color: lightblue;
text-align: right;
padding:5px;
margin:5px;
color: white;
font-weight: bold;
}
<div
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/5.5.0/d3.min.js">
var data = [342,222,169,259,173];
d3.select(".chart")
.selectAll("div")
.data(data)
.enter()
.append("div")
.style("width", function(d){ return d + "px"; })
.text(function(d) { return d; });

使用D3库的主要概念是首先应用CSS样式选择指向DOM节点,然后应用运算符来操作它们,就像在其他DOM框架(如jQuery)中一样。

将数据绑定到文档后,将调用.enter()函数来为传入数据构建新节点。在.enter()函数之后调用的所有方法都将为数据中的每个项调用。

这是代码的输出

4.ECharts

ECharts 由百度前端技术部开发的,是一个纯 Javascript 的图表库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(IE8/9/10/11、Chrome、Firefox、Safari等),底层依赖轻量级的 Canvas 类库 ZRender,提供直观,生动,可交互,可高度个性化定制的数据可视化图表。

ECharts 有良好的自适应效果,ECharts 3 中更是加入了更多丰富的交互功能以及更多的可视化效果,并且对

C3.js —— 基于 D3 的可重用 JavaScript 图表库

C3.js —— 基于 D3 的可重用 JavaScript 图表库

C3.js 是一个基于 D3.js 的可重用的开源图表库。使用非常舒服、充分可定制性和控制性。支持多种图表类型。

cookie在javascript中的使用技巧以及隐私在服务器端的设置_javascript技巧

cookie在javascript中的使用技巧以及隐私在服务器端的设置_javascript技巧

读取cookie字符串方法:

复制代码 代码如下:
alert(document.cookie); 
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制

一个网站的cookie字符串包含了该站点域名下的所有cookie(javascript 可访问的,不包括 httponly 的cookie ),多个cookie之间用分号和一个空格隔开,最多一般是 20个或50个,例如,包含2个cookie的字符串格式为

复制代码 代码如下:
document.cookie = "key1=value1; key2=value2"
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制

一个cookie字符串最长为4k,超出个数限制或长度限制时将返回空值, cookie 个数超出限制时,会造成另外一些 cookie 丢失,按规范,丢失的应该是 最近、最少使用的,但是浏览器的实现并不完全遵循这个规范。

设置一个cookie的方法:

复制代码 代码如下:
document.cookie="key=value;expires=date;path=/;domain=xxx.com;secure";
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制

要设置多个cookie 只要反复使用 document.cookie = XXX 即可,会自动和其他cookie拼接成一个cookie字符串。

如果要读取某个cookie的值,只能通过解析cookie字符串来得到。

下面是设置cookie时的几个参数

1、名和值:key 为 cookie名称,value为cookie值

2、过期时间:expires用于设置过期时间,为格林威治字符串格式,如 

复制代码 代码如下:
expires = <span>new</span> Date(''2011-12-30'').toUTCString(); <span>//</span><span>"Fri, 30 Dec 2011 00:00:00 GMT"</span>
登录后复制
<span></span>
登录后复制

如果没有设置过期时间,cookie将在浏览器关闭时失效。

 

3、所属路劲:网站某张网页中的脚本所设置的cookie默认情况下只能供该网页所在文件夹及其子文件夹中的网页访问,如 http://www.jb51.net/aa/1.html 所设置的cookie 不能被 http://www.jb51.net/bb/2.html 访问,更多的时候都希望一个cookie能被本站所有网页访问,这就需要设置path属性, path=/ 表示该cookie的所属路劲是网站根目录,这样本站所有网页都能访问。

4、所属域名:cookie无法跨域访问,一般情况下,cookie仅供本站使用,如果想在多个网站下共享,那么共享cookie的网站必须拥有同一个主域名,通过设置 domain属性来实现。比如,如果想让 www.jb51.net 和 bbs.jb51.net这两个二级域名下的网站共享cookie,在设置cookie时需要设置domain=jb51.net

5、加密传输:如果一个cookie带有secure属性,那么cookie在传输到服务器的过程中将使用加密数据的方式传输。

 

 

cookie字符串编码:

cookie字符串中不能包含空格,分号,逗号等特殊符号,如果可能包含这些符号,可以使用encodeURIComponent()函数将 cookie 的值进行编码,读取 cookie 的值时再使用decodeURIComponent()函数把值进行转换回来,如 document.cookie="key="+encodeURIComponent(value);

  

在服务器设置 cookie 并声明其私密性(secure 及 httponly):

有时候为安全,你可能需要限制一些 cookie 的访问

secure : 该 cookie 仅供 https 安全连接使用

httponly : cookie 仅供 http 传输过程中使用,javascript 不能访问该 cookie

例如,在PHP 中使用内置函数setcookie() 设置一个具有私密性限制的 cookie

setcookie("UserIDCookie","123456",time()+60*30,''/'',''mytest.com'',false,true);

其中第六个参数 表示是否仅供 https 连接使用,第 七个参数 true 表示是否为 httponly

 

跨域请求及第三方 cookie ,以及 P3P(个人隐私保护策略):

浏览器的隐私设置(或者内容设置,chrome 在高级设置--内容设置 选项)中,设置禁止使用第三方 cookie 时,跨域请求(包括 iframe ,img ,javascript 文件等请求)无法发送属于该域的 cookie .

例如, 通过 iframe 引用一个跨域的 页面 http://www.jb51.net/index.html ,即使浏览器中保存了属于 other.com 域名下的某个名为 otherLoginFrag 的cookie  ,在 iframe 中请求 该页面时, otherLoginFrag 并不会随请求一起发往 www.other.com 的服务器。

第三方 cookie 限制在不同的浏览器中可能略有不同,比如, safari 在禁用 第三方 cookie 时,from 表单的提交也只有 post 方式才能提交 cookie .

如果在希望在浏览器禁用 第三方cookie 时仍能发送跨域请求的 cookie ,就需要在跨域的服务器中使用 P3P 响应头预先声明允许发送的 cookie.

复制代码 代码如下:
 <span>//</span><span>php</span>
<span>header</span>(''P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"''<span>);
</span><span>setcookie</span>("UserIDCookie","123456");
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制

Ejscript 1.0.0发布,服务器端JavaScript框架

Ejscript 1.0.0发布,服务器端JavaScript框架

Ejscript 是一个服务端的 JavaScript 语言实现和Web框架,基于 ECMAScript 3.X 版本。Ejscript 是一个 MVC 的框架,还支持SQL数据库的ORM框架,基于 Ajax 的视图控制、自动数据验证了集成 jQuery 支持。是一个快速开发基于服务器端 JavaScript应用的框架。

1.0.0版本包括一个完整的JavaScript语言,虚拟机,可选独立编译,反汇编器,文件生成器和嵌入式Web服务器。

下载 Ejscript 1.0.0

关于如何在服务器端Java中使用JavaScript图表库如D3.js或Raphaël的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于4个顶级开源JavaScript图表库、C3.js —— 基于 D3 的可重用 JavaScript 图表库、cookie在javascript中的使用技巧以及隐私在服务器端的设置_javascript技巧、Ejscript 1.0.0发布,服务器端JavaScript框架等相关内容,可以在本站寻找。

本文标签:

上一篇Spring Security中的@Order(SecurityProperties.ACCESS_OVERRIDE_ORDER)与ManagementServerProperties.ACCESS_OVERRIDE_ORDER

下一篇AspectJ + Gradle配置(gradle classpath配置)