2013-08-07 51 views
1

我想通過建立一個URL連接在我的本地機器上執行一個JSP,但我似乎無法讓它執行,我認爲它可能是java沒有找到JSP,但我可以' t似乎找出了爲什麼這可能是因爲JSP的URL看起來很好,任何人都有一個想法,爲什麼它不執行?下面是我的代碼片段和webapp結構。在java中執行JSP

謝謝。

 URL url = new URL("http://127.0.0.1/folder1/folder2/folder3/test.jsp"); 
     URLConnection connection = url.openConnection(); 
     connection.setDoOutput(true); 
     OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream()); 
     out.write("id=" + id); 
     out.close(); 

     BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8")); 
     String output; 
     StringBuilder sb = new StringBuilder(); 
     boolean started = false; 

     while ((output = in.readLine()) != null) { 
      if (!output.trim().equals("")) { 
       started = true; 
      } 
      if (started) { 
       sb.append(output); 
       sb.append("\r\n"); 
      } 
     } 
     in.close(); 
     System.out.println(sb.toString()); 

我的Web應用程序具有與以下類似的結構。

webapp 
    /WEB-INF 
     /classes 
     web.xml 
    /folder1 
     /folder2 
      /folder3 
      test.jsp 
+2

將URL直接粘貼到瀏覽器中是否有效? – Thihara

+0

你回覆什麼樣的信息?你會得到一個404或任何類型的HTTP錯誤代碼? –

+0

@Thihara JSP在Web瀏覽器中運行良好。 – JCS

回答

0

問題原來是由於從**http**://localhost/folder1/folder2/folder3/test.jsp**https**://localhost/folder1/folder2/folder3/test.jsp的重定向,當我在瀏覽器中打開JSP時不是最容易找到的重定向,那麼url.openConnection()似乎是非常煩人的像沒有發生。

0

我認爲你錯過了你的應用程序名稱。如果您正在運行你的應用程序的tomcat裏面則默認端口爲8080。

http://127.0.0.1:<port>/<web-app-name>/folder1/folder2/folder3/test.jsp 
+0

我的webapp可以在沒有http://127.0.0中的應用程序名稱的情況下訪問。1,因爲我已經爲ROOT.xml中的webapp設置了上下文路徑,但是我仍然嘗試了你的方式,但不幸的是它沒有工作。 – JCS

0

我給下方的故障排除方法,因爲我不知道很多關於你正在接受什麼失敗的消息。

  1. 我會嘗試訪問比你 提供的URL之外的其他網頁;只是爲了證明你的URLConnection方法是正確的,並且它是訪問JSP文件時遇到的問題。

  2. 查看您的請求返回的實際消息/頁面。 它是404頁面嗎?如果是這樣,那麼你的網址關閉。

  3. 並確保您可以直接在瀏覽器中訪問該URL。

1

我想你可能打算做以下(不含輸出部分):

URL url = new URL("http://127.0.0.1/folder1/folder2/folder3/test.jsp?id=" + id); 

使用StringBuilder爲output - 這是更有效的。


應該text.jsp一舉兩得:要求在id形式,並處理表單,然後做使用:

if (request.getMethod().equals("POST")) { 
    String id = request.getParameter("id"); 
    ... handle given id 
    return; 
} 
... show form 

但使用GET/POST不可知/無關代碼:

String id = request.getParameter("id"); 
if (id != null) { 
    ... handle given id 
    return; 
} 
... show form 

這樣就可以正常工作了。

+0

沒有什麼區別。 – JCS

+0

@JCS如果您不在空行上的支票,會發生什麼情況?也許就是這樣。它是否跳過HTTP標題行? –