2016-04-12 30 views
-4

java compiler API kullanarak jsp numaralı telefondan java file derlemek istiyorum. Bir html dosyası oluşturdum ve kullanıcı tarafından girilen java kodunun sunucuda JSP olması beklenen ve .java uzantılı bir dosya oluşturduğum ve textArea ile birlikte yazdığım textArea elemanını oluşturdum içeriği sonra ben derleyici API kullanılır ama dosyayı derleme değil. Ben, thisI `.java dosyasını jsp olarak nasıl derleyebilirim?

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

<% 

     String convert = request.getParameter("textarea1"); 
     PrintWriter wr = response.getWriter(); 
     File f =new File("file121.java"); 
     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,"file121.java"); 
     if(result==0){ 
      wr.println("Compilation Successful"); 
     } 
     else{ 
      wr.println("Compilation Failed"); 
     } 




    %> 
+12

Bu, her düzeyde yanlıştır. Bunu yapmamalısın. – duffymo

+1

Scriptlet'ler, biri için kötü bir fikirdir. İnsanların kaynak göndermesine ve JSP'nizde derlemesine izin vermeye mi çalışıyorsunuz? Üzgünüz, bu şekilde hiç JSP kullanmayın. JSP'leri artık hiç kullanmıyorum - 90'larda. – duffymo

+0

Bu gerçekten çok garip. Biraz geri adım atabilir ve sorunuzu bazı arka planlarla güncelleyebilir, böylece neyi başarmaya çalıştığınızı görebiliriz? –

cevap

12
  1. kullanmayın lütfen scriptlets böyle bir şey yapmak size jsp dan çağırabilir java kodu yazmak istiyorum.
  2. Java, sınıfın ismiyle bir dosya adı gerektiriyor, bu muhtemelen büyük bir problemdi.
  3. Kullanıcının girebileceği java kodunun beklenen biçimi nedir? Yöntem, sınıf veya sadece bir yöntem içinde bir komut dosyası?
  4. java bilgisi seviyenizle, bilinmeyen kullanıcıların kod girmesine izin vermeyin ya da sunucunuz çok yakında hacklenecek!

Aşağıdaki kod, değişken dönüştürmede kodu derler. Girilen sınıfın adını otomatik olarak algılar. Hiçbir sınıf bulunamadıysa, sınıf adı MyClass ile bir şablon oluşturur.

 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

Bu senaryoyu uygulanması çeşitli yolları vardır ama JSP'lerin ziyade aynı yönelik İfade Dili (EL) kullanın veya hatta bizim özel işlevselliği için özel jsp etiketler yazabilir biz Java kod içermemelidir. Bu bağlantı, bu süreç hakkında çok şey açıklayacaktır.

http://www.journaldev.com/2099/jsp-custom-tags-example-tutorial

Hatta ders kitaplarında geçiyor gibi eğer olsa o zaman Head First Servlet ve JSP bütün bu kavram ayrıntılı olarak ve zarif açıklıyor. Bu yüzden, düzgün işleyen bilgiye sahip olmak için bu kitabın bir kitabı olması şarttır.

Happy Learning ..