处理servlet中的异常

时间:2014-04-09 19:57:20

标签: java jsp servlets

我正在完成我的任务。这是相当直接的。将包含单个输入的HTML表单提交给Servlet,该Servlet抓取参数,基于参数创建消息,将消息作为属性添加到请求,并使用requestdispatcher转发到jsp以显示消息。

我要求如果参数丢失,我需要显示错误页面。问题是我无法显式检查null,或使用try / catch块。我的猜测是,目标是在web.xml页面中定义一个错误页面来处理某种类型的错误,但问题是,如果我无法检查请求参数是否为null,或者使用try / catch ,我怎么知道是否需要抛出异常?有什么想法吗?

4 个答案:

答案 0 :(得分:0)

在web.xml中,您可以指定错误页面,如下所示。
我们假设您要捕获HTTP400,500和例外:

<error-page>
    <error-code>400</error-code>
    <location>/errorpage.html</location>
</error-page>
<error-page>
    <error-code>500</error-code>
    <location>/errorpage.html</location>
</error-page>

(由Arjit建议)

<error-page>  
   <exception-type>java.lang.Exception</exception-type>  
   <location>/errorpage.html</location>  
</error-page>

然后按照DeveloperWJK的建议将它们放在servlet中:

public void doGet(HttpServletRequest request, HttpServletResponse  response) throws IOException, ServletException, NullPointerException
{
       String param = request.getParameter("param");
       if(param.equals("x"))
       {
          response.sendRedirect("x.jsp");
          return;
       }
}

答案 1 :(得分:0)

如果您打算基于参数创建消息,那么如果您无法检查参数值(例如,为null),则有点难以看到如何实现此目的。大概是你打电话......

HttpServletRequest.getParameter()

返回参数值,如果缺少参数,则返回null。

答案 2 :(得分:0)

web.xml中,您也可以提及例外情况。

<error-page>  
  <exception-type>java.lang.Exception</exception-type>  
  <location>/error.jsp</location>  
</error-page>  

或者您可以从此链接获取帮助以创建新的servlet来处理错误。 Servlet Exception Handling

答案 3 :(得分:0)

通常要检查null,你会这样做:

       String param = request.getParameter("param");
       if(param!=null)

如果他们不希望你这样做,可能他们希望你使用DOT操作符来导致NullPointerExpection

public void doGet(HttpServletRequest request, HttpServletResponse  response) throws IOException, ServletException, NullPointerException
{
       String param = request.getParameter("param");
       if(param.equals("x"))
       {
          //if param was null, simply using 
          //the DOT operator on param would throw
          // the NullPointerExpection
          response.sendRedirect("x.jsp");
          return;
       }
    }

为了避免显式检查null并避免NullPointerExpection,你可以这样做:

 if("x".equals(param))