JSP文件明明存在,却提示不存在

时间:2021-04-29 15:19:06
我的服务器配置:
WINXP+jakarta-tomcat-3.2.4+apache_1.3.28-win32+j2sdk-1_3_1_08-window


问题:

这是一个网上调查的程序。当点击vote.htm页面上的“提交”时提示http 404未找到poll_result.jsp或不存在

,可是该文件是存在的,文件名绝对没问题,都是在英文输入法下输入的目录也是对的,我的服务器曾经运行

过一个聊天室程序的,没有问题的呀,下面是这个投票系统的源码:
vote.htm放在D:\java\tomcat\webapps\ROOT下,以下是该文件的源码:


<html>
<head>
<title>网上调查</title>
<meta http-equiv="Content-Type" content="text/html;charset=gb2312">
</head>
<body>
<table border="0" width="134" align="center">
<tr>
<td colspan="2" align="center"><font color="blue"><b>在 线 调 查</d></font><br><br>
你认为企业电子商务网站应该包括以下功能
</td></tr>
<tr>
<td colspan="2" align="center">
<form name="vote" method="post" action="vote/poll_result.jsp">
<input type="hidden" name="action" value="poll">
<input type="radio" name="vote" value="shopping" checked>在线购物<br>
<input type="radio" name="vote" value="support">技术支持<br>
<input type="radio" name="vote" value="product">产品介绍<br>
<input type="submit" name="submit" value="提交" class="buttonface">
<input type="reset" name="reset" value="重选" class="buttonface">
</form>
</td>
</tr>
<tr>
<td colspan="2" align="center"><font color="blue"><b><a href="vote/show.jsp"onClick="return 

newwin(this.href);">查看调查结果</a></b></font></td></tr>
</table>
</body>
</html>



poll_result.jsp放在D:\java\tomcat\webapps\ROOT\vote,以下是源码



<%@ page import="java.util.*,java.lang.*,java.io.*"%>
<%
String action=request.getParameter("action");
String vote=request.getParameter("vote");
String polldata="";
if(action.compareTo("poll")==0){
   //生成文件路径和文件名
   
   String resultsDir="C:/tomcat/webapps/Root/business/vote/";
   FileWriter resultsFile=new FileWriter(resultsDir + System.getProperty("file.separator") + 

"vote.txt",true);
   //判断文件是否存在
   File myfile=new File(resultsDir + System.getProperty("file.separator") + "vote.txt");
   if(!(myfile.exists())){
     PrintWriter toFile= new PrintWriter(resultsFile);
     if(vote.compareTo("shopping")==0) polldata="1:0:0";
     if(vote.compareTo("support")==0) polldata="0:1:0";
     if(vote.compareTo("product")==0) polldata="0:0:1";
     toFile.println("polldata");
     resultsFile.close();
     out.println(polldata);
   }
   else{
   //其他次投票
  
  FileInputStream tfile=new FileInputStream (resultsDir + System.getProperty("file.separator") + 

"vote.txt");
  String str="";
  int c;
  
  while ((c=tfile.read())!=-1){
    str=str+(char)c;
    }
    
  //找到第一个“:”的位置
  int first=str.indexOf(":");
   //找到第二个“:”的位置
  int last=str.lastIndexOf(":");
  //得到String的长度
  int lenth=str.length();
  //取出第一个“:”前的数据
  String First=str.substring(0,first);
  //取出第一个“:”和第二个“:”之间的数据
  String Next=str.substring(first+1,last);
  //取出最后一个“:”后的数据
  String Last=str.substring(last+1,lenth);
  //关闭文件
  tfile.close();
  
  //把String转换成Long
  Long a1=new Long(First);
  Long a2=new Long(Next);
  Long a3=new Long(Last);
  
  long b1=a1.longValue();
  long b2=a2.longValue();
  long b3=a3.longValue();
  
  //把每次投票结果累加1
  if(vote.compareTo("shopping")==0) b1=b1+1;
  if(vote.compareTo("support")==0) b2=b2+1;
  if(vote.compareTo("product")==0) b3=b3+1;
  
  Long c1=new Long(b1);
  Long c2=new Long(b2);
  Long c3=new Long(b3);
  
  //把Long转换成String
  String d1=c1.toString();
  String d2=c2.toString();
  String d3=c3.toString();
  
  //总票数累加
  str=d1+":"+d2+":"+d3;
  
  //把结果写入vote.txt文件中
  RandomAccessFile savefile = new RandomAccessFile(resultsDir + System.getProperty

("file.separator") + "vote.txt","rw");
  savefile.writeBytes(str);
  savefile.close();
}
  
%>
<script language=javascript>
    alert("Thanks for your voting!");
    self.location="../index.jsp"
</script>
<%
}
%>




show.jsp放在D:\java\tomcat\webapps\ROOT\vote,以下是源码


<html>
<head>
<title>调查结果显示</title>
<link rel=stylesheet href="../style.css" type="text/css">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body>
 <center><table><b>调查结果</b><br>
   <tr>
     <td>
<%
  //生成文件路径和文件名
  String resultsDir="C:/tomcat/webapps/Root/business/vote/";
  //建立一个FileInputStream对象来读取数据
  FileInputStream tfile=new FileInputStream (resultsDir + System.getProperty("file.separator") + 

"vote.txt");
  String str="";
  int c;
  //读取数据
  while ((c=tfile.read())!=-1){
    str=str+(char)c;
    }
  //找到第一个“:”的位置
  int first=str.indexOf(":");
   //找到第二个“:”的位置
  int last=str.lastIndexOf(":");
  //得到String的长度
  int lenth=str.length();
  //取出第一个“:”前的数据
  String First=str.substring(0,first);
  //取出第一个“:”和第二个“:”之间的数据
  String Next=str.substring(first+1,last);
  //取出最后一个“:”后的数据
  String Last=str.substring(last+1,lenth);
  //关闭文件
  tfile.close();
  //把String转换成Long
  Long a1=new Long(First);
  Long a2=new Long(Next);
  Long a3=new Long(Last);
  //把Long转换成Long
  long b1=a1.longValue();
  long b2=a2.longValue();
  long b3=a3.longValue();
  //计算投票总数
  long total=b1+b2+b3;
  //计算显示图片的长度
  float h0=100*((float)b1/(float)total);
  float h1=100*((float)b2/(float)total);
  float h2=100*((float)b3/(float)total);
  //显示图片和单项投票人数
  out.println("在线购物:<img src=../images/poll.gif width="+h0+" height=15>" + b1+ "<br>");
  out.println("技术支持:<img src=../images/poll.gif width="+h1+" height=15>" + b2+ "<br>");
  out.println("产品介绍:<img src=../images/poll.gif width="+h2+" height=15>" + b3+ "</p>");
  //显示投票总人数
  out.println("投票总人数:"+total+" ");
  %>
  </td>
 </tr>
</table>
</p>
<a href="javascript:window.close();">[关闭]</a>
</center>
</body>
</html>


9 个解决方案

#1


你把这几个文件都放在root目录下试一试呢?

#2


注意.jsp的大小写。

#3


这些我都试过了

#4


文件类型就是jsp绝对不是文件类型的错

#5


目录的大小写也得注意

或是路径不对

我遇到过的

#6


<form name="vote" method="post" action="vote/poll_result.jsp">换成
<form name="vote" method="post" action="../vote/poll_result.jsp">

#7


首先注意文件名大小写,目录名大小写,还有就是多用相对路径,少用绝对路径,比如
<form name="vote" method="post" action="vote/poll_result.jsp">中的
vote/poll_result.jsp,你可以看看其路径是否没问题,然后重启一下你的服务!

#8


各位大虾们,你们说的方法我都试了,都不行,这件事真是奇怪了,在这之前我的服务器运行那个聊天室还挺好的呀

#9


我的环境变量设置是这样的,有没有错呢?

在classpath变量里设置为d:\java\jdk\lib\tools.jar;d:\java\jdk\lib\dt.jar;d:\java\jdk\lib\htmlconverter.jar;
我看的书上写的是d:\java\jdk\lib\tools.jar;d:\java\jdk\lib\dt.jar;d:\java\jdk\lib\jsdk.jar
我看了我的lib目录里没有jsdk.jar而是htmlconverter.jar就把它改成了htmlconverter.jar我觉得这个没有错吧,这些目录都是对的,没有问题

#1


你把这几个文件都放在root目录下试一试呢?

#2


注意.jsp的大小写。

#3


这些我都试过了

#4


文件类型就是jsp绝对不是文件类型的错

#5


目录的大小写也得注意

或是路径不对

我遇到过的

#6


<form name="vote" method="post" action="vote/poll_result.jsp">换成
<form name="vote" method="post" action="../vote/poll_result.jsp">

#7


首先注意文件名大小写,目录名大小写,还有就是多用相对路径,少用绝对路径,比如
<form name="vote" method="post" action="vote/poll_result.jsp">中的
vote/poll_result.jsp,你可以看看其路径是否没问题,然后重启一下你的服务!

#8


各位大虾们,你们说的方法我都试了,都不行,这件事真是奇怪了,在这之前我的服务器运行那个聊天室还挺好的呀

#9


我的环境变量设置是这样的,有没有错呢?

在classpath变量里设置为d:\java\jdk\lib\tools.jar;d:\java\jdk\lib\dt.jar;d:\java\jdk\lib\htmlconverter.jar;
我看的书上写的是d:\java\jdk\lib\tools.jar;d:\java\jdk\lib\dt.jar;d:\java\jdk\lib\jsdk.jar
我看了我的lib目录里没有jsdk.jar而是htmlconverter.jar就把它改成了htmlconverter.jar我觉得这个没有错吧,这些目录都是对的,没有问题