struts2 项目中使用filter获取

简介:

我在ssh 项目中使用过滤器filter 拦截一个请求,然后在filter中想获取request(使用),然后获取请求体。

filter中部分代码如下:

 

Java代码   收藏代码
  1. for (int i = 0; i < contentLength;)  
  2.             try {  
  3.   
  4.                 int readlen = request.getInputStream().read(buffer, i,  
  5.                         contentLength - i);  
  6.                 requestPacket.append(new String(buffer));  
  7.                 if (readlen == -1) {  
  8.                     return null;  
  9.                 }  
  10.                 i += readlen;  
  11.             } catch (IOException ioexception) {  
  12.                 ioexception.printStackTrace();  
  13.             } finally {  
  14.                 // logger.info("Json Request:" + requestPacket);  
  15.                 System.out.println("Json Request:" + requestPacket);  
  16.             }  

 但是request 的inputstream中无内容,为什么会无内容呢?

请求的方式是post,而且确实设置了请求体,怎么会没有内容呢?

测试了半天才发现是struts2 的原因:

因为struts2 的过滤器:org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

被struts2 的过滤器拦截之后,请求体就为空了。

如何解决这个问题呢?

方式一:把自定义的过滤器 放在struts的filter之前;

 方式二:修改struts2 过滤器的url pattern:

Xml代码   收藏代码
  1. <filter>  
  2.         <filter-name>struts2</filter-name>  
  3.         <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>  
  4.     </filter>  
  5.   
  6.     <filter-mapping>  
  7.         <filter-name>struts2</filter-name>  
  8.         <url-pattern>*.action</url-pattern>  
  9.     </filter-mapping>  
相关文章
|
6月前
javaWeb过滤器Filter(一)
javaWeb过滤器Filter(一)
|
6月前
javaWeb过滤器Filter(二)
javaWeb过滤器Filter(二)
|
XML 缓存 Java
JavaWeb-Filter过滤器
Filter过滤器 1. Filter的生命周期 2.Filter的配置 3.拦截路径 4.拦截具体的使用 5.拦截方式配置(资源被访问方式) 6.FilterChain拦截链
85 0
|
设计模式 监控 前端开发
【JavaWeb】Filter过滤器到底是什么
【JavaWeb】Filter过滤器到底是什么
【JavaWeb】Filter过滤器到底是什么
|
数据处理
javaweb Filter过滤器
javaweb Filter过滤器
javaweb Filter过滤器
|
Java 数据安全/隐私保护
详解JavaWeb过滤器 Filter
1.过滤器概述 过滤器,顾名思义就是对事物进行过滤的,在Web中的过滤器,当然就是对请求进行过滤,我们使用过滤器,就可以对请求进行拦截,然后做相应的处理,实现许多特殊功能。如登录控制,权限管理,过滤敏感词汇等 要在Javaweb项目中使用过滤器,实现Java - Servlet - Filter接口即可: 以下是一个模板,需要实现三个方法:
111 0
JavaWeb过滤器(Filter)详解
Filter:过滤器 1.概念: web中的过滤器:当访问服务器的资源时,过滤器可以将请求拦截下来,完成一些特殊的功能 过滤器的作用:一般用于完成通用的操作,如登录验证、统一编码处理、敏感字符过滤等等。
324 0
|
Java
Struts2【配置】 (一)
上篇Struts博文已经讲解了Struts的开发步骤以及执行流程了…..对Struts的配置文件有了了解…..本博文继续讲解Struts在配置的时候一些值得要学习的细节…
100 0
Struts2【配置】 (一)
|
Java 应用服务中间件
Struts2【配置】 (三)
上篇Struts博文已经讲解了Struts的开发步骤以及执行流程了…..对Struts的配置文件有了了解…..本博文继续讲解Struts在配置的时候一些值得要学习的细节…
88 0
Struts2【配置】 (三)