我有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
答案 0 :(得分:2)
如果删除:
@RequestMapping("/controllerPath")
到
@RequestMapping("/")
新的servlet映射将起作用。
这样做的原因是,在spring尝试将它与控制器匹配之前,servlet映射url中的所有内容都被剥离。
例如,在仅使用/
的第一个网址映射中(并假设您的网络应用已部署到/mvc
),您的/mvc/controllerPath/sayHello
路径会将网址映射远离url并期望找到映射到/controllerPath/sayHello
当您将url-pattern更改为/ controllerPath时,因为它也将删除它并寻找仅响应/sayHello
的控制器,而控制器将不会这样,因为它期望/controllerPath/sayHello
< / p>