Hi,
I develop a web application under ECLIPSE with servlet, jsp, EJB, JBOSS.
From a class of my application or from a servlet, I want to redirect an error towards a JSP page.
Here is my servlet :
public class CreateMessageForumServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
@EJB
private PersonService personService;
/**
* @see HttpServlet#HttpServlet()
*/
public CreateMessageForumServlet() {
super();
// TODO Auto-generated constructor stub
}
protected void sendErrorRedirect(HttpServletRequest request,
HttpServletResponse response, String errorPageURL, Throwable e) throws
ServletException, IOException {
request.setAttribute ("javax.servlet.jsp.jspException", e);
getServletConfig().getServletContext().
getRequestDispatcher(errorPageURL).forward(request, response);
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
try {
HttpSession session = request.getSession(true);
String authentification = request.getParameter("authentification");
String userName = null;
String password = null;
if ("false".equals(authentification)) {
userName = request.getParameter("userName");
password = request.getParameter("password");
List<Person> personList = personService.getPersonByUserNameAndPassword(userName, password);
if (personList.size()!=1) {
throw new CustomisedException("Il n'y a pas d'utilisateur correspondant à cet identifiant et à ce mot de passe");
}
session.setAttribute("userName",userName);
session.setAttribute("password",password);
}
userName = (String)session.getAttribute("userName");
password = (String)session.getAttribute("password");
if (userName==null || password==null) {
request.setAttribute("authentification","false");
getServletContext().getRequestDispatcher("/jsp/authentification.jsp")
.forward(request, response);
} else {
getServletContext().getRequestDispatcher("/jsp/createForumMessage.jsp")
.forward(request, response);
}
} catch (Exception ex) {
try {
sendErrorRedirect(request,response,"/jsp/errorPage.jsp",ex);
} catch (Exception e) {
e.printStackTrace();
}
}
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request,response);
}
}
I found this code on internet and normally, it should redirect my "CustomisedException" towards my JSP error page "errorPage.jsp" that follows :
<%@ page isErrorPage="true" %>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ include file="taglibs.jsp" %>
<!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>Error Page</title>
<link rel="stylesheet" type="text/css" href="css/error.css" media="screen" title="Styles de la page error.jsp" />
</head>
<body>
<p>ca passe</p>
<div class="error_frame">
<!--${requestScope.exception.message}-->
</div>
</body>
</html>
But, when this exception is thrown, my browser displays the following error page :
Etat HTTP 500 -
type Rapport d'exception
message
description Le serveur a rencontr� une erreur interne () qui l'a emp�ch� de satisfaire la requ�te.
exception
exception.CustomisedException: Il n'y a pas d'utilisateur correspondant à cet identifiant et à ce mot de passe
servlet.CreateMessageForumServlet.doGet(CreateMessageForumServlet.java:59)
servlet.CreateMessageForumServlet.doPost(CreateMessageForumServlet.java:89)
javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
note La trace compl�te de la cause m�re de cette erreur est disponible dans les fichiers journaux de JBoss Web/2.1.2.GA.
JBoss Web/2.1.2.GA
I don't understand why I am not redirected towards my error page "errorPage.jsp" !!! Can anybody help me ? Thanks in advance.