当前位置: 首页 > 知识库问答 >
问题:

将错误处理从JSP替换为Servlet

翟淇
2023-03-14

我的JSP脚本中有这段代码

<%@ page errorPage ="error.jsp"%>
<%!
  ...My JSP Code... //No matter for this question
%>

我的错误。jsp脚本是:

<%@ page isErrorPage = "true"%>
<% if (exception != null) { %>
  The cause of the exception error has been: 
        <% exception.printStackTrace(new java.io.PrintWriter(out)); %>
<% } %>

比如:http://www.tutorialspoint.com/jsp/jsp_exception_handling.htm

但我想替换servlet之前的所有代码。。。

正如你所见。。。

我需要翻译

error.jsp完全...例如如何翻译这个:

对不起,但是我不知道怎么做...

PD:我在寻找我的问题,但网站告诉我需要改变网站。xml文件,我不想这样做,我认为(我的JSP脚本工作得很好,Tomcat servlet转换的也很好,不需要更改该文件)。

共有2个答案

汝吕恭
2023-03-14

嘿,伙计,路易吉·朱塞佩。是的,@mikemil告诉right buddy,你应该只使用try/catch,否则使用该方法显示异常错误,如下代码所示:

package com.jmail.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.");
    }
}

现在,您只会得到这样的错误页面:

GET method is not supported.
齐学文
2023-03-14

嘿,伙计,路易吉·朱塞佩。我想这件事会让你满意的。

在Java web应用程序中定义错误页面的两种方法是使用Servlet和JSP编写的,与您的问题相关。

 1. First way is page wise error page which is defined on each jsp page and if there is any unhanded exception thrown from that page, corresponding error page will be displayed. 

 2. Second approach is an application wide general or default error page which is shown if any Exception is thrown from any Servlet or JSP and there is no page specific error page defined.

HTTP标准错误代码:

 1. Information This one is a new return code which is not 100%
    supported and normally and only provides information to the client
    about the request.

 2. Success response, the request has been correctly executed ->
    expected answer from server (http code 200).

 3. Redirection response. The resource has moved and is not any more at
    this URL.

 4. Error on client side. Probably most known of all is error 404 : Not
    Found.

定义错误。jsp页面,如:

//error.jsp
<%@ page isErrorPage="true"%>
//login.jsp
<%@ page errorPage="error.jsp"%>

Java Web应用程序JSP Servlet页面中的错误页面如下所示:

基于异常的默认错误页面:

<error-page>
        <exception-type>java.lang.Throwable</exception-type>
        <location>/error.htm</location>
</error-page>

基于HTTP错误代码的默认错误页:

<error-page>
    <error-code>500</error-code>
    <location>/internal-server-error.htm</location>
</error-page>
<error-page>
    <error-code>404</error-code>
    <location>/page-not-found-error.htm</location>
</error-page>

创建自定义错误页面:

 1. 400.html -> telling the user did something wrong

 2. 500.html -> telling the server did something wrong

400.html:

<error-page>
        <error-code>400</error-code>
        <location>/404.html</location>
 </error-page>
 <error-page>
        <error-code>401</error-code>
        <location>/404.html</location>
 </error-page>

500.html:

     <error-page>
          <error-code>500</error-code>
          <location>/500.html</location>
       </error-page>
       <error-page>
          <error-code>501</error-code>
          <location>/500.html</location>
       </error-page>
 类似资料:
  • 问题内容: 我是bash脚本的新手,但我不理解为什么它不起作用 第3行的替代替换错误 问题答案: 该替换在Bash 4.2.8中正常工作(并且根据文档看起来还不错)。 我最好的猜测是您实际上并没有使用Bash-您如何调用脚本?如果您正在执行此操作,则可能会与Dash或类似的程序一起运行(Dash确实在第3行给出了替换错误)。尝试使用Bash()显式运行它。 如果事实证明您实际上是在使用Dash,这

  • 问题内容: 请考虑以下情况: 我本来希望有一个允许将错误值(例如that )转换为s的转换的选项。有没有办法做到这一点? 问题答案: 使用[](http://pandas.pydata.org/pandas- docs/stable/generated/pandas.to_numeric.html)与 如果需要填写,请使用。 注意,在可能的情况下,将尝试将浮点型转换为整数。如果不需要,请删除该参数

  • 通过对错误类型实现 Display 和 From,我们能够利用上绝大部分标准库错误处理工具。然而,我们遗漏了一个功能:轻松 Box 我们错误类型的能力。 标准库会自动通过 Form 将任意实现了 Error trait 的类型转换成 trait 对象 Box<Error> 的类型(原文:The std library automatically converts any type that imp

  • 问题内容: 所以我似乎无法弄清楚…我有一句话要说,我希望它成为。我已经尝试了以下所有方法,但似乎都没有效果; 我真的不明白为什么最后一个有效,因为这样可以正常工作: 我在这里想念什么吗? 编辑 我知道\是转义字符。我要在这里执行的操作是将所有内容都 转换为其他内容, 并且替换似乎没有按照我的预期进行。 我希望字符串a看起来像字符串b。但是替换并不能像我想的那样替换斜线。 问题答案: 无需为此使用r

  • 问题内容: 我正在用Python解析文件中的文本。我必须替换所有换行符(\ n), 因为此文本将生成html-content。例如,这是文件中的一些行: 现在我做: 而且我仍然看到带有换行符的文本。 问题答案: 只是踢,你也可以 用替换字符串中的所有换行符。

  • 错误处理(error handling)是处理可能发生失败情况的过程。例如读取一个文件失败,然后继续使用这个失效的输入显然是有问题的。错误处理允许我们以一种显式的方式来发现并处理这类错误,避免了其余代码发生潜在的问题。 有关错误处理的更多内容,可参考官方文档的错误处理的章节。