在过滤器中request.getRequestURI()不能取得当前访问的地址

ququhu 2018-08-22 11:21:50
在过滤器中
public void doFilter(ServletRequest req, ServletResponse res,
FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
request.getRequestURI();//此句取的是页面的元素JS路径、图片等,而不是我访问的地址。而且要执行过滤器好多次。
}
想请教高手 request.getRequestURI()怎么取实际地址?
...全文
1475 2 收藏 18
写回复
18 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
arsenal_zuoyu 2018-08-27
类型转换成其他的Request再试
回复
lkf181 2018-08-24
顺序问题吧,我也遇到过
回复
同学请坐の 2018-08-24
ServletActionContext.getRequest.getRequestUrl
回复
ququhu 2018-08-23
引用 12 楼 qq_15824553 的回复:
过滤器拦截了所有请求,配置一下只拦截 .do .action

请问一下如何配置拦截 .do .action?
回复
RockeyCui 2018-08-23
过滤器拦截了所有请求,配置一下只拦截 .do .action
回复
ladiesmansy 2018-08-23
Spring MVC
回复
ququhu 2018-08-23
引用 10 楼 verejava 的回复:
MVC 微框架

http://www.verejava.com/?section_id=1697715673191
这个是什么?
回复
verejava 2018-08-23
ququhu 2018-08-23
找到原因了,有好几个过滤器,把这个过滤器放第一个就好了。
回复
ququhu 2018-08-22
引用 1 楼 tianfang 的回复:
文件系统中的路径?

要用 HttpServletRequest 的 getPathInfo

你的方法取的值是NULL
回复
tianfang 2018-08-22
文件系统中的路径?

要用 HttpServletRequest 的 getPathInfo
回复
喵菌 2018-08-22
web.xml里肯定有这样的配置
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
你加一个
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<url-pattern>*.action</url-pattern>
</servlet-mapping>
回复
ququhu 2018-08-22
引用 7 楼 u014146389 的回复:
那是在web.xml里配置的拦截器,以.do和.jsp会做拦截,想拦截.action的请求的话,配置上添加.action就可以了

根本就取不到.action的地址,无法拦。
回复
ququhu 2018-08-22
奇了怪了,我反复试验后,发现用request.getRequestURI()取地址。以.jsp结尾和.do结尾的都可以取到,就是以.action结尾的取不到。
回复
喵菌 2018-08-22
那是在web.xml里配置的拦截器,以.do和.jsp会做拦截,想拦截.action的请求的话,配置上添加.action就可以了
回复
ququhu 2018-08-22
引用 3 楼 u014146389 的回复:
楼主debug模式,查看request的全部参数,不就可以看到全部信息了么, request.getRequestURI()得到的是拼接地址,很可能包名和图片/js
名称用的是一样的名字

是的,地址访问了所有的页面元素,偏偏我要访问的地址栏的地址取不到。
回复
931828653 2018-08-22
// 获得请求方式
String method = request.getMethod();
System.out.println("method:" + method);
// 获得请求的资源
String uri = request.getRequestURI();
String url = request.getRequestURL().toString();
System.out.println("uri:" + uri);
System.out.println("url:" + url);

// 获得web应用名称
String contextPath = request.getContextPath();
System.out.println("contextPath:" + contextPath);

// 获得地址后的字符串参数
String queryString = request.getQueryString();
System.out.println("queryString:" + queryString);

// 获取客户机的信息(IP地址)
String remoteAddr = request.getRemoteAddr();
System.out.println("remoteAddr:" + remoteAddr);
回复
喵菌 2018-08-22
楼主debug模式,查看request的全部参数,不就可以看到全部信息了么, request.getRequestURI()得到的是拼接地址,很可能包名和图片/js
名称用的是一样的名字
回复
相关推荐
发帖
Web 开发
创建于2007-09-28

8.0w+

社区成员

Java Web 开发
申请成为版主
帖子事件
创建了帖子
2018-08-22 11:21
社区公告
暂无公告