2012-03-08 134 views
0

:) 因此,我最終購買了我的主機,並試圖在其上部署我的tomcat項目。 服務器是mochahost.com,JSP和Tomcat支持已啓用。我的項目運行在本地機器上很好,但是當我的Web服務器上部署它,它說:在Web服務器上部署Tomcat項目,文件問題

type Exception report 

message 

description The server encountered an internal error() that prevented it from fulfilling this request. 

exception 

org.apache.jasper.JasperException: Exception in JSP: /List/index.jsp:38 

35: <br>  
36: <% 
37: String file = application.getRealPath("/") + "default_list.txt"; 
38: FileReader filereader = new FileReader(file); 
39: BufferedReader br = new BufferedReader(filereader); 
40: String eachLine = br.readLine(); 
41: while (eachLine != null) { 

什麼可能是錯誤的?我的猜測是它無法訪問該文件,但我該如何解決它?謝謝!

更新:問題是由服務器路徑引起的,使用Server.MapPath方法解決。

回答

1

對,這是嘗試在Web應用程序中使用文件路徑的問題:您無法知道您將在何處部署。

你有一些事情你可以嘗試:

  1. 寫的真實路徑出到日誌,以便你可以看到它。你怎麼知道該怎麼做?
  2. 從servlet上下文中使用getResourceAsStream()CLASSPATH中讀取文件。
  3. 「default_list」表明這是參考數據。您可以嘗試將其嵌入爲JSON或XML,因爲它是不變的。
  4. 您不應該在JSP中使用scriptlet代碼。讓一個servlet將這些數據傳遞給JSP。
  5. 學習JSTL。你會很高興你做到了。
  6. 將參考數據放入數據庫中並從中讀取。
+0

謝謝!但是你的意思是#4?什麼是尖括號,它們在我的JSP頁面中的位置? – BObov 2012-03-08 10:32:41

+0

Scriptlets是JSP中介於<% ... %>標籤之間的任何內容。他們有一個90年代後期的技術已經失寵。他們很難閱讀和維護,並且可以很容易地將東西放入不屬於此處的JSP中。他們應該做的就是渲染他們提供的數據。另一個對象,像一個servlet,應該獲取該默認文本數據並將其提供給JSP進行呈現。 – duffymo 2012-03-08 10:38:26

+0

我明白了,非常感謝!但是我在JSP頁面上使用了2個腳本來輸出我的文本文件。如何在不使用腳本的情況下在同一頁面上顯示它?再次感謝=) – BObov 2012-03-08 10:47:32

0

程序在第38行中斷。這意味着問題出現在您從getRealPath方法獲得的路徑中。我建議你分析一下你用這種方法得到的路徑,以及它是否有意義(也就是說,如果你想要得到的txt文件在該路徑中找到)。