Java Web调用Matlab实现在线绘图

具体操作步骤如下:

一、利用Matlab编译jar包

(一)软件准备:

1、本机安装Matlab2014b win64

2、JDK1.7。据网上文章说,1.8还没有被Matlab2014b支持,但是没有试过。

(二)步骤:

1、编写matlab绘图函数

比如

function [result,out] = drawplotNew( n, m)

x=zeros(100,100);

x(1:50,1:50)=1;

x(51:100,51:100)=1;

out = x;

f = figure('Visible','off');

imshow(x);

result = webfigure(f); %将Figure转换为WebFigure并返回

end

形成drawplotNew.m文件。代码中需要注意的:一是结果一定要调用webfigure将图形返回;二是生成的figure最好隐藏,不然服务器端会出现一个Matlab的绘图窗口。

2、利用Matlab的deploytool中的Library Compiler工具将m文件打包为jar包

在matlab的命令行输入:

deploytool

弹出界面为:

选择Library Compiler,打开界面

然后等待打包完毕

完成

这个时候会生成以下的目录结构

箭头所指的文件夹中的jar包就是要用到的Matlab模块,比如drawplotNew.jar

二、部署

1、将上面生成的drawplotNew.jar拷贝到自己网站的WEB-INF\lib目录下和tomcat的lib目录下

2、将javabuilder.jar(位置在matlab安装目录的下的toolbox\javabuilder中,如F:\Program Files\MATLAB\R2014b\toolbox\javabuilder\jar\javabuilder.jar)拷贝到自己网站的WEB-INF\lib目录下和tomcat的lib目录下

3、拷贝webfigures.tld文件(位置在matlab安装目录的下的toolbox\javabuilder\webfitures中,如F:\Program Files\MATLAB\R2014b\toolbox\javabuilder\webfigures\webfigures.tld),拷贝到自己网站的WEB-INF目录下,与web.xml一起

三、代码修改与测试

1、修改要显示绘图的JSP文件

<!-->
<%@ page language="java" import="java.util.*" contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

<%@ taglib

prefix="wf"

uri="/WEB-INF/webfigures.tld"

%>


<!-- 这一段是导入的自定义标签和类的申明 -->
<%@ page import="com.mathworks.toolbox.javabuilder.webfigures.WebFigure"%>

<%@ page import="com.mathworks.toolbox.javabuilder.*"%>

<%@ page import="com.mathworks.toolbox.javabuilder.internal.*"%>

<%@ page import="drawplot.Class1"%>
<!--                                -->

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Test</title>

</head>



<body>

<h1>Test</h1>
<!-- 调用代码生成图形,并将图形内容赋给自定义标签 -->

<%

Class1 plot = null;

plot = new Class1();

try{



Object[] result = plot.drawplot(1, 0.0f, 0.01f, 10*Math.PI);

WebFigure wf = (WebFigure)MWJavaObjectRef.unwrapJavaObjectRefs(result[0]);

request.getSession().setAttribute("MyFigure",wf);

}

catch(ClassCastException e) {

throw new Exception ("Issue casting deployed components outputs to WebFigure", e);

}

catch (Exception e) {

e.printStackTrace();

}

finally {

plot.dispose();

}



%>
<!--                                -->
<!-- 自定义标签的HTML代码 -->
<wf:web-figure name="MyFigure" scope="session" />
<!--                                -->
</body>

</html>

具体流程就是,申明导入的java类,利用java类实现绘图,并将绘图结果输出到web-figure标签,用web-figure标签来控制图形在页面显示的位置。

2、测试

启动网站,访问对应的jsp,出现结果。

参考博客和文章:

https://blog.csdn.net/a519986543/article/details/53555996

https://max.book118.com/html/2015/0221/12612671.shtm

猜你喜欢

转载自blog.csdn.net/stonylhy2011/article/details/83215010
今日推荐