JSP Forward отправляет запрос экспедитору - PullRequest
0 голосов
/ 20 марта 2012

У меня есть файл .jsp, который получает запрос и проверяет параметры запроса. В том же каталоге, что и этот файл JSP, находится файл error.jsp, который должен выполнять обработку ошибок. Если параметры нулевые, я хочу переслать запрос в файл error.jsp как в:

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="ISO-8859-1"%>

<html>
  <head></head>
<body></body>
<% 
request.setCharacterEncoding("UTF-8");
String uid = request.getParameter("uid");
String procName = request.getParameter("procName");
//param check
if(uid == null || procName == null){ %>
<jsp:forward page="error.jsp"/> 
<% }%>
</html>

Однако это не работает. После прямой линии я снова отправляю запрос в тот же JSP вместо error.jsp. В конце концов я получаю StackOverflowException из-за цикла на сервере.

Если вместо JSP: forward я использую response.sendRedirect (), как в:

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="ISO-8859-1"%>
<html>
<head></head>
<body></body>
<% 
request.setCharacterEncoding("UTF-8");
String uid = request.getParameter("uid");
String procName = request.getParameter("procName");

//param check
if(uid == null || procName == null){
response.sendRedirect("error.jsp");
}%>
</html>

все отлично работает. Почему jsp: forward не работает? Согласно этому сайту и API у меня установлены правильные теги.

PS .: JSP развернуты в JBoss AS с версией 4.0.5 GA.

1 Ответ

0 голосов
/ 23 марта 2012

Прочитайте трассировку стека StackOverflowError и обратите внимание на повторяющийся паттерн.Проверьте, не задействовано ли пользовательское Filter, которое постоянно перехватывает перенаправленный запрос, и исправьте код или конфигурацию Filter соответствующим образом, чтобы он больше этого не делал.Например, удалите <dispatcher>FORWARD</dispatcher> из конфигурации или установите некоторый атрибут запроса, который указывает, что Filter уже выполнил задание.

И последнее, но не менее важное: вам не следует использовать файл JSP в качествефронт-контроллер, но сервлет.Для новых идей вы можете найти полезные примеры на нашей вики-странице сервлетов .Он также охватывает базовую проверку и обработку ошибок.

...