簡體   English   中英

從Spring MVC中的控制器操作重定向到JSP文件

[英]Redirect to a JSP file from controller action in Spring MVC

在我的spring mvc應用程序中,我具有以下登錄表單:

<!--LOGIN FORM-->
<form name="login-form" class="login-form" action="usuario_login.html" method="post">

    <!--HEADER-->
    <div class="header">
    <!--TITLE--><h1>Login Form</h1><!--END TITLE-->
    <!--DESCRIPTION--><span>Fill out the form below to login to my super awesome imaginary control panel.</span><!--END DESCRIPTION-->
    </div>
    <!--END HEADER-->

    <!--CONTENT-->
    <div class="content">
    <!--USERNAME--><input name="username" type="text" class="input username" value="Username" onfocus="this.value=''" /><!--END USERNAME-->
    <!--PASSWORD--><input name="password" type="password" class="input password" value="Password" onfocus="this.value=''" /><!--END PASSWORD-->
    </div>
    <!--END CONTENT-->

    <!--FOOTER-->
    <div class="footer">
    <!--LOGIN BUTTON--><input type="submit" name="submit" value="Login" class="button" /><!--END LOGIN BUTTON-->
    </div>
    <!--END FOOTER-->

</form>

使用以下方法在DispatcherServlet中配置usuario_login.html頁面:

@RequestMapping(value="/usuario_login", method=RequestMethod.POST)
    public ModelAndView usuario_login(@RequestParam("username") String username, @RequestParam("password") String password) {
        UsuarioDAO usuario = new UsuarioDAO(username, password);
        if(usuario.getUsuario() == null) {
            String message = "oops! n&atilde;o foi possivel efetuar o login. Confira seu login e senha e tente novamente.";
            return new ModelAndView("","message",message);
        }
        else {
            this.sessao = new Sessao(usuario.getUsuario());
            return new ModelAndView("usuario_start","usuario",usuario.getUsuario());
        }
    }

我的問題是:如果登錄失敗(條件usuario.getUsuario()== null ,我如何重定向到放置登錄表單的文件index.jsp?我想發送一條消息來解釋這種情況,要顯示在此頁面中也是如此。

我強烈建議為此使用Spring Security,這很容易實現。 在這里看看: Spring Security

不過,您想做的事可以由我做

new ModelAndView("redirect:YOUR_REQUEST_MAPPING_HERE");

另外,對於該消息,我建議您看一下重定向屬性

從上面的鏈接:

 @RequestMapping(value = "/accounts", method = RequestMethod.POST)
 public String handle(Account account, BindingResult result, RedirectAttributes redirectAttrs) {
   if (result.hasErrors()) {
     return "accounts/new";
   }
   // Save account ...
   redirectAttrs.addAttribute("id", account.getId()).addFlashAttribute("message", "Account created!");
   return "redirect:/accounts/{id}";
 }

重定向后,Flash屬性會自動添加到提供目標URL的控制器模型中。

這意味着對於上面的示例,您可以通過執行$ {message}在JSP中顯示消息,因為將帶有名稱message的變量添加到了模型中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM