Spring MVC中的基本视图分辨率

Spring MVC中的基本视图分辨率,spring,spring-mvc,Spring,Spring Mvc,我只是想了解一下SpringMVC框架,所以我是新手,请原谅这个基本问题。但我想弄清楚视图解析器是如何工作的 我创建了一个基本控制器方法来添加如下用户: @RequestMapping(value = "/add", method = RequestMethod.POST) public String addUser(@ModelAttribute("user") User user, BindingResult result) { logger.entry(user,

我只是想了解一下SpringMVC框架,所以我是新手,请原谅这个基本问题。但我想弄清楚视图解析器是如何工作的

我创建了一个基本控制器方法来添加如下用户:

 @RequestMapping(value = "/add", method = RequestMethod.POST)
    public String addUser(@ModelAttribute("user") User user, BindingResult result) {
        logger.entry(user, result);
        userRepository.save(user);

        String returnString="redirect:members/confirmation";
        logger.exit(returnString);
        return returnString;
    }
我希望它重定向到WEB-INF/pages文件夹下的members/confirmation.jsp页面。它只是一个简单的JSP,上面写着“感谢注册”。重定向是不允许表单重复过帐的。(这只是一个基本的测试应用程序)

我在mvc-dispatcher-servlet.xml配置文件中配置了internalviewresolver:

 <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/pages/"/>
        <property name="suffix" value=".jsp"/>
        <property name="order" value="0"/>
    </bean>

但它没有解析为确认视图,只有404

我错过了什么

谢谢

Rich

返回
“重定向:成员/确认”
会将客户端重定向到
成员/确认
(此相对URL)。您的应用程序目前不响应发送给
成员/确认
的HTTP请求。使用目标JSP页面作为视图,为此URI创建控制器:

@RequestMapping(value = "/members/confirmation", method = RequestMethod.GET)
public String confirmation() {

     return "members/confirmation";
}

这是唯一正确的方法。

另外,如果我去掉重定向前缀,它可以正常工作。您正在确认重定向和转发。重定向意味着向浏览器发送响应,要求它将请求发送回另一个位置。你想要的是前锋。不要使用重定向:prefix.redirect是停止重复表单提交问题的推荐方法,对吗?POST-REDIRECT-GET模式确实是一个很好的实现方法。但是,您必须重定向到可从外部访问的资源的URL,而不是视图。
重定向后的路径:
前缀必须是指向某个控制器方法的路径,可使用GET请求访问:创建用户后,重定向到允许列出所有用户的URL,或重定向到允许查看创建的用户详细信息的URL。ok,有没有一种方法可以通过约定而不是编写控制器方法来整洁地解析到jsp的路径?因此,如果我在GET上请求“/users/confirmation”,它将自动解析为“/users/confirmation.jsp”。(我一直在使用Rails,它在这些类型的约定方面非常出色)