关于commons-fileupload与struts2过滤器冲突的解决方法
来源:互联网 发布:手机音频编辑软件中文 编辑:程序博客网 时间:2024/05/23 17:33
最近做网站需要用到网页上传文件的问题,于是决定用commons-fileupload来实现,
首先需要引入必要的struts2必要包,这里就不列出来了。
上传图片的网页代码如下:
<form action="test1.jsp" name="form1" method="post" enctype="multipart/form-data" > 手机图片:<input type="file" name="img" /><br/> 请上传图片<input type="submit" value="提交图片" /></td> </form>
test1.jsp网页代码如下:
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%><%@ page import="org.apache.commons.fileupload.*"%><%@ page import="org.apache.commons.fileupload.servlet.*"%><%@ page import="org.apache.commons.fileupload.disk.*"%><%@ page import="java.util.*"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><% boolean isMultipart = ServletFileUpload.isMultipartContent(request);//检查输入请求是否为multipart表单数据。 if (isMultipart == true) { FileItemFactory factory = new DiskFileItemFactory();//为该请求创建一个DiskFileItemFactory对象,通过它来解析请求。执行解析后,所有的表单项目都保存在一个List中。 ServletFileUpload upload = new ServletFileUpload(factory); List items = upload.parseRequest(request); Iterator itr = items.iterator(); while (itr.hasNext()) { FileItem item = (FileItem) itr.next(); //检查当前项目是普通表单项目还是上传文件。 if (item.isFormField()) {//如果是普通表单项目,显示表单内容。 String fieldName = item.getFieldName(); if (fieldName.equals("name")) //对应demo1.html中type="text" name="name" out.print("the field name is" + item.getString());//显示表单内容。 out.print("<br>"); } else {//如果是上传文件,显示文件名。 out.print("the upload file name is" + item.getName()); out.print("<br>"); } } } else { out.print("the enctype must be multipart/form-data"); }%><html><body></body></html>
这里上传文件的话正常会输出 文件的名字。
但是由于struts2会拦截所有请求,由于一些原因导致网页没有接受到文件。
于是上网查了一些资料,要求在struts2里面添加一行代码
<constant name="struts.action.excludePattern" value="/system/page/test1.jsp" />
便好用了,但是 首先声明,这个value里的属性,应该添加项目名称后面的字符串,比如我在把鼠标移动到上传文件的时候便会出现网页跳转的网页提示,我的事
localhost:8080/phoneSales/system/page/test1.jsp
其中的phoneSales是项目名称,你只需要在value里添加/system/page/test1.jsp中,便能成功让struts过滤器不过滤这个请求,这里特别强调,因为我就是因为这个原因导致耗费了一下午的时间找资料,你一定要将value填加正确,否则他也会无法正常运行。如果这样还是不行的话,我建议你将你的struts-core-x.xxx.x.jar的文件提升到struts-core-2.1.8.1.jar以上版本,网上说可能这个版本之后才支持,不过我没测试出来,这里只是提示一下。
希望能帮到大家,别像我一样浪费了大量时间在这种错误上。
0 0
- 关于commons-fileupload与struts2过滤器冲突的解决方法
- struts2配置commons-fileupload的问题
- FileUpload 与 updatePanel 的冲突
- 关于Commons-fileupload的上传注意事项
- 关于apache-commons-fileupload 的一个异常
- springMVC-...关于commons-fileupload的使用
- 关于commons-fileupload
- commons-fileupload的详细介绍与使用
- commons-fileupload的详细介绍与使用
- commons-fileupload的详细介绍与使用
- Struts2和request上使用commons-fileupload的区别
- struts2链接过滤器冲突的解决方案
- 解决struts2过滤器冲突的简单方法
- 解决struts2过滤器冲突的简单方法
- 解决struts2过滤器冲突的简单方法
- ajax与FileUpload冲突的一种解决办法
- Commons-FileUpload的稳定性
- Commons-FileUpload的稳定性
- MySQL的information_schema的介绍
- 图像处理职位面试题汇总(4)
- 容器vector
- rtlinitializeexceptionchain
- Android中ExpandableListView控件基本使用
- 关于commons-fileupload与struts2过滤器冲突的解决方法
- 【蓝桥杯】危险系数
- 大话设计模式-工厂方法模式(学习笔记)
- 2015考研之路
- 必看专业书籍目录
- 无权图的最小路径
- phonegap=html5+js+css+jquery+Jquery Mobile.使用listview,ajax做了一个通讯录。
- JavaScript HTML DOM 事件 onchange onmouseover onmouseout
- 7.2 例子,第三个