我正在做一个学校项目,不知道我哪里出错了。任何帮助表示赞赏。该项目是一个简单的聊天servlet,我们必须能够在我们学校的Tomcat服务器上运行。现在我有一个Servlet和一个JSP。
public class ChatServ extends HttpServlet {
public List chatList;
public boolean stillAlive;
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
stillAlive = true;
chatList = new List();
chatList.add("Hello World!");
request.setAttribute("chatList", chatList);
while(stillAlive){
request.setAttribute("chatList", chatList);
String message = request.getParameter("message");
if (message != null) {
message = message.trim();
if (message.length() != 0) {
chatList.add(message);
}
}
}
}
}
我写的JSP是:
<%@ page import="finalProject.*,java.util.List" language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>My Chat Project</title>
</head>
<body>
<%= request.getParameter("username")%>
<p>
<textarea name="chat" rows="13" cols="60">
<%
try{
List chat = (List) request.getAttribute("chatList");
int start = chat.size()-10;
for (int i=start; i<chat.size(); i++) {
out.println(i + ": " + chat.get(i));
}
}catch(NullPointerException e){
out.println("Try again next time!");
}
%>
</textarea>
</br>
<form action="ChatServ">
Say: <input type="text" name="message" size="60"/>
<br/>
<input type="submit" name="submit" value="Talk/Refresh"/>
</form>
</p>
</body>
</html>
非常感谢任何帮助。现在我从JSP获取一个空指针试图获取List,我无法弄清楚原因。我仍然是网络方面的新手。谢谢!
SEVERE: Servlet.service() for servlet [jsp] in context with path [/FinalProject] threw exception [An exception occurred processing JSP page /chat.jsp at line 19
16: //try{
17: List chat = (List) request.getAttribute("chatList");
18:
19: int start = chat.size()-10;
20: for (int i=start; i<chat.size(); i++) {
21: out.println(i + ": " + chat.get(i));
22: }
Stacktrace:] with root cause
java.lang.NullPointerException
at org.apache.jsp.chat_jsp._jspService(chat_jsp.java:131)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:438)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1096)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:674)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1456)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Unknown Source)