一.使用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 >
<! 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 >
<! 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");
}
}
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 >
<! 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;
}
}
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");
}
}
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 >
<! 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 >