Skip to Main Content

Java EE (Java Enterprise Edition) General Discussion

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

redirect an exception towards a JSP page from a servlet

843842Jul 10 2009 — edited Jul 10 2009
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.
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Aug 7 2009
Added on Jul 10 2009
1 comment
960 views