我不知如何调试JSP,JSP出错时不象ASP提示第几行错误,高手大哥们,救救我(100分)

  • 主题发起人 主题发起人 goddy
  • 开始时间 开始时间
G

goddy

Unregistered / Unconfirmed
GUEST, unregistred user!
我不知如何调试JSP,JSP出错时不象ASP提示第几行错误
高手大哥们,救救我
 
源程序 如下:
<!--this file are written by fancy-->
<html>
<head>
<title>
login the first chat room
</title>
</head>
<%@ page import="java.util.Vector" %>
<%@ page contentType="text/html;charset=gb2312" %>
<%@ page import="java.util.Hashtable" %>
<%@ page import="java.util.Date" %>
<%
byte[] username_p;
String username_t=request.getParameter("username");
username_p=username_t.getBytes("ISO8859-1");
String username=new String(username_p);
boolean boolcanlogin=true;
%>
<%
Vector temp=new Vector();
String tempuser;
//*****************************************************************************
temp=(Vector)getServletContext().getAttribute("chat1User");
for(int i=0;i<temp.size();i++)
{
tempuser=temp.elementAt(i).toString();
if(username.equals(tempuser))
{
boolcanlogin=false;
}
}
//*****************************************************************************
if (username.equals(""))
{
boolcanlogin=false;
}
if (username.equals("每一个人"))
{
boolcanlogin=false;
}
if (username.equals("all"))
{
boolcanlogin=false;
}
if (username.length()>8)
{
boolcanlogin=false;
}
//*****************************************************************************
if(boolcanlogin==true)
{
temp.addElement(username);
//如果检查通过则在用户向量中加入新的用户名
getServletContext().setAttribute("chat1User",temp);
session.putValue("username",username);
//设置session记录用户名
//添加欢迎信息到消息向量里
Vector tempmsg=(Vector)getServletContext().getAttribute("chat1Msg");
tempmsg.addElement("<font size='2' color='red'>"+username+"来了["+request.getRemoteAddr()+"],大家欢迎!</font><br>");
getServletContext().setAttribute("chat1Msg",tempmsg);


//输出欢迎页面
out.println("<p align='center'><font color='#8080FF'>未名聊天室1</font></p>");
out.println("<hr width='80%' color='#0000FF'>");
out.println("<div align='center'><center>");
out.println("<table border='0' width='86%' height='233'>");
out.println("<tr>");
out.println("<td width='4%' height='23'><img src='new.gif' width='20' height='20'");
out.println("alt='new.gif (970 bytes)'></td>");
out.println("<td width='96%' height='23' bgcolor='#B5B5FF'>各位聊客,欢迎使用本聊天室,本聊天室支持人数无上限,每隔10秒刷新消息队列,每隔</td>");
out.println("</tr>");
out.println("<tr>");-
out.println("<td width='4%' height='13'></td>");
out.println("<td width='96%' height='13' bgcolor='#B5B5FF'>两分钟刷新用户列表,如果用户在四分钟内没有任何动作的话,那么此用户将被注销.</td>");
out.println("</tr>");
out.println("<tr>");
out.println("<td width='4%' height='11'><img src='new.gif' width='20' height='20'");
out.println("alt='new.gif (970 bytes)'></td>");
out.println("<td width='96%' height='11' bgcolor='#CACAFF'>本聊天室支持34种动作,31种表情,悄悄话等功能,今后将加入图形化功能,及跳转功能,</td>");
out.println("</tr>");
out.println("<tr>");
out.println("<td width='4%' height='7'></td>");
out.println("<td width='96%' height='7' bgcolor='#CACAFF'>新建聊天室等功能.</td>");
out.println(" </tr>");
out.println("<tr>");
out.println("<td width='4%' height='19'><img src='new.gif' width='20' height='20'");
out.println("alt='new.gif (970 bytes)'></td>");
out.println("<td width='96%' height='19' bgcolor='#D2D2FF'>如果你要离开本聊天室,请点击右边窗口内的&amp;quot;关闭&amp;quot;.</td>");
out.println("</tr>");
out.println("<tr>");
out.println("<td width='4%' height='20'><img src='new.gif' width='20' height='20'");
out.println("alt='new.gif (970 bytes)'></td>");
out.println("<td width='96%' height='20' bgcolor='#EEEEFF'>如果您有什么批评及建议,请到&amp;quot;三角地&amp;quot;发表文章.</td>");
out.println("</tr>");
out.println("<tr>");
out.println("<td width='4%' height='22'><img src='new.gif' width='20' height='20'");
out.println("alt='new.gif (970 bytes)'></td>");
out.println("<td width='96%' height='22' bgcolor='#F4F4FF'>请不要在本聊天室内发表反动言论及对他人进行人身攻击.</td>");
out.println("</tr>");
out.println("</table>");
out.println("</center></div>");
out.println("<p align='center'><a href='main.html' target='_top'>请进</a></p>");
}
else

{
out.println("<center><font color='red' size='2'>用户名相同");
out.println("<a href='login.html'>重新申请ID</a></font></center>");
}
%>
<%
if (boolcanlogin==true)
{
//用一个哈希表来记录用户在聊天室呆的时间
Hashtable userLife=(Hashtable)getServletContext().getAttribute("userLife");
//用一个哈希表记录在聊用户的IP地址
Hashtable userIP=(Hashtable)getServletContext().getAttribute("userIP");
//取得用户登录时间
Date userTime=new Date();
//记录用户登录时间
userLife.put((String)session.getValue("username"),new Long(userTime.getTime()));
//记录用户IP地址
userIP.put((String)session.getValue("username"),request.getRemoteAddr());
getServletContext().setAttribute("userLife",userLife);
getServletContext().setAttribute("userIP",userIP);
}
%>
<body>
</body>
</html>
Tomcat错误信息如下:
Error: 500
Location: /examples/jsp/chapter10/login.jsp
Internal Servlet Error:
org.apache.jasper.JasperException: Unable to compile class for JSPC:/TOMCAT/jakarta-tomcat/work/localhost_8080%2Fexamples/_0002fjsp_0002fchapter_00031_00030_0002flogin_0002ejsplogin_jsp_14.java:143: ???????
out.println("");?
^
1 ???
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:247)
at org.apache.jasper.runtime.JspServlet.loadJSP(JspServlet.java:413)
at org.apache.jasper.runtime.JspServlet$JspServletWrapper.loadIfNecessary(JspServlet.java:149)
at org.apache.jasper.runtime.JspServlet$JspServletWrapper.service(JspServlet.java:161)
at org.apache.jasper.runtime.JspServlet.serviceJspFile(JspServlet.java:261)
at org.apache.jasper.runtime.JspServlet.service(JspServlet.java:369)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.tomcat.core.ServletWrapper.handleRequest(ServletWrapper.java:503)
at org.apache.tomcat.core.ContextManager.service(ContextManager.java:559)
at org.apache.tomcat.service.http.HttpConnectionHandler.processConnection(HttpConnectionHandler.java:160)
at org.apache.tomcat.service.TcpConnectionThread.run(SimpleTcpEndpoint.java:338)
at java.lang.Thread.run(Unknown Source)
 
我调试JSP程序时,是一条一条地注释掉语句进行调试的,比较傻
 
接受答案了.
 

&amp;lt;!--this file are written by fancy--&amp;gt;<br>
&amp;lt;html&amp;gt;<br>
&amp;lt;head&amp;gt;<br>
&amp;lt;title&amp;gt;<br>
login the first chat room <br>
&amp;lt;/title&amp;gt;<br>
&amp;lt;/head&amp;gt;<br>
&amp;lt;%@ page import=&amp;quot;java.util.Vector&amp;quot;
%&amp;gt;<br>
&amp;lt;%@ page contentType=&amp;quot;text/html;charset=gb2312&amp;quot;
%&amp;gt;<br>
&amp;lt;%@ page import=&amp;quot;java.util.Hashtable&amp;quot;
%&amp;gt;<br>
&amp;lt;%@ page import=&amp;quot;java.util.Date&amp;quot;
%&amp;gt;
<p>&amp;lt;%<br>
byte[] username_p;<br>
String username_t=request.getParameter(&amp;quot;username&amp;quot;);<br>
username_p=username_t.getBytes(&amp;quot;ISO8859-1&amp;quot;);<br>
String username=new String(username_p);<br>
boolean boolcanlogin=true;<br>
%&amp;gt;</p>
<p>&amp;lt;%<br>
Vector temp=new Vector();<br>
String tempuser;</p>
<p>//*****************************************************************************<br>
temp=(Vector)getServletContext().getAttribute(&amp;quot;chat1User&amp;quot;);<br>
for(int i=0;i&amp;lt;temp.size();i++)<br>
{<br>
tempuser=temp.elementAt(i).toString();<br>
if(username.equals(tempuser))<br>
{<br>
boolcanlogin=false;<br>
}<br>
}<br>
//*****************************************************************************<br>
if (username.equals(&amp;quot;&amp;quot;))<br>
{<br>
boolcanlogin=false;<br>
}</p>
<p>if (username.equals(&amp;quot;每一个人&amp;quot;))<br>
{<br>
boolcanlogin=false;<br>
}</p>
<p>if (username.equals(&amp;quot;all&amp;quot;))<br>
{<br>
boolcanlogin=false;<br>
}</p>
<p>if (username.length()&amp;gt;8)<br>
{<br>
boolcanlogin=false;<br>
}<br>
//*****************************************************************************<br>
if(boolcanlogin==true)<br>
{<br>
temp.addElement(username);
//如果检查通过则在用户向量中加入新的用户名<br>
getServletContext().setAttribute(&amp;quot;chat1User&amp;quot;,temp);<br>
session.putValue(&amp;quot;username&amp;quot;,username);
//设置session记录用户名 <br>
//添加欢迎信息到消息向量里<br>
Vector tempmsg=(Vector)getServletContext().getAttribute(&amp;quot;chat1Msg&amp;quot;);<br>
tempmsg.addElement(&amp;quot;&amp;lt;font size='2' color='red'&amp;gt;&amp;quot;+username+&amp;quot;来了[&amp;quot;+request.getRemoteAddr()+&amp;quot;],大家欢迎!&amp;lt;/font&amp;gt;&amp;lt;br&amp;gt;&amp;quot;);<br>
getServletContext().setAttribute(&amp;quot;chat1Msg&amp;quot;,tempmsg);<br>
<br>
<br>
//输出欢迎页面<br>
out.println(&amp;quot;&amp;lt;p align='center'&amp;gt;&amp;lt;font color='#8080FF'&amp;gt;未名聊天室1&amp;lt;/font&amp;gt;&amp;lt;/p&amp;gt;&amp;quot;);<br>
out.println(&amp;quot;&amp;lt;hr width='80%' color='#0000FF'&amp;gt;&amp;quot;);<br>
out.println(&amp;quot;&amp;lt;div align='center'&amp;gt;&amp;lt;center&amp;gt;&amp;quot;);<br>
out.println(&amp;quot;&amp;lt;table border='0' width='86%' height='233'&amp;gt;&amp;quot;);<br>
out.println(&amp;quot;&amp;lt;tr&amp;gt;&amp;quot;);<br>
out.println(&amp;quot;&amp;lt;td width='4%' height='23'&amp;gt;&amp;lt;img src='new.gif' width='20'
height='20'&amp;quot;);<br>
out.println(&amp;quot;alt='new.gif (970 bytes)'&amp;gt;&amp;lt;/td&amp;gt;&amp;quot;);<br>
out.println(&amp;quot;&amp;lt;td width='96%' height='23' bgcolor='#B5B5FF'&amp;gt;各位聊客,欢迎使用本聊天室,本聊天室支持人数无上限,每隔10秒刷新消息队列,每隔&amp;lt;/td&amp;gt;&amp;quot;);<br>
out.println(&amp;quot;&amp;lt;/tr&amp;gt;&amp;quot;);<br>
out.println(&amp;quot;&amp;lt;tr&amp;gt;&amp;quot;);-<br>
out.println(&amp;quot;&amp;lt;td width='4%' height='13'&amp;gt;&amp;lt;/td&amp;gt;&amp;quot;);<br>
out.println(&amp;quot;&amp;lt;td width='96%' height='13' bgcolor='#B5B5FF'&amp;gt;两分钟刷新用户列表,如果用户在四分钟内没有任何动作的话,那么此用户将被注销.&amp;lt;/td&amp;gt;&amp;quot;);<br>
out.println(&amp;quot;&amp;lt;/tr&amp;gt;&amp;quot;);<br>
out.println(&amp;quot;&amp;lt;tr&amp;gt;&amp;quot;);<br>
out.println(&amp;quot;&amp;lt;td width='4%' height='11'&amp;gt;&amp;lt;img src='new.gif' width='20'
height='20'&amp;quot;);<br>
out.println(&amp;quot;alt='new.gif (970 bytes)'&amp;gt;&amp;lt;/td&amp;gt;&amp;quot;);<br>
out.println(&amp;quot;&amp;lt;td width='96%' height='11' bgcolor='#CACAFF'&amp;gt;本聊天室支持34种动作,31种表情,悄悄话等功能,今后将加入图形化功能,及跳转功能,&amp;lt;/td&amp;gt;&amp;quot;);<br>
out.println(&amp;quot;&amp;lt;/tr&amp;gt;&amp;quot;);<br>
out.println(&amp;quot;&amp;lt;tr&amp;gt;&amp;quot;);<br>
out.println(&amp;quot;&amp;lt;td width='4%' height='7'&amp;gt;&amp;lt;/td&amp;gt;&amp;quot;);<br>
out.println(&amp;quot;&amp;lt;td width='96%' height='7' bgcolor='#CACAFF'&amp;gt;新建聊天室等功能.&amp;lt;/td&amp;gt;&amp;quot;);<br>
out.println(&amp;quot;
&amp;lt;/tr&amp;gt;&amp;quot;);<br>
out.println(&amp;quot;&amp;lt;tr&amp;gt;&amp;quot;);<br>
out.println(&amp;quot;&amp;lt;td width='4%' height='19'&amp;gt;&amp;lt;img src='new.gif' width='20'
height='20'&amp;quot;);<br>
out.println(&amp;quot;alt='new.gif (970 bytes)'&amp;gt;&amp;lt;/td&amp;gt;&amp;quot;);<br>
out.println(&amp;quot;&amp;lt;td width='96%' height='19' bgcolor='#D2D2FF'&amp;gt;如果你要离开本聊天室,请点击右边窗口内的&amp;amp;quot;关闭&amp;amp;quot;.&amp;lt;/td&amp;gt;&amp;quot;);<br>
out.println(&amp;quot;&amp;lt;/tr&amp;gt;&amp;quot;);<br>
out.println(&amp;quot;&amp;lt;tr&amp;gt;&amp;quot;);<br>
out.println(&amp;quot;&amp;lt;td width='4%' height='20'&amp;gt;&amp;lt;img src='new.gif' width='20'
height='20'&amp;quot;);<br>
out.println(&amp;quot;alt='new.gif (970 bytes)'&amp;gt;&amp;lt;/td&amp;gt;&amp;quot;);<br>
out.println(&amp;quot;&amp;lt;td width='96%' height='20' bgcolor='#EEEEFF'&amp;gt;如果您有什么批评及建议,请到&amp;amp;quot;三角地&amp;amp;quot;发表文章.&amp;lt;/td&amp;gt;&amp;quot;);<br>
out.println(&amp;quot;&amp;lt;/tr&amp;gt;&amp;quot;);<br>
out.println(&amp;quot;&amp;lt;tr&amp;gt;&amp;quot;);<br>
out.println(&amp;quot;&amp;lt;td width='4%' height='22'&amp;gt;&amp;lt;img src='new.gif' width='20'
height='20'&amp;quot;);<br>
out.println(&amp;quot;alt='new.gif (970 bytes)'&amp;gt;&amp;lt;/td&amp;gt;&amp;quot;);<br>
out.println(&amp;quot;&amp;lt;td width='96%' height='22' bgcolor='#F4F4FF'&amp;gt;请不要在本聊天室内发表反动言论及对他人进行人身攻击.&amp;lt;/td&amp;gt;&amp;quot;);<br>
out.println(&amp;quot;&amp;lt;/tr&amp;gt;&amp;quot;);<br>
out.println(&amp;quot;&amp;lt;/table&amp;gt;&amp;quot;);<br>
out.println(&amp;quot;&amp;lt;/center&amp;gt;&amp;lt;/div&amp;gt;&amp;quot;);<br>
out.println(&amp;quot;&amp;lt;p align='center'&amp;gt;&amp;lt;a href='main.html' target='_top'&amp;gt;请进&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;&amp;quot;);<br>
}<br>
else
<br>
{<br>
out.println(&amp;quot;&amp;lt;center&amp;gt;&amp;lt;font color='red' size='2'&amp;gt;用户名相同&amp;quot;);<br>
out.println(&amp;quot;&amp;lt;a href='login.html'&amp;gt;重新申请ID&amp;lt;/a&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/center&amp;gt;&amp;quot;);<br>
}<br>
%&amp;gt;</p>
<p>&amp;lt;%<br>
if (boolcanlogin==true)<br>
{<br>
//用一个哈希表来记录用户在聊天室呆的时间<br>
Hashtable userLife=(Hashtable)getServletContext().getAttribute(&amp;quot;userLife&amp;quot;);<br>
//用一个哈希表记录在聊用户的IP地址<br>
Hashtable userIP=(Hashtable)getServletContext().getAttribute(&amp;quot;userIP&amp;quot;);<br>
//取得用户登录时间<br>
Date userTime=new Date();<br>
//记录用户登录时间<br>
userLife.put((String)session.getValue(&amp;quot;username&amp;quot;),new Long(userTime.getTime()));<br>
//记录用户IP地址<br>
userIP.put((String)session.getValue(&amp;quot;username&amp;quot;),request.getRemoteAddr());<br>
getServletContext().setAttribute(&amp;quot;userLife&amp;quot;,userLife);<br>
getServletContext().setAttribute(&amp;quot;userIP&amp;quot;,userIP);<br>
}<br>
%&amp;gt;<br>
&amp;lt;body&amp;gt;</p>
<p>&amp;lt;/body&amp;gt;<br>
&amp;lt;/html&amp;gt;</p>
 
这个问题小天说的不对。
这和server的设计有关。
比如WebSphere2.x是enable这个功能的,到了3.x反而没有了,我认为是IBM重视安全性的结果,不想
因为一时的错误让hacker得到有用的信息。
如果你用IBM的WebSphere Studio,也会给你错误信息。
jrun就会报告错误信息。
如果是编译错误,可以在server的stdout.log文件中找到。
具体的文件名要看各个server的设计。
 
后退
顶部