我的服务器配置:
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 个解决方案
<form name="vote" method="post" action="vote/poll_result.jsp">换成
<form name="vote" method="post" action="../vote/poll_result.jsp">
首先注意文件名大小写,目录名大小写,还有就是多用相对路径,少用绝对路径,比如
<form name="vote" method="post" action="vote/poll_result.jsp">中的
vote/poll_result.jsp,你可以看看其路径是否没问题,然后重启一下你的服务!
各位大虾们,你们说的方法我都试了,都不行,这件事真是奇怪了,在这之前我的服务器运行那个聊天室还挺好的呀
我的环境变量设置是这样的,有没有错呢?
在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我觉得这个没有错吧,这些目录都是对的,没有问题