2012-03-01 63 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

相關問題