webfigure显示到网页上所踩过的坑--自写servlet

1.显示的步骤

前提是你已经能调用其中的jar包,并且图像已经弹出到界面上。

  1. 在matlab代码中添加
result=webfigure(f);

例如我的一个示例代码

function [result]=plotTest2()
x=0:0.1:1;
y=x+1;
f=figure();
plot(x,y);,
title('测试');
result=webfigure(f);
end
  1. 在WEB-INF下面添加webfigures.tld,webfigures.tld的位置在\MATLAB\R2013a\toolbox\javabuilder\webfigures\,添加完要干什么呢?直接添加的时会报错的,怎么解决呢?
    uri和info顺序要调换!
  2. 在生成的JSP文件下头部添加相应的引用项
  3. 在body部分添加<wf:web-figure root=“WebFigures” name=“MyFigure” scope=“session”/>
    我的jsp页面如下:
<%@ page language="java" contentType="text/html charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ 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="plotTest2.PlotClass"%>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
  

  <wf:web-figure root="WebFigures" name="MyFigure" scope="session"/>
</body>
</html>>

2.我的创新

网上查到的大多是直接在JSP页面中直接书写的,要是自己想写的话,其实代码差距不大,重要的是要记得设置属性,然后跳转到上面的JSP就行了。
举一个我的Servlet的例子

package com.shine.test;

import java.io.IOException;
import java.lang.reflect.Array;
import java.lang.reflect.Method;
import java.util.Arrays;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.mathworks.toolbox.javabuilder.MWJavaObjectRef;
import com.mathworks.toolbox.javabuilder.webfigures.WebFigure;

import plotTest2.PlotClass;

/**
 * Servlet implementation class WebFigureSer
 */
@WebServlet("/WebFigureSer")
public class WebFigureSer extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public WebFigureSer() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		try{
			Object[] a={};
			Object[] argu ={"1","2"};
			PlotClass plot = new PlotClass();
		     //  Object result = plot.plotTest2(1)[0];
			Class clazz=PlotClass.class;
			Method m1=clazz.getDeclaredMethod("plotTest2",int.class,Object[].class );
			Object c=clazz.newInstance();
			Object result=m1.invoke(c,1,(Object)a);
			
			
			//if (result instanceof Object[]){
			//	WebFigure wf = (WebFigure)
			//	    	         ((MWJavaObjectRef)list.get(0)).get();
			//}
			
			  WebFigure wf = (WebFigure)
	    	         ((MWJavaObjectRef)Array.get(result,0)).get();
		       //WebFigure wf = (WebFigure)
		    	//          ((MWJavaObjectRef)Array.get(result, 0)).get();
		       request.getSession().setAttribute("MyFigure",wf);
		       request.getRequestDispatcher("/a.jsp").forward(request, response);  
		      // System.out.println(wf);
		       }catch(ClassCastException e) {
		        System.out.println("Issue casting deployed components outputs to WebFigure"); 
		       }catch (Exception e) {
		        e.printStackTrace();
		       }finally {
		        //plot.dispose();
		       }
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

如果用反射,会涉及到取数组元素的问题,即Array.get(result,0),详细参考https://blog.csdn.net/xd15010130025/article/details/89508406

参考

https://blog.csdn.net/a519986543/article/details/53555996
https://blog.csdn.net/hunterlew/article/details/49538773
https://blog.csdn.net/xd15010130025/article/details/89508406

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值