`

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

阅读更多
COPY兄弟博客
http://12345678.iteye.com/blog/713954
引用
Struts标签库中的文件上传标签(<html:file>)的使用,利用<html:file>实现文件上传一般分为四步:

第一步:

编写JSP页面,在页面中使用struts标签库提供的标签,至少FORM表单组件相关的标签要使用struts提供的。
示例:
JSP页面中的FORM表单块.
Jsp代码
<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> 

<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类.
Java代码
public class UploadForm extends ActionForm {  
 
    private FormFile myFile;  
 
    public FormFile getMyFile() {  
        return myFile;  
    }  
 
    public void setMyFile(FormFile myFile) {  
        this.myFile = myFile;  
    }  


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。
Java代码
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");  
    }  


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文件。
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> 

<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>
分享到:
评论

相关推荐

    struts2 标签使用

    ### Struts2 `&lt;s:if&gt;` 标签使用详解 #### 概述 Struts2 是一款基于 Java 的企业级 Web 应用框架,它利用了 MVC(Model-View-Controller)架构模式来帮助开发者构建可扩展、易于维护的 Web 应用程序。在 Struts2 中...

    struts标签(如<html:form>)

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

    JSP Struts之HTML标签库详解

    1. **基本HTML元素标签**:这些标签用于生成常见的HTML元素,如`&lt;html&gt;`、`&lt;base&gt;`和`&lt;img&gt;`。例如,`&lt;html:html&gt;`标签可以设置HTML文档的语言环境,而`&lt;html:base&gt;`则可以设置页面的基础URL。`&lt;html:img&gt;`用于插入...

    Struts1.x HTML标签库

    与HTML的`&lt;form&gt;`标签不同,`&lt;html:form&gt;`的`action`属性需要指定一个Struts的动作(Action),这个动作必须在`struts-config.xml`配置文件中定义。否则,页面在尝试提交时会抛出异常,导致JSP页面无法正常工作。...

    Struts2标签 UI标志又可以分为表单UI和非表单UI两部分

    &lt;s:file tooltip="UploadYourPicture" label="图片" name="picture"/&gt; ``` #### 三、非表单UI标签 非表单UI标签主要用于实现一些非表单相关的功能,例如条件判断、循环迭代等。 1. **If/ElseIf/Else标签** - ...

    Struts1.x的标签库使用示例

    &lt;title&gt;Struts1.x Login Form&lt;/title&gt; &lt;/head&gt; &lt;body&gt; &lt;s:form action="login"&gt; &lt;s:textfield name="username" label="用户名" /&gt; &lt;s:textfield name="password" label="密码" type="password" /&gt; &lt;s:submit ...

    struts1.x_Tags

    - 使用Struts标签时,需要在JSP页面中引入对应的标签库,例如`&lt;%@ taglib prefix="html" uri="/tags/html" %&gt;`。 - 每个标签都有其特定的属性,正确设置这些属性才能确保标签正常工作。 - 在处理表单时,Struts会...

    struts2配置2.5版

    &lt;constant name="struts.devMode" value="true" /&gt; &lt;package name="default" namespace="/" extends="struts-default"&gt; &lt;action name="helloworld" class="com.mytest.HelloWorldAction"&gt; &lt;result&gt; /result....

    html版struts1.X标签详解-帮助文档

    1. **ActionForm标签**:这些标签用于与ActionForm对象交互,如`&lt;html:form&gt;`用于创建表单,`&lt;html:text&gt;`、`&lt;html:password&gt;`等则用于创建表单字段,与ActionForm的属性绑定。 2. **Bean标签**:Bean标签库用于...

    struts1_标签

    此外,`&lt;html:checkbox&gt;`和`&lt;html:radio&gt;`用于创建复选框和单选按钮,而`&lt;html:file&gt;`则用于处理文件上传。`&lt;html:select&gt;`配合`&lt;html:option&gt;`用于创建下拉列表。 Bean标签库则是为了方便访问和操作JavaBean中的...

    java web标签大全

    3. Struts1:Struts是一个基于MVC(Model-View-Controller)设计模式的Java Web框架。Struts1的标签库包括逻辑标签(如&lt;logic:iterate&gt;、&lt;logic:equal&gt;)、HTML标签(如&lt;html:form&gt;、&lt;html:text&gt;)和bean标签(如...

    Struts2中实现页面的跳转

    1. **配置文件**:在struts.xml中,你需要为每个Action定义一个对应的Action类和结果。如果使用`&lt;jsp:forward/&gt;`,则需要在Result类型中指定为`dispatcher`,并设置目标页面的路径。例如: ```xml &lt;action name=...

    经典的struts1.x的标签

    例如,使用`&lt;html:form&gt;`标签创建表单,结合`&lt;html:submit&gt;`和`&lt;html:reset&gt;`按钮;通过`&lt;bean:write&gt;`显示JavaBean的属性;利用`&lt;logic:iterate&gt;`遍历集合并显示数据;使用`&lt;tiles:insert&gt;`组织页面结构。同时,...

    struts标签.zip

    - `&lt;s:include&gt;`:包含其他JSP或Struts标签页。 2. **表单标签库**: - `&lt;s:form&gt;`:创建HTML表单,自动绑定到Action类的属性。 - `&lt;s:textfield&gt;`:创建文本输入框,关联Action的属性。 - `&lt;s:textarea&gt;`:...

    struts1标签.docstruts1标签.docstruts1标签.doc

    例如,`&lt;html:form&gt;`标签用于创建表单,`&lt;html:text&gt;`、`&lt;html:hidden&gt;`、`&lt;html:textarea&gt;`、`&lt;html:radio&gt;`、`&lt;html:checkbox&gt;`、`&lt;html:submit&gt;`和`&lt;html:reset&gt;`分别用于创建文本输入框、隐藏输入、文本区域、...

    Struts2全部标签使用说明

    - `&lt;s:file&gt;` 标签用于处理文件上传,与Struts2的文件上传功能结合使用。 - `&lt;s:form&gt;` 创建表单,可以指定Action,收集用户输入的数据。 G. `&lt;s:generator&gt;` 和 `&lt;s:iterator&gt;`: - `&lt;s:generator&gt;` 通常与`s:...

    struts配置文件.docx

    1. `&lt;html:text&gt;`和`&lt;html:textarea&gt;`:用于创建文本输入和文本区域。它们的`name`属性对应ActionForm Bean的名称,`property`属性则表示表单数据要映射到Bean的属性。 2. `&lt;html:checkbox&gt;`和`&lt;html:multibox&gt;`:...

    struts-html标签

    1. `&lt;html:html&gt;`标签:这是Struts HTML标签库的基础,它可以设置`locale`属性,用于处理国际化,如果未指定`locale`对象,系统会从请求头的`accept-language`中获取。此外,还可以设置`lang`属性,替代Struts 1.2...

    struts html标签例子

    1. `&lt;html:form&gt;`:这是创建表单的基础标签,它相当于HTML中的`&lt;form&gt;`标签。通过指定`action`属性,可以设置表单提交的URL,通常指向一个Struts Action。`method`属性则定义了表单数据的提交方式,通常是`POST`或`...

Global site tag (gtag.js) - Google Analytics