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>  
相关文章
|
8月前
javaWeb过滤器Filter(二)
javaWeb过滤器Filter(二)
|
8月前
javaWeb过滤器Filter(一)
javaWeb过滤器Filter(一)
|
数据处理
javaweb Filter过滤器
javaweb Filter过滤器
javaweb Filter过滤器
|
XML JavaScript Java
【笔记07】JavaEE 中的 Filter、拦截器和 Shiro
① 当提到【登陆】二字的时候,我总能在脑子里面想起三个词:【过滤器】、【拦截器】、【Shiro】 ② 在我脑中它们三个都有拦截请求的功能,但具体是干啥的我无法说出来。根据费曼学习法,如果我无法说出来,就代表我不会。 ③ 接下来学习一下过滤器、拦截器和 Shiro,并记录一下。
235 0
【笔记07】JavaEE 中的 Filter、拦截器和 Shiro
|
Java 数据安全/隐私保护
详解JavaWeb过滤器 Filter
1.过滤器概述 过滤器,顾名思义就是对事物进行过滤的,在Web中的过滤器,当然就是对请求进行过滤,我们使用过滤器,就可以对请求进行拦截,然后做相应的处理,实现许多特殊功能。如登录控制,权限管理,过滤敏感词汇等 要在Javaweb项目中使用过滤器,实现Java - Servlet - Filter接口即可: 以下是一个模板,需要实现三个方法:
131 0
JavaWeb过滤器(Filter)详解
Filter:过滤器 1.概念: web中的过滤器:当访问服务器的资源时,过滤器可以将请求拦截下来,完成一些特殊的功能 过滤器的作用:一般用于完成通用的操作,如登录验证、统一编码处理、敏感字符过滤等等。
349 0
|
Java
Struts2【配置】 (二)
上篇Struts博文已经讲解了Struts的开发步骤以及执行流程了…..对Struts的配置文件有了了解…..本博文继续讲解Struts在配置的时候一些值得要学习的细节…
152 0
Struts2【配置】 (二)
|
Java 应用服务中间件
Struts2【配置】 (三)
上篇Struts博文已经讲解了Struts的开发步骤以及执行流程了…..对Struts的配置文件有了了解…..本博文继续讲解Struts在配置的时候一些值得要学习的细节…
100 0
Struts2【配置】 (三)