Estoy desarrollando una java servlet. Yo estoy usando el servidor glassfish 4.

Los usuarios finales son el envío de información a través de la URL parametars, algo como esto:

http://myIP:8080/TestProject/TestServlet?param1=test1&param2=test2&param3=test3

Me estoy poniendo de los valores de param1, param2 y param3 y quiero escribir en mi base de datos. Si puedo obtener una excepción de SQL al escribir la información en mi db quiero tirar «500 Error Interno del Servidor» para hacerles saber que tengo algunos problemas técnicos y volver a enviar su solicitud. Lo que quiero saber es que hay un defecto de forma para hacer esto, algunas de estado, visualización de texto …?

Aquí está el código:

@WebServlet(urlPatterns = {"/TestServlet"}, initParams = {
@WebInitParam(name = "param1", value = ""),
@WebInitParam(name = "param2", value = ""),
@WebInitParam(name = "param3", value = "")})
public class TestServlet extends HttpServlet {
String param1;
String param2;
String param3;
boolean dbOK;
/**
* Processes requests for both HTTP
* <code>GET</code> and
* <code>POST</code> methods.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//Get parametars from the request
param1 = request.getParameter("param1");
param2 = request.getParameter("param2");
param3 = request.getParameter("param3");
//Input in db
dbOK = Database.saveParams(param1,param2,param3);
//Print response
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
/* TODO output your page here. You may use following sample code. */
out.println("<!DOCTYPE html>");
out.println("<html>");
out.println("<head>");
out.println("<title>T-Mobile Interface</title>");            
out.println("</head>");
out.println("<body>");
out.println("<h1> dbOK=" + dbOK + "</h1>");
out.println("</body>");
out.println("</html>");
} finally {            
out.close();
}
}
//<editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
/**
* Handles the HTTP
* <code>GET</code> method.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
/**
* Handles the HTTP
* <code>POST</code> method.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
/**
* Returns a short description of the servlet.
*
* @return a String containing servlet description
*/
@Override
public String getServletInfo() {
return "Short description";
}//</editor-fold>
}
  • Proporcionar útiles, legible la información en su lugar.
  • No estoy de acuerdo con Dave a todos. Si las personas que llaman están en la espera de una aplicación de nivel de error, enviar 5xx por la especificación.
InformationsquelleAutor AdrianES | 2013-12-25

2 Comentarios

  1. 3

    Usted debe ser capaz de hacer eso con response.sendError(int)

    EDIT: Estaba destinado a decir que el parámetro es el código de error que desea enviar, por lo que en su caso 500.

    • Cuando se envía un error 5xx probablemente, usted debe enviar una cadena descriptiva; así
  2. 1

    AFAIK ServletException se traduce en el Error 500 así. Pero normalmente se establezca el estado sobre la respuesta y redirigir (despachos) a JSP, que contiene su página de error personalizada. Puede establecer los atributos de petición para personalizar JSP contenido.

    req.setAttribute("MY_ERROR", "Database request failed");
    resp.setStatus(HttpServletResponse.SC_ERROR);
    ServletContext context = getServletContext();
    RequestDispatcher dispatcher = context.getRequestDispatcher("/error.jsp");
    dispatcher.forward(req, resp);

Dejar respuesta

Please enter your comment!
Please enter your name here