新手问题,希望能得到帮助
jzuo 2003-11-30 06:33:28 winxp+apache+tomcat5.0
刚开始学jsp,照书上网上调查的例子写下来,结果出问题了:
HTTP Status 500 -
--------------------------------------------------------------------------------
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
org.apache.jasper.JasperException: String index out of range: -1
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:358)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:301)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:248)
javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
root cause
java.lang.StringIndexOutOfBoundsException: String index out of range: -1
java.lang.String.substring(String.java:1480)
org.apache.jsp.survey.vote.poll_005fresult_jsp._jspService(poll_005fresult_jsp.java:80)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:133)
javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:311)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:301)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:248)
javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
note The full stack trace of the root cause is available in the Tomcat logs.
--------------------------------------------------------------------------------
Apache Tomcat/5.0.14
源代码如下:
<META http-equiv="Content-Type" content="text/html; charset=gb2312">
<%@ page language="java" contentType="text/html;charset=gb2312" 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="d:/tomcat/webapps/Root/survey/";
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(":");
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();
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();
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);
String d1=c1.toString();
String d2=c2.toString();
String d3=c3.toString();
str=d1+":"+d2+":"+d3;
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>
<%
}
%>