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

et_et 发布于 2019-03-09 eclipse 最后更新 2019-03-09 14:42 0 浏览

我正在运行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 现在如果我GET本地主机:8080 / appname我会根据需要得到欢迎页面 但是如果我打localhost:8080 / appname / rest / yadda,我会收到警告
No mapping found for HTTP request with URI [/appname/rest/yadda] in DispatcherServlet with name 'handleit'
如果我将servlet url-pattern更改为/然后我通过servlet发送请求,而不预先添加appname,并且servlet按预期处理它们 - 但是,我无法再点击欢迎页面 我需要一个不涉及将appname硬编码到web.xml或控制器映射中的解决方案,我必须以某种方式为html文件和独立于我的应用程序部署到的uri的servlet服务 - 即停止将URL的上下文部分发送到servlet
已邀请:

jautem

赞同来自:

@RequestMapping中的URI将附加到调度程序servlet的url-mapping。因此,如果servlet和控制器都映射到rest,则完整URI将变为/contextpath/rest/rest。如果您不想这样,请将控制器映射到/ 编辑:将servlet映射到/时它不起作用的原因是Spring调度程序servlet处理上下文根目录下的所有内容。因此,要使其工作,您需要配置Spring MVC来提供静态文件。