2014-02-28 53 views
2

在我的Spring MVC应用程序,我有以下的登录表单:重定向从控制器动作在Spring MVC的JSP文件

<!--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> 

页usuario_login.html在DispatcherServlet的配置是这样的:

@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,在登录表单放在我想发送消息?解释情况,是也显示在此页面中。

回答

5

我会严格地推荐使用Spring Security来实现这一点,它很容易实现。它到这里看看:Spring Security

不过,你想做可我做

new ModelAndView("redirect:YOUR_REQUEST_MAPPING_HERE");

另外,对于消息做了什么,我会建议考虑看看Redirect Attributes

来自以上链接:

@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属性自动添加到t他是提供目标URL的控制器的模型。

这意味着对于上面的示例,您可以通过执行$ {message}在JSP中显示消息,因为具有名称消息的变量已添加到模型中。

+0

当我使用'return“重定向:/成功”,我有一个'success.jsp'页面,页面被定向到'/ MenuOrder-Admin/success'页面,但它提供了404.请注意,成功页面是在与当前页面相同的目录中。 – viper

相关问题