嵌入编辑页面的代码
<tr>
<td width="40%" align="right" class="info-left"> 节点的图标:</td>
<td width="60%" class="info-right">
<s:textfield name="icon" cssClass="input-text" onfocus="switchClass(this)" onblur="switchClass(this)"/>
<s:hidden name="sysMenu.icon"/>
</td>
</tr>
<tr>
<td width="40%" align="right" class="info-left"> </td>
<td width="60%" class="info-right">
<div align="left">
<iframe style="top:2px" ID="UploadIcon" src="<%=basePath%>common/upLoadFile.jsp?picUrlId=1" frameborder=0 scrolling=no width="300" height="25"></iframe>
</div>
</td>
</tr>
<tr>
<td width="40%" align="right" class="info-left"> 节点打开的图标:</td>
<td width="60%" class="info-right">
<s:textfield name="iconOpen" cssClass="input-text" onfocus="switchClass(this)" onblur="switchClass(this)"/>
<s:hidden name="sysMenu.iconOpen"/>
</td>
</tr>
<tr>
<td width="40%" align="right" class="info-left"> </td>
<td width="60%" class="info-right">
<div align="left">
<iframe style="top:2px" ID="UploadIconOpen" src="<%=basePath%>common/upLoadFile.jsp?picUrlId=2" frameborder=0 scrolling=no width="300" height="25"></iframe>
</div>
</td>
</tr>
其中picUrlId是上传后返回的文件的路径填写在哪个文本框的标志,这使得同一个页面能多处引用这个上传图片的页面
upLoadFile.jsp
<%@ page language="java" contentType="text/html; charset=GBK"%>
<%@ 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%>" target=_self><!-- 如果用IE6浏览,这里必须要加上target=_self否则将无法将数据写回父窗口中的文本框 -->
<title>上传图片</title>
<link rel="StyleSheet" type="text/css" href="common/dtree.css"/>
<script type="text/javascript" src="common/dtree.js"></script>
<script type="text/javascript">
function returnValue(picUrl){
formdiv.style.display="none";
messagediv.style.display="";
var picUrlId = document.getElementById("picUrlId").value;
if (picUrlId==1){
parent.document.sysMenuForm.icon.value=picUrl;
} else if (picUrlId==2){
parent.document.sysMenuForm.iconOpen.value=picUrl;
}
}
function check(){
var strFileName=document.uploadForm.myFile.value;
if (strFileName=="")
{
alert("请选择要上传的文件");
document.uploadForm.myFile.focus();
return false;
}
}
</script>
</head>
<body topmargin="0" bottommargin="0" leftmargin="0" onload="this.focus();">
<table width="100%" height="100%" cellspacing="0" cellpadding="0" align="center">
<tr>
<td valign="top" valign="middle">
<div id="formdiv">
<form action="sysmanage/SysMenuManageAction!upLoadImage.action" method="post" name="uploadForm" onSubmit="check();" enctype="multipart/form-data">
<input name="myFile" type="FILE">
<input type="submit" name="Submit" value="上传" >
<input name="picUrlId" type="hidden" id="picUrlId" value="<%=request.getParameter("picUrlId")%>">
</form>
</div>
<div id="messagediv" style="display:none;font-size:9pt;text-align:center;">
上传成功!
</div>
</td>
</tr>
</table>
</body>
</html>
<s:if test="#request.imageFilePath!=null" >
<script type="text/javascript">
returnValue('<s:property value="imageFilePath"/>');
</script>
</s:if>
Action中的代码
//上传图片参数
private static final int BUFFER_SIZE = 16 * 1024 ;
private File myFile; //上传文件的路径
private String contentType;
private String fileName;
private String imageFilePath; //返回的图标的存储路径
private static void copy(File src, File dst) {
try {
InputStream in = null ;
OutputStream out = null ;
try {
in = new BufferedInputStream( new FileInputStream(src), BUFFER_SIZE);
out = new BufferedOutputStream( new FileOutputStream(dst), BUFFER_SIZE);
byte [] buffer = new byte [BUFFER_SIZE];
while (in.read(buffer) > 0 ) {
out.write(buffer);
}
} finally {
if ( null != in) {
in.close();
}
if ( null != out) {
out.close();
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
private static String getExtention(String fileName) {
int pos = fileName.lastIndexOf( "." );
return fileName.substring(pos);
}
public String upLoadImage(){
log.info(">>>>>>>>>>>>>>开始上传图标........");
HttpServletRequest request = ServletActionContext.getRequest();
String imageFileName = new Date().getTime() + getExtention(fileName);
File imageFile = new File(ServletActionContext.getServletContext().getRealPath( "img" ) + "/" + imageFileName);
imageFilePath = "img" + "/" + imageFileName;
copy(myFile, imageFile);
log.info(">>>>>>>>>>图标上传完成");
return Constants.Dispatcher.TO_UPLOAD_FILE;
}
分享到:
相关推荐
struts2.0非常实用的实例 本人自己精心准备 struts2.0文件上传 拦截器 验证器 struts.xml配置文档详解 本人在该实例中遇到的最大问题及解决方案: "struts2.0做文件上传关于所加载的错误包造成的问题心得" 1:commons-...
在"struts2.0与spring2.0集成实例"中,主要的知识点包括以下几个方面: 1. **Struts2.0**:Struts2.0的核心是Action类,它是业务逻辑的入口点。它通过配置文件(struts.xml)与前端视图(JSP)和后端模型...
Struts2.0文件上传是Java Web开发中的一个重要实践,它允许用户在Web应用程序中上传文件,例如图片、文档或音频文件。这个实例是针对初学者设计的,可以帮助理解并实现这一功能。以下是对Struts2.0文件上传机制及其...
本教程将深入探讨Struts2.0的经典实例,特别是结合JFreeChart进行图表展示的实践方法。 首先,让我们了解Struts2.0的核心概念。Struts2.0基于Model-View-Controller模式,它简化了Java Servlet和JSP的开发,通过...
包含了Struts2.0的进阶主题,如动态方法调用(Dynamic Method Invocation,DMI)、OGNL(Object-Graph Navigation Language)表达式语言的使用、异常处理机制、国际化(Internationalization, i18n)支持以及文件上传...
本实例重点讲解Struts2.0中的文件上传和下载功能,这对于任何处理用户数据交互的Web应用都是必不可少的特性。 在Struts2中,文件上传是通过`struts2-core.jar`、`commons-fileupload.jar`和`commons-io.jar`等库来...
通过代码实例,读者可以深入理解如何配置Struts2.0的XML配置文件,如何创建Action类,如何编写拦截器,以及如何与数据库进行交互等。此外,书中可能还涵盖了使用Struts2.0与其他技术的集成,如Spring、Hibernate等,...
本实例是一个入门级别的练习,旨在帮助初学者理解和掌握Struts2.0与Spring2.0的集成应用。 在Struts2.0中,Action类是业务逻辑的核心,它处理用户请求并返回相应的结果。在这个实例中,只有一个Action类,这意味着...
本实例"struts2.0最新实例3"旨在通过具体的实践案例,帮助你深入理解和掌握Struts2.0的核心特性和用法。 1. **Struts2框架概述**:Struts2是Apache软件基金会的开源项目,它是Struts1.x的升级版,吸收了WebWork框架...
4. **丰富的插件支持**:Struts 2.0拥有众多插件,可以扩展框架的功能,如Ajax支持、文件上传下载、PDF生成等。 5. **模板技术**:Struts 2.0支持FreeMarker和Velocity等多种模板技术,方便开发者选择最适合的视图...
接下来,我们来看一下如何在Struts2.0中实现一个文件上传的实例。首先,我们需要在Action类中定义一个字段来存储上传的文件,例如: ```java private File file; private String fileContentType; private String ...
在本文中,我们将深入探讨如何使用ExtJS的UploadDialog插件与Struts2.0框架相结合,实现一个功能完备的多文件上传功能。这是一项在Web应用开发中常见的需求,对于用户交互性和数据管理有着重要作用。 首先,让我们...
然而,这只是Struts2.0的冰山一角,深入学习还需要掌握更多的概念,如国际化的处理、文件上传下载、异常处理、自定义拦截器等。提供的动画教程和实例源码会进一步辅助你深化理解,通过实战提升技能。在学习过程中,...
1. **拦截器(Interceptors)**:Struts 2.0引入了拦截器的概念,它们类似于AOP(面向切面编程)中的切面,可以插入到动作调用流程中,实现如日志、事务管理、权限检查等功能。 2. **强大的配置方式**:Struts 2.0...
Struts2.0是Java Web开发中广泛使用的MVC(模型-视图-控制器)框架,它是Apache软件基金会Struts项目的重要版本。本教程旨在深入浅出地介绍Struts2.0的核心概念、架构和实战应用,帮助开发者快速掌握这一强大的框架...
Struts2.0+jquery.progressbar实现上传文件进度条 附带实例源码 uploadJqueryProgress.jsp uploadprogress.jsp 两个上传页面,两种不一样风格的进度条。uploadJqueryProgress.jsp 是在 uploadprogress.jsp 的基础...
未上传的视频文件可能包含详细的操作演示和讲解,如如何创建Action、编写配置文件、调试程序等,这些都是理解和掌握Struts 2.0不可或缺的部分。 通过这个实例,学习者可以了解到如何使用Struts 2.0构建一个完整的...
以下是对Struts2.0文件上传原理的详细解释: 1. **HTTP协议与表单提交** 在HTML表单中,如果需要上传文件,`<form>`标签必须包含`enctype="multipart/form-data"`属性。这是因为普通POST请求无法处理二进制数据,...
本教程将深入探讨Struts2.0如何实现文件的上传与下载,并通过具体的实例进行解析。 ### 文件上传 在Struts2中,文件上传主要依赖于`Commons FileUpload`库。以下是一些关键知识点: 1. **表单设计**:首先,我们...
Struts2.0是一个强大的基于MVC(Model-View-Controller)设计模式的Java开源框架,被誉为MVC2,因为它相较于传统的Struts1框架在设计理念上有显著提升。该框架采用"pull"方式来处理请求,这使得它更加灵活且易于扩展...