如何在不更改网址的情况下重定向到相同的jsp

时间:2016-07-14 15:57:03

标签: spring model-view-controller

我有登录应用程序我正在检查用户名是否可用,如果它不可用,那么它将重定向到login.jsp并在login.jsp中显示消息,否则移动到index.jsp.but如果我给错了用户名和密码然后每次它每次都将控制器附加到url,即两次验证检查,两次控制器将被添加,即 http://localhost/cms/controller/controller/secureuserlogin

我不想要,我也不想改变网址格式,即/controller/*。重定向到同一页面时如何重定向而不更改URL?这是我的代码:

code

1 个答案:

答案 0 :(得分:1)

链接到您的示例代码的png并不是很好。 SO具有语法高亮功能,因此最好将代码粘贴到代码块中或使用像pastebin这样的东西。

无论如何,回答......

选项A

您可以使用RedirectView更多地控制重定向,但我认为您遇到的问题是因为您的控制器没有映射到重定向。

尝试:

// Returns login page
@RequestMapping(value = "/login", method = RequestMethod.GET)
public ModelAndView login() {
    ModelAndView modelAndView = new ModelAndView("views/login");
    return modelAndView;
}

// Handles login submittion
@RequestMapping(value = "/loginSubmit", method = RequestMethod.POST) {
public String loginSubmitController(@Valid UserModel user, BindingResult bindingResult) {

    RedirectView view;

    // In production you would want to actually present errors to user
    if(!bindingResult.hasErrors() && validUserCredentials(user)) {
        return "redirect:/index";
    }

    return "redirect:/login";
}

您的JSP应该POST/loginSubmit

选项B

如果您计划使用非常标准的SOAP类式的身份验证(因此在POST和重定向上具有页面重新加载的登录页面),那么使用现有框架可能更容易(如果您已经在使用Spring,那么就像Spring Security一样)

当然,考虑到这一点,如果您需要更多自定义内容,这些框架可能会成为障碍,您很容易陷入与框架作斗争的陷阱,而不是帮助您。

如果您热衷于使用Spring Security框架,请尝试this quickstart guide。当然还有许多其他类似的框架,有些可能更适合您的用途,或者更简单;)比其他框架更好。

相关问题