
本文的基础建立在你已经知道如何对Matlab库函数或者是手动编写的函数打jar包,并在一般java应用程序中调用。本文将主要讲解如何部署包含有定制Matlab图形的网站,所采用的基本工具是Matlab
R2010b(注意,更低版本的Matlab可能不具备打jar包的功能),Tomcat6,其他工具有MyEclipse。本文将尽量以最浅显易懂的方式介绍在网页中加入Matlab图形的方法。
使用java在网页中加入Matlab图形有三种方式:
1、使用servlet返回的HTML字符串将Matlab图形嵌入网页;
2、直接使用JSP中的WebFigure标签;
3、使用中间件将整个Matlab图形嵌入网页,包括其功能和 *** 作。
本文将只介绍第二种方法。
1 Matlab函数编写
首先确定返回WebFigure的Matlab函数的基本形式如下:
function [result1 result2] = getfigure(parameter1, parameter2) f = figure('Visible','off')%建立一个Figure. 生成函数图形的代码,插入到f中去result1 = webfigure(f)%将Figure转换为WebFigure并返回 close(f)%将原始Figure f关闭end
使用Matlab编译器将上述函数打成jar包,在编译之前最好在Matlab窗口中测试一下这个函数,以保证其可以返回期望的结果,为了看到图形可以将close(f)语句暂时注释掉。
2 Web工程的配置
2.1 工程结构
基本结构如下:
Webroot
--WEB-INF
web.xml
webfigures.tld
--classes
yourservlet.class
--lib
javabuilder.jar
yourmatlabclass.jar
yourindex.jsp
yourindex.html
对于tomcat来说,直接将此目录copy到其webapps目录下就可以完成部署,但作者还是建议在MyEclipse中将此工程目录打成war包后,在tomcat的manage窗口中完成部署。
Tomcat只有一个部署文件web.xml,其中需要做一些修改,之后介绍。
Webfigures.tld是显示matlab图形必须的文件,建议在matlab安装文件夹中自己查找,加入到网站目录树中。
Classes文件夹中放置的是一些编译好的文件,如servlet类。这些servlet需要事先编译,编写servlet在web application的src文件夹下,注意在工程中包含javabuilder.jar等必须的jar包,打war包时,MyEclipse会自动将编译好的class文件从src文件夹copy到classes文件夹。
Lib文件夹可以不用考虑,打war包时,MyEclipse会自动将用户添加的jar包添加到这个文件夹下。 Web根目录下放置jsp文件和html文件,注意包含必要的jar包,否则会报错,但不会影响打war包。
这次使用java搭建网站有一些强烈的感觉,其实用J2EE搭建网站还是非常容易的,只要你遵循J2EE的基本规范就可以了,具体的来说就是遵循上述文件设置规范,以及相应的文件编写规范。另外,对于相对规模较小的应用,JSP+Servlet是非常快捷且方便的,像JSP,可以直接在tomcat的webapp部署文件夹下,使用文本编辑的方式直接修改,再使用浏览器直接进行调试,非常方便且直接。似乎听有人说现在开发都不再使用Bean了,不知道是不是真的。
2.2 修改部署文件
使用MyEclipse建立一个Web Application工程,修改Webroot目录下WEB-INF目录下的web.xml部署文件,在web-app标签中加入如下代码:
<servlet><servlet-name>WebFigures</servlet-name><servlet-class>com.mathworks.toolbox.javabuilder.webfigures.WebFiguresServlet </servlet-class></servlet><servlet-mapping><servlet-name>WebFigures</servlet-name><url-pattern>/WebFigures/*</url-pattern></servlet-mapping>如果你生成了自己的servlet的话,还需要添加相应的代码。
3 生成jsp文件
Jsp头部需要添加的东西:
<%@ taglib prefix="wf" uri="/WEB-INF/webfigures.tld" %>
引用webfigures.tld文件,定义标签项。 <%@ page import="com.mathworks.toolbox.javabuilder.webfigures.WebFigure" %>
引用WebFigure库,以及你自己编写的Matlab类库,另外引用com.mathworks.toolbox.javabuilder.*也是必须的,因为其中包含一些Error定义以及必要的类和接口的定义。
在body体中加入如下类似的代码: <% YourComponentClassmyDeployedComponent = nulltry { myDeployedComponent = new YourComponentClass()try
{ WebFigurewebFigure =
(WebFigure) (MWJavaObjectRef)myDeployedComponent.getfigure(1)[0]).get()//matlab类的使用就不再说明了,此处调用与在普通java程序中调用matlab类是相同
的 request.getSession().setAttribute("YourFigure",
webFigure)} catch(ClassCastException e) { throw new
Exception ("Issue casting deployed components outputs to WebFigure", e)} } catch (Exception e) { e.printStackTrace()} finally { myDeployedComponent.dispose()}%><wf:web-figure name="YourFigure" scope="session"/>
打war包,将上述网站工程部署,恭喜你已经可以看到自己定制的包含Matlab图形的网页了。
最后,再谈一谈我这段时间使用Matlab的感受吧,最直观的感受就是简单易用而且强大,看Matlab的帮助文件感觉条理和结构非常清晰,措辞明确且浅显易懂,非常符合科研人员的一贯作风。
就以webfigure的使用这篇帮助文献来说吧,声明了开发一个matlab网站需要哪些人员,每个人员的技能准备要求,别被其中Expert要求所吓倒,其实matlab并不要求Expert有非常深入的技能,局部基本功就足够了。文章清晰得列出了开发过程中所可能遇到的方方面面的问题,并分门别类,还给出了具体的例子,
matlab的帮助文件从不故弄玄虚,每一句话都直指核心问题,且浅显易懂,通俗的说,看过帮助文件的每一句话,你都能具备举一反三的能力。
matlab在安装时,注芦禅判册了环境变量,所以,相应目录下的可执行程式多可以直接用DOS调用,譬如:你在"运行"里输入Matlab就可以运行matlab一样.只是我不明白就是怎么用网页执行MATLAB.你有服务器上陪改所有权限,你当然可以运行了.
服务器上MATLAB,用客户端执行语袭丛句,这样的有专门的程式.一般有个工作站就可以了.相关内容只言片语说不清楚.建议到matlab官网认真学习.再找相关资料.
搜索燃胡关键字: octave-online。虽然matlab和octave不是同一款软洞纯件,纳段咐不过一般matlab的程序不加修改就可以直接在octave环境下运行。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)