如何在tomcat6中停止传递给我的servlet的url的应用程序部分

时间:2013-04-11 16:48:33

标签: eclipse spring-mvc tomcat6

我正在运行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

1 个答案:

答案 0 :(得分:0)

@RequestMapping中的URI将附加到调度程序servlet的url-mapping。因此,如果servlet和控制器都映射到rest,则完整URI将变为/contextpath/rest/rest。如果您不想这样,请将您的控制器映射到/

编辑:将servlet映射到/时它不起作用的原因是Spring调度程序servlet处理上下文根目录下的所有内容。因此,要使其工作,您需要配置Spring MVC来提供静态文件。