我正在完成我的任务。这是相当直接的。将包含单个输入的HTML表单提交给Servlet,该Servlet抓取参数,基于参数创建消息,将消息作为属性添加到请求,并使用requestdispatcher转发到jsp以显示消息。
我要求如果参数丢失,我需要显示错误页面。问题是我无法显式检查null,或使用try / catch块。我的猜测是,目标是在web.xml页面中定义一个错误页面来处理某种类型的错误,但问题是,如果我无法检查请求参数是否为null,或者使用try / catch ,我怎么知道是否需要抛出异常?有什么想法吗?
答案 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))