在Spring MVC中从控制器调用Jsp页面


问题内容

我是Spring
MVC的新手。我有contoller捕获异常,捕获异常后,我想重定向到error.jsp页面并显示异常消息(ex.getMessage())。我不想使用Spring的Exception
Handler,而是必须以编程方式重定向到error.jsp。

@RequestMapping(value = "http/exception", method = RequestMethod.GET)
public String exception2()
{
    try{
        generateException();
    }catch(IndexOutOfBoundsException e){
        handleException();
    }
    return "";
}

private void generateException(){
    throw new IndexOutOfBoundsException();      
}

private void handleException(){

    // what should go here to redirect the page to error.jsp
}

问题答案:

我不确定为什么String要从方法中返回。Spring MVC中的标准是为带有注解的方法@RequestMapping返回a
ModelAndView,即使您没有使用Spring的Exception
Handler。据我所知,如果不返回ModelAndView某个位置,就无法将客户端发送到error.jsp
。如果您需要帮助来理解Spring控制器的基本概念,我发现本教程展示了如何在Spring MVC中创建一个简单的“ Hello
World”应用程序,并且它是一个简单的Spring控制器的很好的例子。

如果您希望您的方法在遇到异常时返回错误页面,而在其他情况下返回正常页面,则可以执行以下操作:

@RequestMapping(value = "http/exception", method = RequestMethod.GET)
public ModelAndView exception2()
{
    ModelAndView modelAndview;
    try {
        generateException();
        modelAndView = new ModelAndView("success.jsp");
    } catch(IndexOutOfBoundsException e) {
        modelAndView = handleException();
    }
    return modelAndView;
}

private void generateException(){
    throw new IndexOutOfBoundsException();      
}

private ModelAndView handleException(){
     return new ModelAndView("error.jsp");
}