【问题标题】:how to redirect to same jsp without changing url如何在不更改url的情况下重定向到同一个jsp
【发布时间】:2016-07-14 15:57:03
【问题描述】:

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

我不想也不想更改 url 模式,即 /controller/*.重定向到同一页面时如何在不更改 url 的情况下进行重定向?这是我的代码:

【问题讨论】:

  • 附上真实的源代码,不是图片
  • 您好,如果您最终使用了我的答案,能否将其标记为已接受?

标签: spring model-view-controller


【解决方案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。当然还有许多其他这样的框架,有些可能更适合您的使用,或者比其他的更简单;)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-16
    • 1970-01-01
    • 1970-01-01
    • 2018-07-30
    • 1970-01-01
    • 2012-05-22
    • 2013-10-12
    • 2013-08-11
    相关资源
    最近更新 更多