Что-то действительно странное происходит с моим развертыванием Tomcat7. Либо так, либо я слишком устал. Вот худенькая...
У меня есть очень простое веб-приложение Tomcat7, которое я разрабатываю через Eclipse (Juno). Один из моих файлов JSP включает форму. Когда форма отправлена, сервлет запрашивает базу данных и возвращает два параметра обратно в тот же jsp через session.setAttribute.
Все работает нормально, но если я начну возиться с сервлетом, я внезапно получу ошибку HTTP 500 на странице JSP. Единственный способ, которым я смог решить эту проблему, - это пройти странный ритуал удаления всего контента, связанного с Java, из JSP, а затем медленно добавить его и обновить. Я не могу сказать, является ли это проблемой Tomcat, проблемой сервлета, проблемой Firefox или какой-то комбинацией вышеперечисленного.
Для ясности приведу несколько фрагментов кода:
JSP-код:
<html>
...
<body>
<script type='text/javascript'>
var searchResults = '<%= ((String[][])session.getAttribute("searchResults")).length %>';
var additionalResults = '<%= session.getAttribute("additionalResults") %>';
...
</script>
...
</body>
</html>
Ошибка Томката:
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">
Я даже получаю ошибку Tomcat, когда строка 32 закомментирована?!?!
Чтобы попытаться выполнить отладку, я упростил содержимое тега сценария следующим образом:
alert('<%= session.getAttribute("searchResults") %>');
И отредактировал мой сервлет, чтобы он читал:
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);
}
}
Но результирующее всплывающее окно показывает «ноль». Я также много раз пытался перезапустить MySQL и Tomcat в разном порядке.
Так что я в полной растерянности относительно того, что происходит. Мы будем очень признательны за любой вклад.
session.getAttribute("additionalResults")
не равно null? Кроме того, ссылка на строку 93 относится к сгенерированному классу .java, а не к вашему файлу .jsp. - person quietmint   schedule 21.12.2012