我有Spring MVC应用程序
如果在web.xml中,我这样写:
<servlet-mapping>
<servlet-name>mvc-dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
我去
http://localhost:8080/Mvc/controllerPath/sayHello
我看到我的页面
如果我写
<servlet-mapping>
<servlet-name>mvc-dispatcher</servlet-name>
<url-pattern>/controllerPath/*</url-pattern>
</servlet-mapping>
我去
http://localhost:8080/Mvc/controllerPath/sayHello
-我看到404我想你明白我想要的。
你能帮我吗?
更新
控制器:
@Controller
@RequestMapping("/controllerPath")
public class MyController {
@RequestMapping("/sayHello")
public String sayHello(Model model){
model.addAttribute("name", "Vasya");
return "hello";
}
}
如果我写
<servlet-mapping>
<servlet-name>mvc-dispatcher</servlet-name>
<url-pattern>/Mvc/controllerPath*</url-pattern>
</servlet-mapping>
我看到404
最佳答案
如果删除:
@RequestMapping("/controllerPath")
至
@RequestMapping("/")
新的servlet映射将起作用。
原因是在spring尝试将其与控制器匹配之前,将删除servlet映射URL中的所有内容。
例如,在仅使用
/
的第一个url映射中(并假设您的Web应用已部署到/mvc
),您的/mvc/controllerPath/sayHello
路径spring会将url映射从url剥离下来,并期望找到一个可以映射的控制器到/controllerPath/sayHello
当您将url-pattern更改为/ controllerPath时,因为也会将其剥离,并寻找一个仅响应
/sayHello
的控制器,而您的控制器不会响应,因为它期望/controllerPath/sayHello