一尘不染

如何从Web App项目执行和包含Java API

jsp

这类似于jsp:include中的java参数处的问题 svn-doesnt-import

我希望从JSP文件(response.jsp)执行Java文件(run.java),并将其输出返回到JSP文件。

我在用

Mac OSX 10.6.8,Apache Tomcat 6.0.16,Java1.6.0_29,Eclipse IDE Indigo,

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

我被要求包括一个Java API,该API使用相同的查询来搜寻预定义的网站。这必须与Web App分开

我需要将用户查询发送到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 / Users / me / Documents / workspace /
Slicer / src / slicer / Run.java”

任何建议或帮助深表感谢


阅读 254

收藏
2020-06-10

共1个答案

一尘不染

请在 如何以编程方式编译和实例化Java类上查看BalusC的解决方案?为了进行测试,请复制并粘贴以下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 "test.Test@hashcode". 
if(out != null) return;
%>
2020-06-10