Java SpringMVC:请求映射类和方法
这可能吗Java SpringMVC:请求映射类和方法,java,spring,spring-mvc,request-mapping,Java,Spring,Spring Mvc,Request Mapping,这可能吗 @Controller @RequestMapping("/login") public class LoginController { @RequestMapping("/") public String loginRoot() { return "login"; } @RequestMapping(value="/error", method=RequestMethod.GET) public String loginEr
@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>
org.springframework.web.context.ContextLoaderListener
上下文配置位置
/WEB-INF/applicationContext.xml
项目名称
org.springframework.web.servlet.DispatcherServlet
项目名称
/
是的,这是可能的方法上的@RequestMapping
中的路径相对于类注释上的路径。
在当前设置中,loginRoot()
将处理对的请求
localhost:8080/projectname/login/
假设您的配置中没有任何其他东西可以阻止这种情况。您不需要方法映射中的
/
。只需将它映射到”
,您不需要“/”,还需要添加请求方法
@RequestMapping(method = RequestMethod.GET)
public String loginRoot() {
return "login";
}
考虑使用spring mvc测试来简化这些场景的测试过程:
我也这么认为,但是我在访问
localhost:8080/projectname/login
时遇到了404错误,我不知道为什么,我错过了什么吗?你的“error.JSP”目录中有一个名为“login.JSP”的JSP吗?@orvyl它对我有用。我们可以查看您的web.xml和servlet上下文配置吗?您的映射可能不同,并阻止了这种情况。@SotiriosDelimanolis您使用的是哪种Spring版本?我在4.0.0.RELEASE中遇到了一个非常类似的问题,并使用一个空映射字符串修复了它。请注意,该问题的URL上没有尾随斜杠,而您的URL上有。@chrylis我在4.0.2上。这种行为至少从3.1,iirc开始就存在。我建议他们从使用/login
改为使用/login/
请求到达处理程序。同样,这可能是配置其余部分的问题。这将起作用,因为“
将与”/login“
相关,所以仍然是/login
。只需运行一个快速测试,在您的情况下,您只需使用@RequestMapping即可。请求方法默认为GET。@BineshGunaratne请求方法默认为not GET。如果省略方法
属性,所有请求方法都将匹配。