`

Struts 1.XX <html:file>的使用

阅读更多
Struts标签库中的文件上传标签(<html:file>)的使用,利用<html:file>实现文件上传一般分为四步:

第一步:

编写JSP页面,在页面中使用struts标签库提供的标签,至少FORM表单组件相关的标签要使用struts提供的。
示例:
JSP页面中的FORM表单块.
<html:form action="upload.do" method="post" enctype="multipart/form-data">
      <table border="0">
        <tr>
          <td>文件上传:</td>
          <td><html:file property="myFile" /></td>
        </tr>
        <tr>
        </tr>
        <tr>
          <td colspan="2" align="center"><html:submit value="上传"/></td>
        </tr>
      </table>
</html:form>

其中需要注意的:
1.<html:form>中的属性enctype="multipart/form-data"是不可少的。
为什么是必须呢?
表单中enctype="multipart/form-data"的意思,是设置表单的MIME编码。默认情况,这个编码格式是application/x-www-form-urlencoded,不能用于文件上传;只有使用了multipart/form-data,才能完整的传递文件数据,设置enctype="multipart/form-data"是上传二进制数据。
2.这里使用到的是struts标签库是“struts-html.tld”,所以在JSP页面中需要导入。

完成了JSP页面的编写后,开始第二步。

第二步:

编写ActionForm。
示例:
继承了ActionForm的Java类.
public class UploadForm extends ActionForm {

	private FormFile myFile;

	public FormFile getMyFile() {
		return myFile;
	}

	public void setMyFile(FormFile myFile) {
		this.myFile = myFile;
	}
}

当中提供了一个org.apache.struts.upload.FormFile类型的变量----myFile。注意这里的myFile命名一般不要随便命名,它一般和上传组件<html:file>的属性property的值保持一致(如果不是一样,那么这里提供的set方法就必须与property值保持“一致”,这里所谓的一致就是说property值与ActionForm提供的get和set方法放在一起一定要满足javabean中的get和set方法的命名规范)。
ActionForm编写完成后,就可以开始第三步了。

第三步:

编写Action。
public class UploadAction extends Action {
	@Override
	public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		UploadForm uf = (UploadForm) form;
		//得到FormFile对象,这个对象把要上传的文件封装成了流的形式,
		//并且当中还封装了上传文件的一些信息,如文件名字等等。
		FormFile myFile = uf.getMyFile();
		
		InputStream in = null;
		OutputStream out = null;
		try {
			//得到上传文件的流,可以通过这个流读取上传文件
			in = myFile.getInputStream();
			//得到服务器的保存图片的路径
			String path = this.servlet.getServletContext().getRealPath(
					"/upload");
			//得到上传文件的名字
			String fileName = myFile.getFileName();
			out = new FileOutputStream(path + "/" + fileName);
			
			byte[] b = new byte[1024];
			int length = 0;
			//开始上传文件,每读取1024个字节,就向服务器指定路径位置写入读取到的字节。
			while ((length = in.read(b)) != -1) {
				out.write(b, 0, length);
				out.flush();
			}
		} catch (IOException ioe) {
			ioe.printStackTrace();
		} finally {
			//关闭流
			in.close();  
			out.close();
		}
		return mapping.findForward("success");
	}
}

Action编写完成就只差最后一步。

第四步:

配置struts-config.xml文件。
<form-beans>
	<form-bean name="uploadForm" type="com.lovo.struts.form.UploadForm"></form-bean>
</form-beans>

<action-mappings>
	<action path="/upload" name="uploadForm" type="com.lovo.struts.action.UploadAction">
		<forward name="success" path="/success.jsp"></forward>
	</action>
</action-mappings>

做到这里就大功告成了,这样一来上传文件就变得如此的简单。
3
1
分享到:
评论

相关推荐

    struts2 <s:if>标签使用

    struts2 &lt;s:if&gt;标签使用struts2 &lt;s:if&gt;标签使用struts2 &lt;s:if&gt;标签使用struts2 &lt;s:if&gt;标签使用struts2 &lt;s:if&gt;标签使用struts2 &lt;s:if&gt;标签使用

    struts标签(如<html:form>)

    关于STRUTS标签的一些详细说明。 如:&lt;html:form&gt;的说明。

    struts2<s:if>使用心得

    &lt;td&gt; &lt;s:set name="actorRef" value="actorId" /&gt; &lt;s:set name="taskName" value="name" /&gt; &lt;s:if test="#actorRef=='' or #actorRef==null"&gt;共享任务(&lt;a href="${pageContext.request.contextPath}/ga/...

    Struts2中使用标签实现组合查询和带分页的例子

    NULL 博文链接:https://z18022893621.iteye.com/blog/1956098

    struts与jsp 使用方法

    在action里面写了方法获取一个list,再将这个list的值放到jsp页面中显示出来,用的是&lt;s:iterator&gt;标签。

    struts2 OGNL之&lt;s:property&gt;标签访问值栈(value stack)用法

    struts2 OGNL之&lt;s:property&gt;标签访问值栈(value stack)用法,希望能对大家有帮助

    struts框架jar包

    struts-1.3.8 包(&lt;br&gt;&lt;br&gt;antlr-2.7.2.jar&lt;br&gt;bsf-2.3.0.jar&lt;br&gt;commons-beanutils-1.7.0.jar&lt;br&gt;commons-chain-1.1.jar&lt;br&gt;commons-digester-1.8.jar&lt;br&gt;commons-fileupload-1.1.1.jar&lt;br&gt;commons-io-1.1.jar&lt;br&gt;...

    struts2 标签库 帮助文档

    &lt;%@ taglib prefix="s" uri="/struts-tags" %&gt; 就能使用struts2.0的标签库 下面就介绍每个标签的具体应用实例说明:按字母排列 A: 1. 2. &lt;s:a href=""&gt;&lt;/s:a&gt;-----超链接,类似于html里的&lt;a&gt;&lt;/a&gt; 3. &lt;s:...

    logic:iterate标签当遍历的collection为Map时的使用

    1. Map里存放的是bean时&lt;br&gt;&lt;br&gt;&lt;logic:iterate id="destMap" name="srcMap"&gt;&lt;br&gt;&lt;br&gt; &lt;bean:define id="bean" name="destMap" property="value" /&gt;&lt;br&gt;&lt;br&gt; &lt;bean:write name="bean" property="name" /&gt;&lt;br&gt;&lt;br&gt;&lt;/...

    struts2文件上传下载

    struts2文件上传与下载, &lt;s:form name="Myform" action="/fileManage/upload" method="post" enctype="multipart/form-data" theme="simple" &gt; &lt;s:fielderror&gt;&lt;/s:fielderror&gt; &lt;s:file name="image" label=...

    Struts2标签库

    &lt;%@ taglib uri="/struts-tags" prefix="s" %&gt; 结合例子,重点掌握以下标签的用法 (1) &lt;s:property&gt; (2) &lt;s:set&gt; (3) &lt;s:if&gt; 、&lt;s:elseif&gt;、&lt;s:else&gt; (4) &lt;s:iterator&gt; (5) &lt;s:include&gt; (6) &lt;s:form&gt;、&lt;s:hidden&gt; (7...

    Struts2标签库的所有

    &lt;%@ taglib uri="/struts-tags" prefix="s" %&gt; 结合例子,重点掌握以下标签的用法 (1) &lt;s:property&gt; (2) &lt;s:set&gt; (3) &lt;s:if&gt; 、&lt;s:elseif&gt;、&lt;s:else&gt; (4) &lt;s:iterator&gt; (5) &lt;s:include&gt; (6) &lt;s:form&gt;、&lt;s:hidden&gt; (7...

    struts2整合spring2的配置

    1. 导入的包&lt;br&gt;&lt;br&gt;l struts2的五个基础包:commons-logging-1.1.jar;&lt;br&gt;&lt;br&gt;freemarker-2.3.8.jar;&lt;br&gt;&lt;br&gt;ognl-2.6.9.jar;&lt;br&gt;&lt;br&gt;struts-core-2.0.6.jar;&lt;br&gt;&lt;br&gt;xwork-2.0.0.jar.&lt;br&gt;&lt;br&gt;l spring的核心包:...

    java三大框架注解配置

    &lt;constant name="struts.objectFactory" value="org.apache.struts2.spring.StrutsSpringObjectFactory" /&gt; 修改struts默认的拦截: &lt;filter-mapping&gt; &lt;filter-name&gt;struts2&lt;/filter-name&gt; &lt;url-pattern&gt;*....

    spring+struts+hibernate+dwr+jstl做的实例

    struts.jar&lt;br&gt;spring-web.jar&lt;br&gt;spring-webmvc.jar&lt;br&gt;spring-portlet.jar&lt;br&gt;struts.jar&lt;br&gt;commons-fileupload.jar&lt;br&gt;commons-httpclient.jar&lt;br&gt;freemarker.jar&lt;br&gt;jasperreports-1.3.3.jar&lt;br&gt;commons-io.jar...

    struts2标签技术

    例1: 生成一个简单的iterator,并且使用iterator标签打印出内容。 &lt;s:generator val="%{'aaa,bbb,ccc,ddd,eee'}"&gt; &lt;s:iterator&gt; &lt;s:property /&gt;&lt;br/&gt; &lt;/s:iterator&gt; &lt;/s:generator&gt; 例2: 生成一个iterator,...

    servlet.jar 等

    springetc.rar&lt;br&gt;包含如下包:&lt;br&gt;saaj.jar&lt;br&gt;serializer-2.7.0.jar&lt;br&gt;servlet.jar&lt;br&gt;servlet-api.jar&lt;br&gt;slf4j-api-1.3.1.jar&lt;br&gt;slf4j-simple-1.3.1.jar&lt;br&gt;smtp.jar&lt;br&gt;soap.jar&lt;br&gt;spring.jar&lt;br&gt;spring-mock...

    oa办公系统基于ssh+Sql Server

    &lt;form name="form1" action="login.do" method="post"&gt; &lt;table width="300" border="1"&gt; &lt;tr&gt; &lt;td colspan="2"&gt;&lt;bean:message key=...&lt;html:errors property="org.apache.struts.action.GLOBAL_MESSAGE" /&gt;&lt;/form&gt;

    李兴华Java Web开发实战经典.pdf (高清版) Part1

    5.2.3、第三种Scriptlet:&lt;%=%&gt; 5.3、Scriptlet标签 5.4、page指令 5.4.1、设置页面的MIME 5.4.2、设置文件编码 5.4.3、错误页的设置 5.4.4、数据库连接操作 5.5、包含指令 5.5.1、静态包含 5.5.2、动态...

Global site tag (gtag.js) - Google Analytics