Spring MVC重定向失败

Spring MVC重定向失败,spring,jsp,spring-mvc,Spring,Jsp,Spring Mvc,我想用Spring MVC+Mybatis做一个登录页面,控制器如下: @Controller public class LoginController { private final UserService userService; @Autowired public LoginController(@Qualifier("userService") UserService userService) { this.userService = userService; } @Requ

我想用Spring MVC+Mybatis做一个登录页面,控制器如下:

@Controller
public class LoginController {
private final UserService userService;

@Autowired
public LoginController(@Qualifier("userService") UserService userService) {
    this.userService = userService;
}

@RequestMapping(value = "/login")
public ModelAndView Login(String username, String password, 
                          ModelAndView mv, HttpSession session) {
    User user = userService.login(username, password);

    // **This is where problems occured**
    if (user != null) {
        session.setAttribute("user", user);
        mv.setView(new RedirectView("/main"));
    } else {
        mv.addObject("message","Login failed.");
        mv.setViewName("loginForm");
    }
    return mv; // with correct value, but responses 404 error
}

@RequestMapping(value = "/loginForm")
public String LoginForm() {
    return "loginForm";
}

@RequestMapping(value = "/main")
public String Main(Model model) {
    return "main";
}
}
我有两个jsp文件:

/WEB-INF/jsp/loginForm.jsp
/WEB-INF/jsp/main.jsp
无论我是否正确提交登录表单,都会出现404错误:

HTTP Status 404 - /WEB-INF/jsp/login.jsp
在调试模式下运行时,mv返回的“/main”正确,因此我感到困惑

下面的代码可以工作,但我不能再添加错误消息来查看了

@RequestMapping(value = "/login")
public String Login(String username, String password, HttpSession session) {
    User user = userService.login(username, password);
    if (user != null) {
        session.setAttribute("user", user);
        return "redirect:/main";
    } else {
        session.setAttribute("message","Login failed");
        return "redirect:/loginForm";
    }
}

我也面临同样的问题,但这对我有帮助

ModelAndView model = new ModelAndView();
 if (user != null) {
        session.setAttribute("user", user);
        model = new ModelAndView("/main");
    } else {
        mv.addObject("message","Login failed.");
        model = new ModelAndView("/loginForm");
    }
return model;

您使用的是哪种Spring配置,基于XML还是基于Java?已解决,谢谢,原因是一个空参数。我知道这是有效的,我代码中的参数mv是空的