我正在运行tomcat6并将其作为服务器连接到eclipse中,因此我可以快速调试代码更改 - 但是我遇到了传递给我的servlet的路由问题。
我正在运行spring mvc3,我的路线在类上注释,例如:
@Controller
@RequestMapping(value="/rest")
public class HandleItController {
...
在web.xml中我有
<welcome-file-list>
<welcome-file>welcome.html</welcome-file>
</welcome-file-list>
<servlet-mapping>
<servlet-mapping>handleit</servletmapping>
<url-pattern>/rest</url-pattern>
</servlet-mapping>
但是我一次只能根据需要使用其中一个设置。
假设“Web项目设置”将上下文根设置为appname
现在,如果我获取localhost:8080 / appname,我将根据需要获得欢迎页面
但是,如果我点击localhost:8080 / appname / rest / yadda我会收到警告
找不到带有URI [/ appname / rest / yadda]的HTTP请求的映射 DispatcherServlet,名称为“handleit”
如果我将我的servlet url-pattern更改为/然后我通过servlet路由请求而没有预先添加appname,并且servlet按预期处理它们 - 但是我无法点击欢迎页面
我需要一个不涉及将appname
硬编码到web.xml或控制器映射中的解决方案,必须有一些方法可以同时提供html文件和独立于uri的servlet部署了我的应用程序 - 即停止将url的上下文部分发送到servlet
答案 0 :(得分:0)
@RequestMapping
中的URI将附加到调度程序servlet的url-mapping
。因此,如果servlet和控制器都映射到rest
,则完整URI将变为/contextpath/rest/rest
。如果您不想这样,请将您的控制器映射到/
编辑:将servlet映射到/
时它不起作用的原因是Spring调度程序servlet处理上下文根目录下的所有内容。因此,要使其工作,您需要配置Spring MVC来提供静态文件。