2012-03-01 66 views
0

一个Java API,这是在 java parameter in jsp:include 和 类似问题https://stackoverflow.com/questions/6677981/eclipse-project-from-ant-build-file-for-a-java-web-project-on-svn-doesnt-import如何执行,包括从Web应用程序项目

我期待从JSP文件执行Java文件(run.java) (response.jsp)并将其输出返回给JSP文件。

我使用

的Mac OSX 10.6.8, 的Apache Tomcat 6.0.16, Java1.6.0_29, Eclipse IDE的靛蓝,

我有一个JSP Web应用程序部署在Tomcat中的搜寻一个XML内容存储库并将结果返回给用户。

我被要求包含一个使用相同查询来检索预定义网站的Java API。这必须独立于Web应用程序

我需要将用户查询发送到Java API并将内容返回给JSP WebAp。任何人都可以给我一些关于发布查询到外部Java API的点击吗?

JSP文件已经在相同的WebAp中调用了其他的.jsp文件,例如

<%@ include file="siteheader.jsp" %> 
<jsp:include page="<%= session.getAttribute(\"device\") + \"header.jsp\"%>"> 
<jsp:param name="title" value="Response" /> 
</jsp:include> 

我曾尝试以下,更然后其他的一些变化来得到它至少连接到外部的java文件,但不能破解它。

<%@ include file="/Users/me/Documents/workspace/Slicer/src/slicer/Run.java"  %> 

我不断收到tomcat的错误,文件的 “Macintosh HD /用户/我/文档/工作区/切片机/ src目录/切片机/ Run.java” 找不到

任何建议或帮助是非常赞赏

B

回答

0

请看BalusC的解决方案在
How do I programmatically compile and instantiate a Java class?
为了进行测试,复制并粘贴下面的JSP。我希望BalusC不介意我改变了他的代码。

<%@ page import="java.util.*,java.io.*,javax.tools.*,java.net.*" %><% 
System.setOut(new PrintStream(response.getOutputStream())); 
// Prepare source somehow. 
String source = "package test; public class Test { static { System.out.println(\"hello\"); } public Test() { System.out.println(\"rickz\"); } }"; 
// Save source in .java file. 
File root = new File("/testJava"); 
// On Windows running on C:\, this is C:\testJava. 
File sourceFile = new File(root, "test/Test.java"); 
sourceFile.getParentFile().mkdirs(); 
new FileWriter(sourceFile).append(source).close(); 
// Compile source file. 
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler(); 
compiler.run(null, null, null, sourceFile.getPath()); 
// Load and instantiate compiled class. 
URLClassLoader classLoader = URLClassLoader.newInstance(new URL[] { root.toURI().toURL() }); 
Class<?> cls = Class.forName("test.Test", true, classLoader); // Should print "hello". 
Object instance = cls.newInstance(); // Should print "world". 
System.out.println(instance); // Should print "[email protected]". 
if(out != null) return; 
%> 
+0

嗨rickz 全面的重播非常感谢。我会在早上第一时间适当看看它 干杯B – Deepend 2012-03-01 18:07:02

+0

嗨rickz 该项目现在已经改变,因为java文件正在被包含在WebAp中。虽然我没有机会实施它,但我想感谢您的答复。我可能会重新发布一个修正的问题。 – Deepend 2012-03-02 16:59:08

1

在JSP页面中包含Java源文件是不正确的。你应该做的是从服务器组件执行java程序(像一个Servlet)(你可以从一个JSP页面执行,但这些东西应该在Controller层完成)。

+0

嗨卡洛斯 感谢您的答复,只是为了检查你所说的控制器层做你的意思是使提供给WebAp代码通过将其包括在WEB-INF文件和编辑类路径? Sean Owen在[link](http://stackoverflow.com/questions/2354293/calling-a-java-method-in-jsp)中提到了类似的东西。 我不是这真的精通,但可以给它一个去 最佳, 乙 – Deepend 2012-03-01 18:05:04

+0

嗨卡洛斯 作为该项目的妆,现在已经改变了,我将重新发布一个稍作修改的问题,但感谢所有帮帮我。 – Deepend 2012-03-02 17:00:22

相关问题