2017-03-05 117 views
0

我是Spring MVC的新手。我想在我的网页上显示Matlab WebFigure。我使用Matlab javabuilder将我的程序部署到java类中。 Java类返回Webfigure。在我的web项目的控制器中,我想将WebFiggure html字符串添加到模型中。然后,我想它显示:matlab webfigure in spring mvc

Object[] result = transformace.transformace(4); 
MWJavaObjectRef ref; 

ref = (MWJavaObjectRef)result[0]; 
obrazek = (WebFigure)ref.get(); 

webFigures = new WebFigures("WebFigures",getServletContext()); 
String webFig = webFigures.getHtmlEmbedString(obrazek,"obrazek", "session", "", "", ""); 
model.addObject("webFig", webFig); 

在HelloWorldPage.jsp我希望得到的数字,它dislay:* .JSP页面上引用webFig时

${webFig} 

不过,我得到一个错误:

Spring MVC Hello World Example 

hello world mod2 
HTTP Status 404 - /spring2-mvc-xml-hello-world/WebFigures/interface 

type Status report 

message /spring2-mvc-xml-hello-world/WebFigures/interface 

description The requested resource is not available. 

Apache Tomcat/6.0.48 

你能帮我吗?

来源: HelloWorldPage.jsp

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 
<%@ page language="java" contentType="text/html; charset=UTF-8" 
pageEncoding="UTF-8"%> 
<%@ taglib prefix="wf" uri="http://www.mathworks.com/builderja/webfigures.tld" %> 
<html> 
<body> 
    <h1>Spring MVC Hello World Example</h1> 

    <h2>${msg} mod2</h2> 
     <p> 

     ${webFig} 
     </p> 
</body> 
</html> 

HelloWorldController.java

package com.mkyong.common.controller; 

import com.mathworks.toolbox.javabuilder.MWJavaObjectRef; 
import com.mathworks.toolbox.javabuilder.webfigures.WebFigure; 
import com.mathworks.toolbox.javabuilder.webfigures.WebFigures; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
import javax.servlet.http.HttpSession; 

import org.springframework.web.servlet.ModelAndView; 
import org.springframework.web.servlet.mvc.AbstractController; 
import transformace.Transformace; 

public class HelloWorldController extends AbstractController { 


    @Override 
    protected ModelAndView handleRequestInternal(HttpServletRequest request, 
      HttpServletResponse response) throws Exception { 

       Transformace transformace; 

       HttpSession session = request.getSession();    

       WebFigure obrazek= (WebFigure)session.getAttribute("obrazek"); 
       WebFigure obrazek1 = (WebFigure)session.getAttribute("obrazek1"); 
       WebFigure obrazek2=(WebFigure)session.getAttribute("obrazek2"); 
       WebFigure obrazek3=(WebFigure)session.getAttribute("obrazek3"); 

     ModelAndView model = new ModelAndView("HelloWorldPage"); 

       transformace = new Transformace(); 


       Object[] result = transformace.transformace(4); 
       MWJavaObjectRef ref; 

       ref = (MWJavaObjectRef)result[0]; 
       /* Z reference získáme data metodou get a uložíme je do webfigury. */ 
       obrazek = (WebFigure)ref.get(); 
       /* Nakonec nastavíme HttpSession. */ 
       session.setAttribute("obrazek", obrazek); 
       ref = (MWJavaObjectRef)result[1]; 
       obrazek1 = (WebFigure)ref.get(); 
       session.setAttribute("obrazek1", obrazek1); 
       ref = (MWJavaObjectRef)result[2]; 
       obrazek2 = (WebFigure)ref.get(); 
       session.setAttribute("obrazek2", obrazek2); 
       ref = (MWJavaObjectRef)result[3]; 
       obrazek3 = (WebFigure)ref.get(); 
       session.setAttribute("obrazek3", obrazek3);  

       WebFigures webFigures; 
       webFigures = new WebFigures("WebFigures",getServletContext()); 

       model.addObject("obr0", obrazek); 
       model.addObject("obr1", obrazek1); 
       model.addObject("obr2", obrazek2); 
       model.addObject("obr3", obrazek3); 

       String webFig = webFigures.getHtmlEmbedString(obrazek,"obrazek", "session", "", "", ""); 

       model.addObject("webFig", webFig); 

     model.addObject("msg", "hello world"); 

     return model; 
    } 

} 

webfigures.tld

<?xml version="1.0" encoding="ISO-8859-1" ?> 
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN" "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd"> 
<taglib> 
<tlibversion>1.0</tlibversion> 
<jspversion>1.1</jspversion> 
<shortname>WebFigures</shortname> 
<info>MATLAB Builder for Java WebFigures Tag library</info> 
<tag> 
<name>web-figure</name> 
<tagclass>com.mathworks.toolbox.javabuilder.webfigures.JspWebFigureTag</tagclass> 
<!--Body content can have a value of 
empty: no body 
JSP: body that is evaluated by container, then possibly 
processed by the tag 
tagdependent: body is only processed by tag; JSP in body is not 
evaluated. 
--> 
<bodycontent>JSP</bodycontent> 
<info>Embeds a live figure frame in an HTML document.</info> 
<attribute> 
<name>root</name> 
<required>true</required> 
<rtexprvalue>true</rtexprvalue> 
</attribute> 
<attribute> 
<name>width</name> 
<required>false</required> 
<rtexprvalue>true</rtexprvalue> 
</attribute> 
<attribute> 
<name>height</name> 
<required>false</required> 
<rtexprvalue>true</rtexprvalue> 
</attribute> 
<attribute> 
<name>style</name> 
<required>false</required> 
<rtexprvalue>true</rtexprvalue> 
</attribute> 
<attribute> 
<name>name</name> 
<required>true</required> 
<rtexprvalue>true</rtexprvalue> 
</attribute> 
<attribute> 
<name>scope</name> 
<required>true</required> 
<rtexprvalue>true</rtexprvalue> 
</attribute> 
</tag> 
</taglib> 

MVC-调度-servlet.xml中

<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> 

    <bean id="viewResolver" 
     class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
     <property name="prefix"> 
      <value>/WEB-INF/</value> 
     </property> 
     <property name="suffix"> 
      <value>.jsp</value> 
     </property> 
    </bean> 

    <bean name="/welcome.htm" 
     class="com.mkyong.common.controller.HelloWorldController" /> 

</beans> 

的pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.mkyong.common</groupId> 
    <artifactId>spring2-mvc-xml-hello-world</artifactId> 
    <packaging>war</packaging> 
    <version>1.0-SNAPSHOT</version> 
    <name>Spring 2 MVC</name> 

    <properties> 
     <jdk.version>1.6</jdk.version> 
     <spring.version>2.5.6</spring.version> 
     <jstl.version>1.2</jstl.version> 
     <servletapi.version>2.5</servletapi.version> 

    </properties> 

    <dependencies> 

     <!-- Spring MVC framework --> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-webmvc</artifactId> 
      <version>${spring.version}</version> 
     </dependency> 

     <!-- JSTL --> 
     <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>jstl</artifactId> 
      <version>${jstl.version}</version> 
     </dependency> 

     <!-- for compile only, your container should have this --> 
     <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>servlet-api</artifactId> 
      <version>${servletapi.version}</version> 
      <scope>provided</scope> 
     </dependency> 
    <dependency> 
     <groupId>test</groupId> 
     <artifactId>test123</artifactId> 
     <version>123</version> 
      <scope>compile</scope> 
      <optional>true</optional> 
    </dependency> 
    <dependency> 
     <groupId>transformace2</groupId> 
     <artifactId>transformace21</artifactId> 
     <version>1</version> 
    </dependency> 
    </dependencies> 

    <build> 

     <plugins> 

      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>3.3</version> 
       <configuration> 
        <source>${jdk.version}</source> 
        <target>${jdk.version}</target> 
       </configuration> 
      </plugin> 

      <plugin> 
       <groupId>org.eclipse.jetty</groupId> 
       <artifactId>jetty-maven-plugin</artifactId> 
       <version>9.2.11.v20150529</version> 
       <configuration> 
        <scanIntervalSeconds>10</scanIntervalSeconds> 
        <webApp> 
         <contextPath>/spring2</contextPath> 
        </webApp> 
       </configuration> 
      </plugin> 

      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-eclipse-plugin</artifactId> 
       <version>2.9</version> 
       <configuration> 
        <downloadSources>true</downloadSources> 
        <downloadJavadocs>true</downloadJavadocs> 
        <wtpversion>2.0</wtpversion> 
        <wtpContextName>spring2</wtpContextName> 
       </configuration> 
      </plugin> 

     </plugins> 

    </build> 

</project> 
+0

去找服务文件的春天服务器的一个例子,更改文件和完成的。这里根本就不需要谈论matlab,它不相关。 – Snickers3192

+0

Thx置评。我编辑了这篇文章。我忘了提及我使用Matlab Javabuilder从Matlab程序创建类。 Matlab程序返回Webfigure。使用WebFigure函数getHtmlEmbedString我应该得到一个字符串,它将以某种方式在网页上显示为Matlab图形。然而,当我将它添加到模型然后从* .jsp页面调用它来显示它时,这不起作用...你知道它为什么不起作用吗? Thx很多 –

+0

就像我说的去找个地方的例子。看起来你从mkyong找到一个...所以我没有看到你在寻找另一个问题。我的建议是使用SpringBoot找到一个,Spring中的XML已经死了。您可以使用@ResponseBody返回一个字符串HTML。仍然在谈论Matlab,请在发布问题时专注于您的问题。这不仅仅是我在做什么使它工作。如果你这样做的可能性很大,你会在右侧看到与你寻求的答案相关的问题。否则你会混淆SO。 – Snickers3192

回答

0

我已经解决了这个!

有这些条目在web.xml

<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> 

我花时间来解决这个缺失,希望这可以帮助任何人处理同样的问题!

完整的web.xml:

<web-app id="WebApp_ID" version="2.4" 
xmlns="http://java.sun.com/xml/ns/j2ee" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> 


<display-name>Spring Web MVC Application</display-name> 

<servlet> 
    <servlet-name>mvc-dispatcher</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 
    <servlet>   
     <servlet-name>WebFigures</servlet-name>   
     <servlet-class>com.mathworks.toolbox.javabuilder.webfigures.WebFiguresServlet</servlet-class> 
    </servlet> 


<servlet-mapping> 
    <servlet-name>mvc-dispatcher</servlet-name> 
    <url-pattern>*.htm</url-pattern> 
</servlet-mapping> 

    <servlet-mapping>   
     <servlet-name>WebFigures</servlet-name>   
     <url-pattern>/WebFigures/*</url-pattern>  
    </servlet-mapping>