2012-03-08 127 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文件在该路径中找到)。

相关问题