Struts2文件上传完美解决中文乱码问题
更新时间:2023-06-12 02:28:01 阅读量: 实用文档 文档下载
- struts2 文件上传推荐度:
- 相关推荐
分享开源框架Struts2文件上传实例过程,并且笔者将带着大家解决出现的一系列乱码问题,本文章中的重要部分将用特殊颜色标识,斜体表示不确定内容。笔者建议读者先快速阅读一遍本文,下载应具备的工具,再动手操作。或许写一遍比看十遍的功效更为明显。
笔者的Struts2版本号是2.2.3,如果你的是2.0版本以上也没关系。创建的java project项目名字为:uploads,各个文件、页面编码统一为:UTF-8。
首先导入Struts所依赖或自身的jar包,我们直接导入struts官方给出的空白实例所用到的jar包,分为:asm-3.1.jar、 asm-commons-3.1.jar、asm-tree-3.1.jar、commons-fileupload-1.2.2.jar、 commons-io-2.0.1.jar、commons-lang-2.5.jar、freemarker-2.3.16.jar、 javassist-3.11.0.GA.jar、ognl-3.0.1.jar、struts2-core-2.2.3.jar、xwork- core-2.2.3.jar,这些包位于\struts-2.2.3\apps\struts2-blank\WEB-INF\lib目录下,如果你和 笔者所使用的struts版本不一致,请直接导入该目录下的所有文件。
uploads\WebRoot\WEB-INF\web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="/xml/ns/javaee"
xmlns:xsi="/2001/XMLSchema-instance"
xsi:schemaLocation="/xml/ns/javaee
/xml/ns/javaee/web-app_2_5.xsd">
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<filter>
<filter-name>uploads</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>uploads</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
uploads\src\struts.xml(注意:如果你的版本和笔者的不一样可以展开struts2-core-2.2.3.jar,打开struts-default.xml文件,大概在24-26行DOCTYPE内容替换以下粗体)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
"/dtds/struts-2.1.7.dtd">
<struts>
<constant name="struts.i18n.encoding" value="UTF-8"></constant><!-- 解决乱码!! --> <package name="uploads" extends="struts-default">
<action name="uploads"
class="com.lingdus.action.FileUploadAction">
<result name="success" type="redirect">/index.jsp</result>
</action>
</package>
</struts>
uploads\src\com\lingdus\action\FileUploadAction.java
package com.lingdus.action;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Map;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class FileUploadAction extends ActionSupport {
private File file; // 这个和以下的内容在struts中有特殊的要求,具体请翻阅相关资料。 private String fileFileName;
public synchronized File getFile() {
return file;
}
public synchronized void setFile(File file) {
this.file = file;
}
public synchronized String getFileFileName() {
return fileFileName;
}
public synchronized void setFileFileName(String fileFileName) {
this.fileFileName = fileFileName;
}
@Override
public String execute() throws Exception {
InputStream is = null;
OutputStream os = null;
try {
is = new FileInputStream(file);
os = new FileOutputStream("C:\\" + fileFileName);
byte[] buffer = new byte[2875623];
int length = 0;
while (-1 != (length = is.read(buffer))) {
os.write(buffer, 0, length);
}
Map<String, Object> session = ActionContext.getContext()
.getSession();
session.put("result", "文件成功上传至:" + "C:\\" + fileFileName); } catch (Exception e) {
e.printStackTrace();
return "ERROR";
} finally {
os.close();
is.close();
}
return SUCCESS;
}
}
uploads\WebRoot\index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html>
<head>
<base href="<%=basePath%>">
<title>文件上传</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<s:form action="uploads" enctype="multipart/form-data" method="post"> <s:file name="file" label="文件上传"></s:file>
<s:submit value="立即上传"></s:submit>
</s:form>
上传结果
<hr />
${result }
</body>
</html>
演示效果
正在阅读:
写给高考的孩子们09-03
冯雷超 论《红楼梦》中妙玉形象 修改二06-10
《山东省生产经营单位安全生产主体责任规定》)测试题(含答案)06-01
安徽大学外国法制史考试重点总结09-16
“洋装虽然穿在身,我心依然是中国心,我的祖先早已把我的一切烙上02-09
最新-某某年上半年某某市商务运行情况及下半年工作计划 精品10-27
中考数学方程与不等式练习03-08
驻村干部个人工作总结范本八篇04-03
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 乱码
- 中文
- Struts2
- 上传
- 完美
- 解决
- 文件
- 问题
- 花键轴加工工艺设计
- 2016-2017年造价工程师网络继续教育试题及答案卷3
- 2014-2015年安徽省合肥市七年级上学期期末数学 试卷(解析版)
- 河南省体育彩票可持续发展的对策研究
- 自航甲板驳船 有限元 全船 结构强度论文
- 2011博士研究生光电试题答案
- 浅谈陶瓷行业在环境保护及管理上的问题及应对措施
- 《2021环卫的工作计划范文》
- 当前电力需求侧管理工作中亟待解决的若干问题
- 【尚友人说】进了这些大学,就相当于向大企业迈进了一大步哦
- 古剑奇谭图文攻略(待续中,目前最全)
- 毕业设计论文_人脸识别系统
- 温顾红色记忆,传承爱国主义
- 依托职业教育打造_环京津人力资源储备带_
- 关于文化产业发展问题的几点思考
- 双相不锈钢分类、牌号及标准
- 儿科学考试复习资料
- 高级财务管理-陆正飞-讨论题参考答案与案例分析指引
- 《六国论》优质教案
- 住宅人防建设要求