Struts 1 学习笔记-4-1(Struts动态表单的测试以及上传文件的应用)

来源:互联网 发布:淘宝店铺客服话术大全 编辑:程序博客网 时间:2024/06/08 10:31

一.使用Struts的动态表单可以免去再编写一个ActionForm的步骤,在有些地方比较适合使用 

1.首先编写一个简单的前台输入界面index.jsp:

<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  
<head>
  
</head>
  
  
<body>
    
<h1>测试ActionForm</h1>
    
    
<hr>
    
<li>测试Struts动态表单</li><br>
    
<form action="dynaticformtext.do">
        Name : 
<input type="text" name="name"><br>
        Age : 
<input type="text" name="age"><br>
        
<input type="submit" value="sumbit">
    
</form>
    
</body>
</html>

 

2.编写Struts-config.xml(注意form-bean中type的路径,以及form-property的配置):

 

<?xml version="1.0" encoding="ISO-8859-1" ?>

<!DOCTYPE struts-config PUBLIC
          "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
          "http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd"
>

<struts-config>
    
    
<form-beans>
        
<form-bean name="dynaticActionForm" type="org.apache.struts.action.DynaActionForm">
            
<form-property name="name" type="java.lang.String"></form-property>
            
<form-property name="age" type="java.lang.Integer"></form-property>
        
</form-bean>
    
</form-beans>
    
    
<action-mappings>
        
<action path="/dynaticformtext" type="com.codedestiny.struts.DynaticActionFormTestAction" name="dynaticActionForm" scope="request">
            
<forward name="success" path="/index.jsp"></forward>
        
</action>
    
</action-mappings>
    
    
<message-resources parameter="MessageResources" />
</struts-config>

 

3.DynaticActionFormTestAction.java:(注意其中的数据在取出是要进行相应的格式转换)

package com.codedestiny.struts;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.DynaActionForm;

public class DynaticActionFormTestAction extends Action {

    
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
        
        DynaActionForm daf 
= (DynaActionForm)form;
        String name 
= (String)daf.get("name");
        
int age = (Integer)daf.get("age");
        
        System.out.println(
"Name : " + name);
        System.out.println(
"age : " + age);
        
        
return mapping.findForward("success");
    }

    
}

 

 

二.Struts的文件上传的测试:

注意:在Struts中file的类型为FormFIle,这一点要切记。还有form的提交方式要为post,enctype="multipart/form-data"

1.index.jsp:

<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  
<head>
  
</head>
  
  
<body>
    
<h1>测试ActionForm</h1>
    
    
<hr>
    
<li>测试Struts动态表单</li><br>
    
<form action="dynaticformtext.do">
        Name : 
<input type="text" name="name"><br>
        Age : 
<input type="text" name="age"><br>
        
<input type="submit" value="sumbit">
    
</form>
    
    
<hr>
    
<li>测试Struts文件上传</li><br>
    
<form action="upload.do" method="post" enctype="multipart/form-data">    
        
<input type="file" name="myFile"><br>
        
<input type="text" name="title"><br>
        
<input type="submit" value="upload">
    
</form>
        
  
</body>
</html>

 

2.编写ActionForm : UploadActionForm.java

package com.codedestiny.struts;

import org.apache.struts.action.ActionForm;
import org.apache.struts.upload.FormFile;

public class UploadActionForm extends ActionForm {
    
    
private FormFile myFile;  // the type of file must be FormFile
    private String title;
    
    
public FormFile getMyFile() {
        
return myFile;
    }

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

    
public String getTitle() {
        
return title;
    }

    
public void setTitle(String title) {
        
this.title = title;
    }

    
}

 

3.UploadAction.java:

package com.codedestiny.struts;

import java.io.FileOutputStream;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.upload.FormFile;

public class UploadAction extends Action {

    
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
        
        UploadActionForm uaf 
= (UploadActionForm)form;
        FormFile myFile 
= uaf.getMyFile();
        String title 
= uaf.getTitle();
        
        System.out.println(
"Title : " + title);
        
        
if(myFile != null{
            System.out.println(
"MyFile : " + myFile.getFileName());
            FileOutputStream fos 
= new FileOutputStream("c:/" + myFile.getFileName());
            fos.write(myFile.getFileData());
            fos.flush();
            fos.close();
        }

        
        
return mapping.findForward("success");
    }

}

 

4.struts-config.xml:

<?xml version="1.0" encoding="ISO-8859-1" ?>

<!DOCTYPE struts-config PUBLIC
          "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
          "http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd"
>

<struts-config>
    
    
<form-beans>
        
<form-bean name="dynaticActionForm" type="org.apache.struts.action.DynaActionForm">
            
<form-property name="name" type="java.lang.String"></form-property>
            
<form-property name="age" type="java.lang.Integer"></form-property>
        
</form-bean>
        
<form-bean name="uploadActionForm" type="com.codedestiny.struts.UploadActionForm">
        
</form-bean>
    
</form-beans>
    
    
<action-mappings>
        
<action path="/dynaticformtext" type="com.codedestiny.struts.DynaticActionFormTestAction" name="dynaticActionForm" scope="request">
            
<forward name="success" path="/index.jsp"></forward>
        
</action>
        
<action path="/upload" type="com.codedestiny.struts.UploadAction" name="uploadActionForm" scope="request">
            
<forward name="success" path="/index.jsp"></forward>
        
</action>
    
</action-mappings>
    
    
<message-resources parameter="MessageResources" />
</struts-config>

原创粉丝点击