page contents

一套代码部署在不同的目录下导致的问题

Pack 发布于 2019-12-25 15:34
阅读 713
收藏 0

一套代码在不同的Tomcat上可能部署到不同的目录下。

例如:

1、放到TomcatA的根目录(WebRoot)下,它的访问地址是这样:192.168.0.2:8080,我要是访问其中的一个页面就是这样子:192.168.0.2:8080/customer/goList


2、放到TomcatB的mymall目录下,它的访问地址是这样:192.168.0.3:8080/mymall,我要是访问其中的一个页面就是这样子:192.168.0.3:8080/mymall/customer/goList


数据库存在一个模块表,内容大概是这样:

insert into tModule(name, url) values (‘客户管理’, ‘/customer/goList’)

insert into tModule(name, url) values (‘采购管理’, ‘/purchase/goList’)


我有一个日志拦截器LogInterceptor,通过request.getRequestURI取得URI,然后再通过URI找出对应的模块。


现在问题来了

request.getRequestURI在TomcatA上取到的是/customer/goList,在TomcatB上取到的是/mall/customer/goList,这就导致TomcatB上找不对对应的模块记录。


我希望能够取到/customer/goList,请问下这个有没有什么好的办法解决。

最佳答案 2019-12-25 15:35

27
Pack
Pack

这边 主要有下面几个相关点。
request.getRequestURL() 完整的路劲带有请求地址协议
request.getRequestURI() 表示查找某个项目的某个路径 带有项目和路劲
request.getContextPath() 项目名称
request.getServletPath() 项目名称之后的路劲, 不带?相关参数
request.getQueryString() ?之后的参数

举例:
请求路径: http://localhost:8080/test/test.jsp?a=x

http://localhost:8080/test/test.jsp?a=x
request.getRequestURL() =====》http://localhost:8080/test/test.jsp
request.getRequestURI() =====》/test/test.jsp
request.getContextPath() ===》 /test
request.getServletPath() ====》 /test.jsp
request.getQueryString() =====》a=x

上面问题使用 request.getServletPath() 即可

请先 登录 后评论