Versão atual:

Tratar exceção para mostrar WEB

Amigos estou montando uma aplicação e queria uma forma mais elegante de mostra o s erro para usuário

criei um servlet para mapear os erros e jogar na tela, mais não sei como chamar esse servlet

montei no web.xml mais não ta caindo na servlet:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    id="WebApp_ID" version="3.0">
    <display-name>ControlePedidos</display-name>

    <welcome-file-list>
        <welcome-file>cadastro/menu.jsp</welcome-file>
    </welcome-file-list>

    <error-page>
        <error-code>500</error-code>
        <location>/erroPage/erro.jsp</location>
    </error-page>

    <error-page>
        <error-code>404</error-code>
        <location>/erroPage/erro.jsp</location>
    </error-page>

    <error-page>
        <exception-type>br.com.acme.cadastro.excecoes.DaoException</exception-type>
        <location>/erroPage/errorServlet</location>
    </error-page>

</web-app>

SEVLET

package br.com.acme.cadastro.controle;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet(urlPatterns = {"/errorServlet"})
public class ErrorController extends HttpServlet {

    private static final long serialVersionUID = 1L;

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {



        Throwable throwable = (Throwable) request.getAttribute("javax.servlet.error.exception");
        Integer statusCode = (Integer) request.getAttribute("javax.servlet.error.status_code");

        request.setAttribute("errorType", throwable);
        request.setAttribute("statusCode", statusCode);


        RequestDispatcher requestDispatcher = request.getRequestDispatcher("/errorServlet.jsp");
        requestDispatcher.forward(request, response);

    }

    @Override
    protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }



}
package br.com.acme.cadastro.excecoes;


public class MostraErro extends RuntimeException {  

    private static final long serialVersionUID = 1L;

    Throwable throwable;  

    private MostraErro(Throwable t) {  
        this.throwable = t;  
    }  

    /** Wraps another exeception in a RuntimeException. */  
    public static RuntimeException wrap(Throwable t) {  
        if (t instanceof RuntimeException)  
            return (RuntimeException) t;  
        return new MostraErro(t);  
    }  

    public static DaoException erro(DaoException e){
        e.getStackTrace();
        return e;

    }

    public Throwable getCause() {  
        return this.throwable;  
    }  

    public void printStackTrace() {  
        this.throwable.printStackTrace();  
    }  
}
package br.com.acme.cadastro.controle;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import br.com.acme.cadastro.cliente.ProdutosNegocio;
import br.com.acme.cadastro.entidade.ProdutosEntidade;
import br.com.acme.cadastro.entidade.UnidadeProdutoEntidade;
import br.com.acme.cadastro.excecoes.CampoVazioException;
import br.com.acme.cadastro.excecoes.DaoException;
import br.com.acme.cadastro.excecoes.MostraErro;

@WebServlet(urlPatterns={"/CadProdutos"})
public class CadastroPedidosControle extends HttpServlet {


    private static final long serialVersionUID = 1L;

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
        doPost(request, response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        try {

            ProdutosEntidade objProdutos = new ProdutosEntidade();
            objProdutos.setDescricao(request.getParameter("produto"));
            objProdutos.setPrecoCompra(Double.parseDouble(request.getParameter("precoC").replace(",", ".")));
            objProdutos.setPrecoVenda(Double.parseDouble(request.getParameter("precoV").replace(",", ".")));

            objProdutos.setUnidade(new UnidadeProdutoEntidade());
            objProdutos.getUnidade().setId(Long.parseLong(request.getParameter("cmbUnidade")));


            ProdutosNegocio prodNegocio = new ProdutosNegocio();
            prodNegocio.salvar(objProdutos);

            RequestDispatcher rd = request.getRequestDispatcher("cadastro/respostaCadastro.jsp");
            rd.forward(request, response);

        } catch (DaoException e) {
            throw MostraErro.erro(e);
        } catch (NumberFormatException e) {
            e.printStackTrace();
        } catch (CampoVazioException e) {
            e.printStackTrace();
        }

        response.sendRedirect("/ControlePedidos/errorServlet?acao=erroBanco");

    }

}

Versão(1):

Ver a versão formatada

Tratar exceção para mostrar WEB

Comentário

new question