关于IDEA和tomcat部署的问题,使用SSM框架。
1.问题描述
背景:
项目名称为sf.
idea导出的war包是sf.war。在tomcat中webapps自动部署生成sf项目。
ssm框架中controller使用的是类别/方法。这样的路由。(例如client/login)
使用了静态资源配置:/resources/** --> /resources/
然后所有的请求url都是用的类别/方法进行的。 (client/login)。
问题:
使用idea进行运行和调试没有问题,都能访问。但是build出war放在tomcat中。
运行之后index的访问路径变成了localhost:8080/sf.所有的访问都需要加上一个sf作为前缀。
直接使用url输入之后,发现所有的资源都访问不到(访问路径没有项目名:
localhost:8080/resources/img/....),url也没办法请求
(正确的应该含有sf,但是我的项目所有的请求都变成了localhost:8080/client/login)
请问,各位大神指导是什么原因么?我是需要怎么修改?难道每个访问和资源都需要把项目前缀加上去?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
经过我的一番思考我发现了问题。
就是/的存在。我所有的资源都是用的/resources/,我一直以为这个的根目录是该项目,其实是webapps或者说是root。所以我将所有的前置/都去掉了,然后就解决了这个问题。。。。看来相对路径和绝对路径我还是没有理解透彻。
根据你的表述,给你提供解题思路如下:
在
tomcat
的conf
目录下,有一个名为server.xml
的文件。在文件尾,<Host></Host>
标签内部有类似这样的代码:如果你希望去掉
sf
那个前缀路径,把path="/test"
改为path=""
。解释一下,path
的属性值就是你访问项目时的路径前缀,也就是你纠结的那个sf
。如果留空,代表访问域名后面不需要带项目的名称。授人以鱼不如授人以渔,问题的原因应该是在这里,至于sf
这个路径是需要还是不需要,就由你自己决定了。希望能对你有所帮助~!