使用java compiler API
我要在java file
中编译jsp
。我创建了一个html文件并使用它的textArea
元素,我发送了它的文本,这个文本是用户输入的java中的代码,发送到服务器上的JSP,然后在字符串中收集后我创建了一个文件{{1扩展并用.java
内容写它然后我使用编译器API但它没有编译文件。我想做this
textArea
index.html
<form action="formAction.jsp" method="post">
Please enter your text:
<br/>
<textarea name="textarea1" rows="5"></textarea>
<br/>
<input type="SUBMIT" value="Submit"/>
</form>
formAction.jsp
答案 0 :(得分:12)
以下代码编译变量convert中的代码。它会自动检测输入的类的名称。如果未找到任何类,则会创建一个名为MyClass的模板。
String convert = "public class NewClass { public static void main(String[] args) { System.out.println(\"test\"); }}";
String filename = "MyClass.java";
int i = convert.indexOf(" class ");
if(i == -1) {
convert = "public class MyClass { " + convert + " } ";
} else {
int classNameIndex = convert.indexOf(" ", i+1);
int classNameIndexEnd = convert.indexOf(" ", classNameIndex+1);
filename = convert.substring(classNameIndex+1, classNameIndexEnd) + ".java";
}
PrintWriter wr = response.getWriter();
File f = new File(filename);
if (!f.exists()) {
f.createNewFile();
wr.println("File is created\n");
}
FileWriter write = new FileWriter(f);
BufferedWriter bf = new BufferedWriter(write);
bf.write(convert);
bf.close();
wr.println("File writing done\n");
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
int result = compiler.run(null, null, null, filename);
if (result == 0) {
wr.println("Compilation Successful");
} else {
wr.println("Compilation Failed");
}
答案 1 :(得分:1)
有几种实现此方案的方法,但我们不能在JSP中包含Java代码,而是使用表达式语言(EL),或者我们甚至可以为自定义功能编写自定义jsp标记。这个链接将解释很多关于这个过程。
http://www.journaldev.com/2099/jsp-custom-tags-example-tutorial
即使你喜欢阅读教科书,Head First Servlet和JSP也会详细而优雅地解释这整个概念。因此,为了获得正确的功能信息,本书是必读书。
快乐学习..