spring controller的返回值有关问题

spring controller的返回值问题
我在spring的配置文件中已经指定了表现层的前后缀
    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
     <property name="prefix">
     <value>/</value>
     </property>
     <property name="suffix">
     <value>.jsp</value>
     </property>
    </bean>
为什么在controller中return "login";能够正常访问
而return "redirect:/login";却404
改成return "redirect:/login.jsp";后又能访问了。
这是为什么?
------解决思路----------------------
当返回的 String 参数是 redirect或者forward 开头时,相当于告诉spring mvc 这个并不是真正的视图页面,而是新请求的url。
拿你例子来说,如果当前请求url为: /test/index,那么请求将重定向为/test/login。 (注意这里还有一个相对路径和绝对路径的问题,也就是"redirect:/login" 和 "redirect:login"是否等同我记不清楚了

然而你可能并没有一个/test/login的处理方法,所以就404了。
而如果重定向的url为/test/login.jsp时情况又有所不同,因为spring mvc发现你没有/test/login.jsp的处理器时会去项目中对应位置(跟请求路径一致)寻找login.jsp文件, 而你有这个文件于是显示正确了。 这种情况必须是.jsp文件放在项目跟目录下才行,如果放置在WEB-INF下一样是404。你可以测试验证一下。

以上是以前springmvc的一点使用经验,可能并不正确(我没有测试过),希望对你有帮助。
------解决思路----------------------
return "login";表示controller返回一个视图,也就是你的login.jsp
redirect:/login表示重定向到"/login"这个请求,相当于会去找你的controller里面是否有@RequestMapping("/login")这样的响应方法。
应该是你并没有这样的controller请求路径。所以会报404.