Xml 关于servlet异常

Xml 关于servlet异常,xml,servlets,Xml,Servlets,web.xml AppExceptionHandler.java package com.journaldev.servlet.exception; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.ht

web.xml


AppExceptionHandler.java

package com.journaldev.servlet.exception;

import java.io.IOException;
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("/MyExceptionServlet")
public class MyExceptionServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        throw new ServletException("GET method is not supported.");
    }

}
package com.journaldev.servlet.exception;
导入java.io.IOException;
导入java.io.PrintWriter;
导入javax.servlet.ServletException;
导入javax.servlet.annotation.WebServlet;
导入javax.servlet.http.HttpServlet;
导入javax.servlet.http.HttpServletRequest;
导入javax.servlet.http.HttpServletResponse;
@WebServlet(“/AppExceptionHandler”)
公共类AppExceptionHandler扩展了HttpServlet{
私有静态最终长serialVersionUID=1L;
受保护的无效数据集(HttpServletRequest请求,
HttpServletResponse响应)引发ServletException,IOException{
processError(请求、响应);
}
受保护的void doPost(HttpServletRequest请求,
HttpServletResponse响应)引发ServletException,IOException{
processError(请求、响应);
}
private void processError(HttpServletRequest请求,
HttpServletResponse(响应)引发IOException{
//分析servlet异常
Throwable-Throwable=(Throwable)请求
.getAttribute(“javax.servlet.error.exception”);
整数状态码=(整数)请求
.getAttribute(“javax.servlet.error.status_code”);
字符串servletName=(字符串)请求
.getAttribute(“javax.servlet.error.servlet_name”);
if(servletName==null){
servletName=“未知”;
}
字符串请求URI=(字符串)请求
.getAttribute(“javax.servlet.error.request_uri”);
if(requestUri==null){
requestUri=“未知”;
}
//设置响应内容类型
response.setContentType(“text/html”);
PrintWriter out=response.getWriter();
填写(“例外/错误详细信息”);
如果(状态代码!=500){
输出。写入(“错误详细信息”);
输出。写入(“状态代码”:“+statusCode+”
”; out.write(“请求的URI:”+requestUri); } 其他的 { 填写(“例外情况详情”); out.写出(“
  • Servlet名称:“+servletName+”
  • ”); out.write(“
  • 异常名称:“+throwable.getClass().getName()+”
  • ”; out.write(“
  • 请求的URI:+requestUri+”
  • ”; out.write(“
  • 异常消息:“+throwable.getMessage()+”
  • ”; 写出“
”; } 写出(“

”); 请写出(“”); 请写出(“”); } }
1) 我面临的问题是,我没有进入Servlet AppExceptionHandler中的processError方法,因此我无法在前端看到异常


因此,请告诉我是哪里出错的。

它在您的服务器日志中显示任何异常吗?不,它在服务器日志中没有显示任何异常。此外,我仍然收到404 not error found,但对于该异常,应调用未调用的异常。请帮助任何人解决我的问题?????大家好,请关于Servlet中的异常帮助我解决问题
package com.journaldev.servlet.exception;

import java.io.IOException;
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("/MyExceptionServlet")
public class MyExceptionServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        throw new ServletException("GET method is not supported.");
    }

}
package com.journaldev.servlet.exception;

import java.io.IOException;
import java.io.PrintWriter;

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("/AppExceptionHandler")
public class AppExceptionHandler extends HttpServlet {
    private static final long serialVersionUID = 1L;

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

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

    private void processError(HttpServletRequest request,
            HttpServletResponse response) throws IOException {
        // Analyze the servlet exception
        Throwable throwable = (Throwable) request
                .getAttribute("javax.servlet.error.exception");
        Integer statusCode = (Integer) request
                .getAttribute("javax.servlet.error.status_code");
        String servletName = (String) request
                .getAttribute("javax.servlet.error.servlet_name");
        if (servletName == null) {
            servletName = "Unknown";
        }
        String requestUri = (String) request
                .getAttribute("javax.servlet.error.request_uri");
        if (requestUri == null) {
            requestUri = "Unknown";
        }

        // Set response content type
          response.setContentType("text/html");

          PrintWriter out = response.getWriter();
          out.write("<html><head><title>Exception/Error Details</title></head><body>");
          if(statusCode != 500){
              out.write("<h3>Error Details</h3>");
              out.write("<strong>Status Code</strong>:"+statusCode+"<br>");
              out.write("<strong>Requested URI</strong>:"+requestUri);
          }
          else
          {
              out.write("<h3>Exception Details</h3>");
              out.write("<ul><li>Servlet Name:"+servletName+"</li>");
              out.write("<li>Exception Name:"+throwable.getClass().getName()+"</li>");
              out.write("<li>Requested URI:"+requestUri+"</li>");
              out.write("<li>Exception Message:"+throwable.getMessage()+"</li>");
              out.write("</ul>");
          }

          out.write("<br><br>");
          out.write("<a href=\"index.html\">Home Page</a>");
          out.write("</body></html>");
    }
}