这可能吗?
@Controller
@RequestMapping("/login")
public class LoginController {
@RequestMapping("/")
public String loginRoot() {
return "login";
}
@RequestMapping(value="/error", method=RequestMethod.GET)
public String loginError() {
return "login-error";
}
}
访问localhost:8080/projectname/login
时遇到404错误,但localhost:8080/projectname/login/error
没有。
这是我的web.xml 项目名称
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<servlet>
<description></description>
<servlet-name>projectname</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>projectname</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
答案 0 :(得分:26)
您不需要方法映射中的/
。只需将其映射到""
。
答案 1 :(得分:11)
你不需要&#34; /&#34;你还需要添加请求方法。
@RequestMapping(method = RequestMethod.GET)
public String loginRoot() {
return "login";
}
考虑使用spring mvc测试来简化测试这些场景的过程:
https://spring.io/blog/2012/11/12/spring-framework-3-2-rc1-spring-mvc-test-framework
答案 2 :(得分:6)
是的,这是可能的。 方法@RequestMapping
中的路径相对于类注释上的路径。
根据您当前的设置,loginRoot()
将处理
localhost:8080/projectname/login/
假设您的配置中没有其他任何内容阻止此操作。