如何在jsp中编译我的`.java文件?

时间:2016-04-12 20:18:15

标签: java jsp java-compiler-api online-compilation

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

2 个答案:

答案 0 :(得分:12)

  1. 请不要使用scriptlet,编写可以从jsp中调用的java代码。
  2. Java需要一个带有类名的文件名,这可能是你的主要问题。
  3. 用户可以输入的Java代码的预期格式是什么?方法,类或只是方法内的脚本?
  4. 根据您的Java知识水平,请不要让未知用户输入代码或您的服务器很快会被黑客入侵
  5. 以下代码编译变量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也会详细而优雅地解释这整个概念。因此,为了获得正确的功能信息,本书是必读书。

快乐学习..