我的是1.5.4版本的springboot,通过war打包,部署到外部tomcat运行。
现在有个问题就是,我访问登陆页通过 localhost:[端口号]/war包文件名/ 该链接可以成功访问到我的该页面,但是在登陆页中登陆按钮是js写的,访问的时候链接是 localhost:[端口号]/login.do,在login.do上一级少了个war包文件名。设置过server.contextPath,同样无效。求问,怎样可以使该项目的访问路径都会该有war包文件名。
我大概明白你的意思了。你是说,你发布了一个war包。打开首页时,是成功的。但是,点击登陆按钮时,跑转的action地址不正确。是这样的吗?你可以把你这个页面的代码贴出来吗?
是通过Ajax请求的,部署上tomcat去,该项目的上下文不是应该默认是在该项目文件下。怎样访问该login.do的url应该是在/war包文件名 该上下文下才对呢。如果是逐个逐个去添加显然不太现实。因为该项目出包名称未定,而且还有非常多的请求包括静态资源的访问。
@JhonMr: 跟用什么提交方式无关。你是想灵活部署你的项目,你的是JSP页面吗?
@David5201: 是Html页面
@JhonMr: url : <%=request.getContextPath()%> + ”/login.do",
你这是有动态内容请求了。你把它变成 jsp页面。在页面的上部,加
<%@ page contentType="text/html; charset=UTF-8"%> ,你可以用编辑器带格式的把代码分享出来。方式一次性的解决问题。
@David5201: 是说每个都url请求都需要这样配置吗?但是这样实现不太好呀,项目中引用了很多的框架样式和js文件,还有许多的请求喔
@JhonMr: 可以把你的项目直接放到Tomcat的ROOT下。也就是你的项目名称变成了ROOT,可以不用配置。
我也想学习一下,是否有其它方法。
呵呵,看有没有大牛给点简单方法。。 另,如果你的一js框架,是公司的,建议在网上找CDN来代替。
@David5201: 好的,感谢回复。
把斜杠去掉试试,另外资源拦截的时候,对js css 什么的放行了么
哪个斜杠?js和css是放行的,拦截器只是拦截js的部分请求。
终于找到答案了,是因为外部部署的话,ContextPath自动设置为文件名,那么我们所有的请求,包括静态资源的路径都需要使用相对路径。比如上图的/login.do需要改成login.do,去掉前缀斜杠,因为前置斜杠会覆盖掉我们contextPath该路径。