`

struts2 项目中使用filter获取

阅读更多

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

filter中部分代码如下:

 

for (int i = 0; i < contentLength;)
			try {

				int readlen = request.getInputStream().read(buffer, i,
						contentLength - i);
				requestPacket.append(new String(buffer));
				if (readlen == -1) {
					return null;
				}
				i += readlen;
			} catch (IOException ioexception) {
				ioexception.printStackTrace();
			} finally {
				// logger.info("Json Request:" + requestPacket);
				System.out.println("Json Request:" + requestPacket);
			}

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

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

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

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

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

如何解决这个问题呢?

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

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

<filter>
		<filter-name>struts2</filter-name>
		<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
	</filter>

	<filter-mapping>
		<filter-name>struts2</filter-name>
		<url-pattern>*.action</url-pattern>
	</filter-mapping>

 

 

分享到:
评论

相关推荐

    struts2项目部署

    3. **配置web.xml**:在`web.xml`中配置Struts2的核心过滤器`org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter`。同时,确保配置了正确的Context路径和其他必要配置。 4. **配置struts.xml*...

    Struts2表单数据获取项目

    在Struts2中,你可以直接在Action类中声明与表单字段相对应的属性,Struts2的自动数据绑定机制会将表单参数映射到这些属性。例如,如果表单有字段`name`和`email`,Action类可以如下所示: ```java public class ...

    在嵌入式jetty环境下运行struts2Annotation项目

    在`web.xml`中配置Struts2 Filter,但请注意,由于我们使用了注解,此文件可以非常简洁,甚至可省略。 ### 6. 运行项目 通过创建的Jetty启动类运行项目,服务器会加载并解析Struts2 Annotation定义的Action,处理...

    Struts2初步使用总结

    在Struts2中,所有的Action调用都是通过`ActionProxy`来完成的。 通过以上内容,我们可以看到Struts2是一个功能强大且易于使用的Java Web开发框架,它简化了Web应用程序的开发过程,使开发者能够更专注于业务逻辑的...

    struts2中文件上传过滤codeFilter

    以下是对Struts2中文件上传及`codeFilter`的详细解释: **1. Struts2文件上传机制** Struts2提供了内置的支持来处理文件上传,主要利用了Apache Commons FileUpload库。在Struts2的Action类中,可以定义一个字段,...

    struts2使用手册

    - **开源性**:Struts2是开源项目,这意味着开发者可以自由地获取其源代码并进行二次开发或修复潜在的问题。 - **缺点**: - **代码量较大**:尽管相对于Struts1.x有所改善,但仍然存在一定的代码冗余问题。 - *...

    struts2+myeclipse 配置入门

    3. **创建Action类**: Struts2中的业务逻辑由Action类执行。创建一个Action类,实现`com.opensymphony.xwork2.ActionSupport`接口,并重写`execute()`方法。例如: ```java public class HelloWorldAction extends...

    Struts2视频教程

    Struts2内置了对OGNL的支持,可以方便地在JSP页面中使用OGNL表达式获取模型数据。 - **标签库**:Struts2提供了丰富的标签库,可以帮助开发者快速构建表单和页面元素,提高开发效率。 - **拦截器**:拦截器是Struts2...

    马士兵Struts2笔记2013

    OGNL是一种强大的表达式语言,用于在Struts2中获取和设置对象属性,以及执行复杂的逻辑操作。在视图层,它可以用来动态地渲染页面内容。 14. **Struts投影** 投影是Struts2中将对象属性映射到视图组件的方式,...

    struts2.2 项目搭建 以及与 struts2-json jquery 前后台进行交互

    - **配置web.xml**:在`WEB-INF`目录下的`web.xml`中配置Struts2的核心过滤器`&lt;filter&gt;`和`&lt;filter-mapping&gt;`。 - **创建Action类**:编写处理用户请求的Java类,继承自`ActionSupport`,并实现相应的方法。 - **...

    传智播客struts2全程学习笔记

    在Struts1中,如果需要实现相同的功能,则需要向Struts1的底层实现BeanUtil注册类型转换器,而在Struts2中则变得更加简单和直观。 4. **多样的视图技术支持**:Struts2不仅支持JSP作为视图层,还支持FreeMarker、...

    Struts项目

    总之,"Struts项目"是一个全面展示Struts2框架功能的实际应用,它涉及到了MVC模式的实现、业务逻辑处理、用户界面展示等多个方面,对于学习和理解Struts2以及Java Web开发具有很高的实践价值。通过研究这个项目,...

    struts2配置过滤器

    本文将通过一个具体的示例来详细介绍如何在Struts2项目中配置过滤器。 #### 二、过滤器配置实例分析 ##### 2.1 web.xml配置解析 在给定的web.xml配置文件中,可以看到对`SessionInvalidate`过滤器进行了定义和...

    struts2的中文乱码问题解决

    下面将详细介绍如何解决Struts2中的中文乱码问题。 #### 一、理解中文乱码的原因 中文乱码主要出现在以下几个方面:页面乱码、Action乱码以及数据库乱码。具体来说: 1. **页面乱码**:指用户在浏览器中看到的...

    过滤器 Struts2全局变量 action转化do

    2. **全局变量(Global Variables)**:在Struts2中,全局变量通常是指在struts.xml配置文件中定义的可全局访问的对象,如常量、拦截器栈和结果类型。这些配置可以提高代码的复用性和可维护性。 3. **Action转化...

    struts2 在eclipse 配置成功

    在Eclipse这个流行的Java集成开发环境中配置Struts2,可以帮助开发者更高效地构建动态Web项目。以下将详细介绍如何在Eclipse中成功配置Struts2。 1. **环境准备**: - 首先确保你的系统上已经安装了Java JDK和...

    一个简单的struts2的手动配置

    我们可以创建资源文件,如`message.properties`和`message_zh_CN.properties`,然后在Action中使用`getText`方法获取对应的语言消息。 最后,Struts2的插件系统非常强大,例如JSON插件可以让我们轻松地将Action结果...

    struts2入门demo

    这个"struts2入门demo"是为初学者准备的一个基础实践项目,旨在帮助理解Struts2的核心概念和工作流程。让我们深入探讨一下Struts2的关键知识点。 首先,Struts2是一个基于MVC(Model-View-Controller)架构的框架,...

    Struts2--环境搭建

    8. **编写配置文件**:Struts2使用struts.xml配置文件来定义Action、结果类型、拦截器等。例如: ```xml &lt;struts&gt; &lt;package name="default" namespace="/" extends="struts-default"&gt; &lt;result name="success"&gt;/...

    Struts2的Jar包整合

    3. **创建Action**: Struts2中的Action是业务逻辑的执行者,它负责处理用户的请求。你可以创建一个继承自`com.opensymphony.xwork2.ActionSupport`的类,然后重写execute方法来实现业务逻辑。同时,可以通过注解来...

Global site tag (gtag.js) - Google Analytics