我的 Tomcat7 部署发生了一些真正奇怪的事情。要么这样,要么我太累了。这里是瘦...
我有一个非常简单的 Tomcat7 webapp,我正在通过 Eclipse(Juno) 开发它。我的一个 JSP 文件包含一个表单。提交表单时,servlet 查询数据库并通过 session.setAttribute 将两个参数返回给同一个 jsp。
一切正常,但如果我开始使用 servlet,我会突然在 JSP 页面上收到 HTTP 500 错误。我能够解决它的唯一方法是经历一个奇怪的仪式,从 JSP 中删除所有与 Java 相关的内容,然后慢慢添加并刷新。我不知道这是 Tomcat 问题、Servlet 问题、Firefox 问题还是上述问题的某种组合。
为清楚起见,这里有一些代码片段:
JSP代码:
<html>
...
<body>
<script type='text/javascript'>
var searchResults = '<%= ((String[][])session.getAttribute("searchResults")).length %>';
var additionalResults = '<%= session.getAttribute("additionalResults") %>';
...
</script>
...
</body>
</html>
Tomcat错误:
org.apache.jasper.JasperException: An exception occurred processing JSP page /test.jsp at line 32
30: <body>
31: <script type='text/javascript'>
32: var searchResults = '<%= ((String[][])session.getAttribute("searchResults")).length %>';
33: var additionalResults = '<%= session.getAttribute("additionalResults") %>';
34:
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:568)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:470)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
root cause
java.lang.NullPointerException
org.apache.jsp.test_jsp._jspService(test_jsp.java:93)
我知道数据库正在返回正确的值,所以第 32 行不应该抛出异常或 NullPointer。第 93 行很简单:
<div id="wrapper">
当第 32 行被注释掉时,我什至得到 Tomcat 错误?!?!
为了尝试调试,我将脚本标记的内容简化为:
alert('<%= session.getAttribute("searchResults") %>');
并编辑了我的 servlet 以阅读:
public class MyServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String redirectedPage = "/test.jsp";
request.getSession().setAttribute("searchResults", "Bob");
RequestDispatcher reqDispatcher = getServletConfig().getServletContext().getRequestDispatcher(redirectedPage);
reqDispatcher.forward(request,response);
}
}
但生成的弹出窗口显示“null”。我也尝试过多次以不同的顺序重新启动 MySQL 和 Tomcat。
所以我完全不知道发生了什么。任何投入将不胜感激。