具体操作步骤如下:
一、利用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,出现结果。
参考博客和文章: