struts2 multipartrequest用法

struts2 multipartrequest用法Struts2 MultipartRequest 使用方法:

Struts2 是一个用于构建 Java Web 应用的开源框架,它提供了许多功能和工具来简化开发过程。其中之一就是 MultipartRequest,它是用于处理涉及文件上传的请求的。

要使用 Struts2 的 MultipartRequest,首先需要在 Struts2 的配置文件中进行相应的配置。

1. 配置 web.xml 文件:

在 web.xml 文件中,将 Struts2 的过滤器配置为请求的第一个过滤器。

```xml

struts2

class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter

struts2

/*

```

2. 配置 struts.xml 文件:

在 struts.xml 文件中,添加对文件上传的支持。示例如下:

```xml

class="org.apache.struts2.interceptor.FileUploadInterceptor" />

/success.jsp

```

在上述示例中,我们定义了一个名为 "uploadAction" 的 action,使用了fileUpload 拦截器和 defaultStack 拦截器栈。文件上传后,将跳转到 success.jsp 页面。

3. 创建 Action 类:

在 Java 代码中,创建一个名为 "UploadAction" 的类,该类需要继承自 Struts2 的 ActionSupport 类。在该类中,编写处理文件上传的逻辑。

```java

public class UploadAction extends ActionSupport {

private File file;

private String fileFileName;

private String fileContentType;

// getter 和 setter 方法

public String execute() throws Exception {

// 执行文件上传的逻辑

return SUCCESS;

}

}

```

在上述示例中,我们通过定义一个名为 "file" 的 File 类型属性,以及相应的getter 和 setter 方法,从而获取上传的文件信息。

4. 创建文件上传表单:

在 JSP 页面中,创建一个包含文件上传功能的表单。示例如下:

```html

```

在上述示例中,我们将表单的 action 属性设置为 "uploadAction",同时将enctype 设置为 "multipart/form-data",以实现文件上传的功能。

以上就是使用 Struts2 MultipartRequest 处理文件上传的基本步骤和配置。通过以上步骤,您可以在 Struts2 应用程序中方便地实现文件上传功能。请根据您的具体需求进行适当的修改和调整。

struts2核心工作流程与原理

struts2核心工作流程与原理 做为一名技术人员,听到太多关于.net和java的比较的话题。我想对那些技术人员说,请先了解一下什么是java(或者.net)吧,其实你根本不了解。

这是Struts2官方站点提供的Struts 2 的整体结构。 一个请求在Struts2框架中的处理大概分为以下几个步骤

1.客户端提起一个(HttpServletRequest)请求,如上文在浏览器中输 入”http://localhost:8080/TestMvc/add.action”就是提起一个(HttpServletRequest)请求。 2.请求被提交到一系列(主要是三层)的过滤器(Filter),如(ActionContextCleanUp、 其他过滤器(SiteMesh等)、 FilterDispatcher)。注意这里是有顺序的,先 ActionContextCleanUp,再其他过滤器(SiteMesh等)、最后到 FilterDispatcher。 3.FilterDispatcher是控制器的核心,就是mvc中c控制层的核心。下面粗略的分析下我理 解的FilterDispatcher工作流程和原理: FilterDispatcher进行初始化并启用核心doFilter 其代码如下: public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain ) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) req; HttpServletResponse response = (HttpServletResponse) res; ServletContext servletContext = filterConfig.getServletContext(); // 在这里处理了HttpServletRequest和HttpServletResponse。 DispatcherUtils du = DispatcherUtils.getInstance(); du.prepare(request, response);//正如这个方法名字一样进行locale、encoding 以及特殊request parameters设置 try { request = du.wrapRequest(request, servletContext);//对request进行包装 } catch (IOException e) { String message = "Could not wrap servlet request with MultipartReques tWrapper!"; LOG.error(message, e); throw new ServletException(message, e); } ActionMapperIF mapper = ActionMapperFactory.getMapper();//得到action的mapper

struts2流程以及源码解析

1.1 Struts2请求处理 1. 一个请求在Struts2框架中的处理步骤: a) 客户端初始化一个指向Servlet容器的请求; b) 根据Web.xml配置,请求首先经过ActionContextCleanUp过滤器,其为可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助(SiteMesh Plugin),主要清理当前线程的ActionContext和Dispatcher; c) 请求经过插件过滤器,如:SiteMesh、etc等过滤器; d) 请求经过核心过滤器FilterDispatcher,执行doFilter方法,在该方法中,询问ActionMapper来决定这个请求是否需要调用某个Action; e) 如果ActionMapper决定需要调用某个Action,则ActionMapper会返回一个ActionMapping实例(存储Action的配置信息),并创建ActionProxy (Action代理)对象,将请求交给代理对象继续处理; f) ActionProxy对象根据ActionMapping和Configuration Manager询问框架的配置文件,找到需要调用的Action类; g) ActionProxy对象创建时,会同时创建一个ActionInvocation的实例; h) ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用;

i) 一旦Action执行完毕,ActionInvocation实例负责根据struts.xml中的配置创建并返回Result。Result通常是一个需要被表示的JSP或者FreeMarker 的模版,也可能是另外的一个Action链; j) 如果要在返回Result之前做些什么,可以实现PreResultListener接口,PreResultListener可以在Interceptor中实现,也可以在Action中实现; k) 根据Result对象信息,生成用户响应信息response,在生成响应过程中可以使用Struts2 框架中继承的标签,在此过程中仍会再次涉及到ActionMapper; 2. Struts2请求处理示意图: 1.2 Struts2请求处理源码分析

常见异常

提示https://www.360docs.net/doc/c519092861.html,ng.UnsupportedClassVersionError: Bad version number in .class file Myeclipse 使用的JDK和Tomcat使用的JDK版本不一致 解决方法: 把它们的JDK版本改成一致步骤如下: 1.Window --> Preferences -->Java --> compiler中的compiler compliance level对应的下拉菜单中选择JDK版本. 2.Window --> Preferences -->MyEclipse --> Servers -->Tomcat --> Tomcat n.x -->JDK中的Tomcat JDK name下的下拉菜单中选择自身电脑上安装的JDK 版本 1 、缺少文件上传JAR包commons-io-1.3.1.jar commons-fileupload-1.2.jar Unable to load bean org.apache.struts2.dispatcher.multipart.MultiPartRequest (jakarta) - [unknown location] 这个问题是在使用Struts2想做一个上传文件的页面时候Tomcat报出来的错误,详细信息如下: 2007-7-19 21:34:09 org.apache.catalina.core.StandardWrapperValve invoke 严重: Servlet.service() for servlet jsp threw exception https://www.360docs.net/doc/c519092861.html,ng.RuntimeException: Unable to load bean org.apache.struts2.dispatcher.multipart.MultiPartRequest (jakarta) - [unknown location] 问题描述:使用Struts2.0.6+Sitemesh2.2.1+Freemark2.3.8的过程中,装饰Action请求的结果页面不会有问题,但是如果装饰直接访问的JSP页面会出现如下错误: java 代码 1. javax.servlet.ServletException: Error applying decorator: null 解决方案:经过调试发现是FreeMarkerPageFilter的getLocale方法没有对invocation添加非空判断造成的,错误代码如下: java 代码

struts2上传文件异常:multipartrequest(jakarta)-[unknownlocation]

struts2上传文件异常: multipartrequest(jakarta)-[unknownlocation] Struts2上传文件异常:https://www.360docs.net/doc/c519092861.html,ng.RuntimeException: Unable to load bean org.apache.struts2.dispatcher.multipart.MultiPartRequest (jakarta) - [unknown location] 在测试Struts2权威指南介绍的struts2文件上传,发现如下异常: https://www.360docs.net/doc/c519092861.html,ng.RuntimeException: Unable to load bean org.apache.struts2.dispatcher.multipart.MultiPartRequest (jakarta) - [unknown location] 再回去仔细看该章节,发现是自己粗心了,忘记加所需要的两个除struts2外的jar文件.所加jar文件所图所示: Struts2默认使用的是Jakarta的Common-FileUpload的文件上传框架,而struts2的filter拦截了上传文件的动作,拦截器代码是这样写的: //org.apache.struts2.dispatcher.Dispatcher.java public HttpServletRequest wrapRequest(HttpServletRequest request, ServletContext servletContext) throws IOException { // don't wrap more than once if (request instanceof StrutsRequestWrapper) {

Struts2框架配置文件详解大全

一、web.xml配置文件 任何MVC框架都需要与Web应用整合,这就不得不借助于web.xml文件,只有配置在web.xml文件中Servlet才会被应用加载。所有的MVC框架都需要web应用加载一个核心控制器,对于Struts2框架而言,需要加载FilterDispatche r,只要Web应用负责加载FilterDispatc her,FilterDispatc her将会加载饮用的Str uts2框架。 配置FilterDispatc her的代码片段如下: -------------------------------------web.xm l------------------------------------------------------------------- struts2 org.apache.struts2.dispatcher.FilterDispatcher

struts2源代码分析(个人觉得非常经典)

本章讲述Struts2的工作原理。 读者如果曾经学习过Struts1.x或者有过Struts1.x的开发经验,那么千万不要想当然地以为这一章可以跳过。实际上Struts1.x与Struts2并无我们想象的血缘关系。虽然Struts2的开发小组极力保留S truts1.x的习惯,但因为Struts2的核心设计完全改变,从思想到设计到工作流程,都有了很大的不同。 Struts2是Struts社区和WebWork社区的共同成果,我们甚至可以说,Struts2是WebWork的升级版,他采用的正是WebWork的核心,所以,Struts2并不是一个不成熟的产品,相反,构建在We bWork基础之上的Struts2是一个运行稳定、性能优异、设计成熟的WEB框架。 本章主要对Struts的源代码进行分析,因为Struts2与WebWork的关系如此密不可分,因此,读者需要下载xwork的源代码,访问https://www.360docs.net/doc/c519092861.html,/xwork/download.action即可自行下载。 下载的Struts2源代码文件是一个名叫struts-2.1.0-src.zip的压缩包,里面的目录和文件非常多,读者可以定位到struts-2.1.0-src"struts-2.0.10"src"core"src"main"java目录下查看Struts2的源文件,如图14所示。 (图14) 主要的包和类 Struts2框架的正常运行,除了占核心地位的xwork的支持以外,Struts2本身也提供了许多类,这些类被分门别类组织到不同的包中。从源代码中发现,基本上每一个Struts2类都访问了WebWork提供的功能,从而也可以看出Struts2与WebWork千丝万缕的联系。但无论如何,Struts2的核心功能比如将请求委托给哪个Action处理都是由xwork完成的,Struts2只是在WebWork的基础上做了适当的简化、加强和封装,并少量保留Struts1.x中的习惯。 以下是对各包的简要说明: 包名说明

http以post方式上传一个文件

http以post方式上传一个文件,构造其请求头和消息报文 本篇文章主要介绍了"http以post方式上传一个文件,构造其请求头和消息报文(转载)",主要涉及到http以post方式上传一个文件,构造其请求头和消息报文(转载)方面的内容,对于http以post方式上传一个文件,构造其请求头和消息报文(转载)感兴趣的同学可以参考一下。 假设接受文件的网页程序位于 http://192.168.24.56/logsys/home/uploadIspeedLog!doDefault.html.假设我们要发送一个图片文件,文件名为“kn.jpg”, 首先客户端链接192.168.24.56 后, 应该发送如下http 请求: POST/logsys/home/uploadIspeedLog!doDefault.html HTTP/1.1 Accept: text/plain, */* Accept-Language: zh-cn Host: 192.168.24.56 Content-Type:multipart/form-data;boundary=-----------------------------7db372eb000e2 User-Agent: WinHttpClient Content-Length: 3693 Connection: Keep-Alive -------------------------------7db372eb000e2 Content-Disposition: form-data; name="file"; filename="kn.jpg" Content-Type: image/jpeg (此处省略jpeg文件二进制数据...) -------------------------------7db372eb000e2-- 此内容必须一字不差,包括最后的回车,红色字体部分就是协议的头。给服务器上传数据时,并非协议头每个字段都得说明,其中,content-type是必须的,它包括一个类似标志性质的名为boundary的标志,它可以是随便输入的字符串。对后面的具体内容也是必须的。它用来分辨一段内容的开始。Content-Length: 3693 ,这里的3693是要上传文件的总长度。绿色字体部分就是需要上传的数据,可以是文本,也可以是图片等。数据内容前面需要有Content-Disposition, Content-Type以及Content-Transfer-Encoding等说明字段。最后的紫色部分就是协议的结尾了。

Struts2中多文件上传

一、上传页面: <%@ page language="java" contentType="text/html; charset=GBK"%> <%@taglib prefix="s" uri="/struts-tags"%> 使用数组上传多个文件

文件标题:
选择第一个文件:
选择第二个文件:
选择第三个文件:
二、上传成功页面: <%@ page language="java" contentType="text/html; charset=GBK"%> <%@taglib prefix="s" uri="/struts-tags"%> 上传成功 上传成功!
文件标题:
第一个文件为:"/>

Struts2 result返回类型

Struts2 result返回类型(type)小结 在struts2的返回结果配置中,我们大部分情况使用默认的或者chain或者redirect,其实struts2还有很多其他类型的,今天我们就来看一下都有哪些类型。 打开struts2的源码中struts-default.xml文件,我们能看到如下配置

struts2 multipartrequest用法

struts2 multipartrequest用法Struts2 MultipartRequest 使用方法: Struts2 是一个用于构建 Java Web 应用的开源框架,它提供了许多功能和工具来简化开发过程。其中之一就是 MultipartRequest,它是用于处理涉及文件上传的请求的。 要使用 Struts2 的 MultipartRequest,首先需要在 Struts2 的配置文件中进行相应的配置。 1. 配置 web.xml 文件: 在 web.xml 文件中,将 Struts2 的过滤器配置为请求的第一个过滤器。 ```xml struts2 org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter struts2 /* ``` 2. 配置 struts.xml 文件:

在 struts.xml 文件中,添加对文件上传的支持。示例如下: ```xml /success.jsp ``` 在上述示例中,我们定义了一个名为 "uploadAction" 的 action,使用了fileUpload 拦截器和 defaultStack 拦截器栈。文件上传后,将跳转到 success.jsp 页面。 3. 创建 Action 类: 在 Java 代码中,创建一个名为 "UploadAction" 的类,该类需要继承自 Struts2 的 ActionSupport 类。在该类中,编写处理文件上传的逻辑。 ```java public class UploadAction extends ActionSupport { private File file; private String fileFileName;

struts2上传文件

1. struts2中的文件上传 第一步:在WEB=INF/lib下加入commons-fileupload-1.2.1.jar ,commons-io-1.3.2.jar。 第二步:把form表单的enctype属性设置为"multipart/form-data",如 Java代码 1.

2.文件: 3. 4.
5. //${pageContext.request.contextPath}:获取服务器根路径 第三步:在action中添加一下属性, Java代码 1.public class HelloWorldAction { 2. private File image; //与jsp表单中的名称对应 3. private String imageFileName; //FileName为固定格式 4. private String imageContentType ;//ContentType为固定格 式 5. 6. public String getImageContentType() { 7. return imageContentType; 8. } 9. public void setImageContentType(String imageContentType) { 10. this.imageContentType = imageContentType; 11. } 12. public String getImageFileName() { 13. return imageFileName; 14. } 15. public void setImageFileName(String imageFileName) { 16. this.imageFileName = imageFileName; 17. } 18. public File getImage() { 19. return image; 20. } 21. public void setImage(File image) { 22. this.image = image; 23. }

struts2配置及项目启动

1,Struts2的配置: 1.1项目的配置: 第一步:导包: 将D:\software\tool\struts2\struts-2.3.16.1\apps\struts2-blank\WEB-INF\lib中的jar 包全部导入项目的lib文件夹中,其中jar包有: xw o rk-co re-2.3.16.1.j ar asm-3.3.j ar asm-co m m o ns-3.3.j ar asm-t ree-3.3.j ar co m m o ns-f i l eup l o ad-1.3.1.j ar co m m o ns-i o-2.2.j ar co m m o ns-l ang3-3.1.j ar co m m o ns-l o g g i ng-1.1.3.j ar f reem arker-2.3.19.j ar j avassi st-3.11.0.G A.j ar l o g4j-1.2.17.j ar o g nl-3.0.6.j ar st rut s2-co re-2.3.16.1.j ar 第二步:导入struts.xml文件 文件中package可以自己定义。 第三步:编写web.xml文件

其内容为struts2的核心拦截器,其他拦截去如果需要,必须写到struts2拦截器 上面,否则,不起作用。 第四步:开发antion 在后面详细描述; 1.2开发action 方式一:继承ActionSupport 如果用struts2数据校验,必须继承此类。 方式二:实现Action 接口 方式三:不继承任何类,不识闲任何接口 1.3访问通配符 通配符:在struts 中配置信息中,可以用*于{1}优化配置 1.4 struts 中路径匹配原则 1,访问路径=命名空间+action 的name 属性: public class UserAction extends ActionSupport{ /{1}.jsp

Struts2架构中的Commons-fileupload组件应用技术

Struts2架构中的Commons-fileupload组件应用技术李静梅;王超宇 【摘要】基于HTTP传输协议的Web网页中,采用嵌人Commons-fileupload组件的Struts2框架,实现了文件的上传与下载.利用OGNL表达式提取Session持久层中的文件名,并利用此文件名实现下载文件的动态更名.灵活利用struts2.0自身提供的字段类型,提高下载的鲁棒性.并列举实例体现整合技术和动态文件下载的实用性,最后通过与以往2种常用开发框架的对比数据加以验证说明. 【期刊名称】《应用科技》 【年(卷),期】2011(038)004 【总页数】5页(P39-43) 【关键词】上传下载;Struts2架构;Commons-fileupload组件;OGNL表达式【作者】李静梅;王超宇 【作者单位】哈尔滨工程大学,计算机科学与技术学院,黑龙江,哈尔滨,150001;哈尔滨工程大学,计算机科学与技术学院,黑龙江,哈尔滨,150001 【正文语种】中文 【中图分类】TP311.1 随着Internet的飞速发展,越来越多的人参与到网络活动中.博客、Email等网络应用如雨后春笋般大量涌现,它们充分利用了现有的网络资源,不仅给人们的生活带来了巨大的方便,同时也正在逐渐影响、改变着人们的日常生活方式.网络应用

的大量涌现,使得在Web页面上完成基于HTTP超文本传输协议的上传下载功能显得越来越重要.针对这一问题,近几年科研院所和一部分公司提出了一些行之有效的可行性框架和解决方案.Struts2就是众多框架中的佼佼者.Struts2凭借其良好的扩展性,使其在Web应用中展现出了特有的优势. Common-fileupload是由阿帕奇基金会旗下的java开源社区Jakarta社区开发的一款组件,主要作 OGNL expression用是提供文件管理功能.Jakarta社区是一个非常成熟的社区,不仅有着稳定的开发团队,而且参与过Tomcat的研发,因此在利用Tomcat为服务器的网络应用程序中,Common-fileupload组件在速度和稳定性上都具有一定的优势. 1 Struts2框架 Struts2是Struts系列框架的第2代产品.是在Struts1和WebWork的技术基础上进行了合并,形成的全新的框架.全新的Struts 2框架与Struts1存在着巨大的差别.Struts2大量地借鉴WebWork相关技术,采用拦截器来处理用户的请求,这样的设计降低了框架的耦合性,提高了框架的性能. 1.1 Struts2的体系结构 Struts2与传统的Struts框架在整个体系结构上有了很大的变化.下面对Struts2的体系机构作下简要的介绍.图1为Struts2的体系结构图. 图1 Struts2体系结构 利用struts2体系结构展开的工作严格遵循下述开发流程: 1)浏览器发送一个请求; 2)核心控制器FilterDispatcher根据请求决定调用合适的Action; 3)WebWork的拦截器自动对请求应用调用功能,如验证等; 4)回调Action的execute方法,该execute方法根据请求的参数来执行一定的

jspstruts1struts2上传文件

一.在JSP环境中利用Commons-fileupload组件实现文件上传 1.页面upload.jsp清单如下: Java代码 1.<%@ page language="java" import="java.util.*" pageEncodin g="UTF-8"%> 2. 3. 4. 5. 6. The FileUpload Demo 7. 8. 9. 10.

11. 文件 介绍 12. 13. 14.

15. 16. 注意:在上传表单中,既有一般文本域也有文件上传域 2.FileUplaodServlet.java清单如下: Java代码 1.package org.chris.fileupload; 2. 3.import java.io.File; 4.import java.io.IOException; 5.import java.util.Iterator; 6.import java.util.List; 7. 8.import javax.servlet.ServletException; 9.import javax.servlet.http.*; 10. 11.import org.apachemons.fileupload.FileItem; 12.import org.apachemons.fileupload.FileItemFactory; 13.import org.apachemons.fileupload.disk.DiskFileItemFactory;

struts2的使用教程

为什么要使用struts2 与struts1相比,它的优点: ●在软件设计上Struts2没有像struts1那样跟ServletAPI和strutsAPI有着紧密的耦 合,Struts2的应用可以不依赖于ServletAPI和strutsAPI。Struts2的这种设计属于无入侵式设计,而Struts1却属于入侵式设计。 ●Struts2提供了拦截器,利用拦截器可以进行AOP编程,实现如权限拦截等功能 ●Struts2提供了类型转换器,我们可以把特殊的请求参数转换成需要的类型。在Struts1中, 如果我们要实现同样的功能,就需要向Struts1的底层实现BeanUtil注册类型拦截器才行。 ●Struts提供支持多种表现层技术,如:jsp、freeMarker、Velocity等 ●Struts2的输入校验可以对指定的方法进行校验,解决了struts1长久之痛 ●Struts2提供了全局范围、包范围和Action范围的国际化资源文件管理实现 1.s truts2(struts 2.1.8)环境的搭建 1>导入jar包: commons-fileupload-1.2.1.jar:文件上传组件,struts2.1.6版本后必须加入此文件上传commons-logging-1.0.4.jar:ASF出品的日志包,Struts框架使用这个日志包来支持Log4J 和JDK1.4+的日志记录 freemarker-2.3.15.jar:Struts2的UI标签的模版使用FreeMarker编写 ognl-2.7.3.jar:对象图导航语言(Object Graph Navigation Language),struts2框架通过其读写对象属性 struts2-core-2.1.8.jar: Struts2框架的核心类库 xwork-core-2.1.6.jar :XWork类库,Struts2在其上构建 2> 编写Struts2的配置文件 /index.jsp 3> 在web.xml中加入Struts2 MVC框架启动配置 struts2 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAnd ExecuteFilter struts2 /*

Action各项默认值

1、Action配置的各项默认值 (1)、如果没有为action指定class,默认是ActionSupport。 (2)、如果没有为action指定method,默认执行action中的execute()方法。 (3)、如果没有为action指定result,默认值为success。 2、result配置的各种试图转发类型 ... 其中type的常用类型有: dispatcher(默认值) ->转发 redirect ->重定向 redirectAction ->重定向的action在别的命名空间下 如: helloworld /test plainText ->显示原始文件内容 如: /xxx.jsp UTF-8

注意:在result中还可以使用${属性名}表达式访问action中的属性,表达式里的属性名对应action中的属性名 如:/index.jsp?username=${username} 3、为应用指定多个struts配置文件 在大部分应用里,随着应用规模的增加,系统中Action数量也大量增加,导致struts.xml配置文件变得非常臃肿。为了避免struts.xml文件过于庞大、臃肿,提高struts.xml文件的可读性,我们可以将一个struts.xml配置文件分解成多个配置文件,然后在struts.xml文件中包含其他配置文件。下面的struts.xml通过元素指定多个配置文件:

相关主题
相关文档
最新文档