簡単なstrutsの例

64565 ワード

index.jsp
 

  
  
  
  
  1.  
  2.  
  3. <%@ page language="java" import="java.util.*" pageEncoding="GB18030"%> 
  4. <%  
  5. String path = request.getContextPath();  
  6. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";  
  7. %> 
  8.  
  9. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
  10. <html> 
  11.   <head> 
  12.     <base href="<%=basePath%>"> 
  13.       
  14.     <title> ActionForm</title> 
  15.     <meta http-equiv="pragma" content="no-cache"> 
  16.     <meta http-equiv="cache-control" content="no-cache"> 
  17.     <meta http-equiv="expires" content="0">      
  18.     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> 
  19.     <meta http-equiv="description" content="This is my page"> 
  20.     <!--  
  21.     <link rel="stylesheet" type="text/css" href="styles.css">  
  22.     --> 
  23.   </head> 
  24.     
  25.   <body> 
  26.       <h1> ActionForm</h1> 
  27.       <hr> 
  28.       <li> ActionForm</li><br> 
  29.       <form action="dyanactionform.do" method="post"> 
  30.            :<input type="text" name="username"><br> 
  31.             :<input type="text" name="age"><br> 
  32.            <input type="submit" value=" ">      
  33.       </form>    
  34.       <p> 
  35.       <li> struts </li><br> 
  36.       <form action="upload.do" method="post" enctype="multipart/form-data"> 
  37.            :<input type="text" name="title"><br> 
  38.            :<input type="file" name="myfile"><br> 
  39.           <input type="submit" value=" "> 
  40.       </form> 
  41.       <p> 
  42.       <li> </li><br> 
  43.       <form action="blankfield.do" method="post"> 
  44.            :<input type="text" name="username"><br> 
  45.           <input type="submit" value=" "> 
  46.       </form> 
  47.        <p> 
  48.        <li> ActionForm </li><br> 
  49.        <form action="typeconvert.do" method="post"> 
  50.            intValue:<input type="text" name="intValue"><br> 
  51.            doubleValue:<input type="text" name="doubleValue"><br> 
  52.            booleanValue:<input type="text" name="booleanValue"><br> 
  53.            java.sql.Date:<input type="text" name="sqlDate"><br> 
  54.            java.util.Date:<input type="text" name="utilDate"><br> 
  55.            <input type="submit" value=" "> 
  56.        </form> 
  57.   </body> 
  58. </html> 

プロファイル
struts-config.xml
 

  
  
  
  
  1.  
  2.  
  3. <?xml version="1.0" encoding="ISO-8859-1" ?> 
  4.  
  5. <!DOCTYPE struts-config PUBLIC  
  6.           "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"  
  7.           "http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd"> 
  8.  
  9. <struts-config> 
  10.     <form-beans> 
  11.         <form-bean name="dynaForm" type="org.apache.struts.action.DynaActionForm"> 
  12.             <form-property name="username" type="java.lang.String"/> 
  13.             <form-property name="age" type="java.lang.Integer"/> 
  14.         </form-bean> 
  15.           
  16.         <form-bean name="uploadForm" type="com.bjsxt.struts.UploadActionForm"/> 
  17.           
  18.         <form-bean name="blankFieldForm" type="com.bjsxt.struts.BlankFieldActionForm"/> 
  19.           
  20.         <form-bean name="typeconvertForm" type="com.bjsxt.struts.TypeConvertActionForm"/> 
  21.     </form-beans> 
  22.       
  23.     <action-mappings> 
  24.         <action path="/dyanactionform" 
  25.                 type="com.bjsxt.struts.DynaActionFormTestAction" 
  26.                 name="dynaForm" 
  27.                 scope="request" 
  28.         > 
  29.             <forward name="success" path="/dyna_actionform.jsp"/> 
  30.         </action> 
  31.           
  32.         <action path="/upload" 
  33.                 type="com.bjsxt.struts.UploadTestAction" 
  34.                 name="uploadForm" 
  35.                 scope="request" 
  36.         > 
  37.             <forward name="success" path="/upload_success.jsp"/> 
  38.         </action> 
  39.           
  40.         <action path="/blankfield" 
  41.                 type="com.bjsxt.struts.BlankFieldTestAction" 
  42.                 name="blankFieldForm" 
  43.                 scope="request"          
  44.         > 
  45.             <forward name="success" path="/blankfield_success.jsp"/> 
  46.         </action> 
  47.           
  48.         <action path="/typeconvert" 
  49.                 type="com.bjsxt.struts.TypeConvertTestAction" 
  50.                 name="typeconvertForm" 
  51.                 scope="request" 
  52.         > 
  53.             <forward name="success" path="/typeconvert_success.jsp"/>      
  54.         </action> 
  55.     </action-mappings> 
  56.       
  57.     <controller maxFileSize="10M"/> 
  58.       
  59.     <plug-in className="com.bjsxt.struts.UtilDateConverterInitWithPlugin"/> 
  60. </struts-config> 

1、AtionForm
 

  
  
  
  
  1.  
  2.  
  3. package com.bjsxt.struts;  
  4.  
  5. import org.apache.struts.action.ActionForm;  
  6.  
  7. /**  
  8.  *   
  9.  * @author Administrator  
  10.  *  
  11.  */  
  12. public class BlankFieldActionForm extends ActionForm {  
  13.  
  14.     private String username;  
  15.       
  16.     private String password;  
  17.  
  18.     public String getUsername() {  
  19.         return username;  
  20.     }  
  21.  
  22.     public void setUsername(String username) {  
  23.         this.username = username;  
  24.     }  
  25.  
  26.     public String getPassword() {  
  27.         return password;  
  28.     }  
  29.  
  30.     public void setPassword(String password) {  
  31.         this.password = password;  
  32.     }  

 

  
  
  
  
  1.  
  2.  
  3. package com.bjsxt.struts;  
  4.  
  5. import javax.servlet.http.HttpServletRequest;  
  6. import javax.servlet.http.HttpServletResponse;  
  7.  
  8. import org.apache.struts.action.Action;  
  9. import org.apache.struts.action.ActionForm;  
  10. import org.apache.struts.action.ActionForward;  
  11. import org.apache.struts.action.ActionMapping;  
  12.  
  13. /**  
  14.  *   
  15.  * @author Administrator  
  16.  *  
  17.  */  
  18. public class BlankFieldTestAction extends Action {  
  19.  
  20.     @Override  
  21.     public ActionForward execute(ActionMapping mapping, ActionForm form,  
  22.             HttpServletRequest request, HttpServletResponse response)  
  23.             throws Exception {  
  24.         return mapping.findForward("success");  
  25.     }  
  26.  

 

  
  
  
  
  1.  
  2.  
  3. <%@ page language="java" contentType="text/html; charset=GB18030" 
  4.     pageEncoding="GB18030"%> 
  5. <%@ page import="com.bjsxt.struts.*" %>      
  6. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
  7. <html> 
  8. <head> 
  9. <meta http-equiv="Content-Type" content="text/html; charset=GB18030"> 
  10. <title>Insert title here</title> 
  11. </head> 
  12. <body> 
  13.     <%  
  14.         BlankFieldActionForm form = (BlankFieldActionForm)request.getAttribute("blankFieldForm");  
  15.      %> 
  16.     <li>jsp </li><br> 
  17.      :<%=form.getUsername() %><br> 
  18.      :<%=form.getPassword() %><br> 
  19.     <p> 
  20.     <li>el </li><br> 
  21.      :${blankFieldForm.username }<br> 
  22.      :${blankFieldForm.password }<br> 
  23. </body> 
  24. </html> 

ビジネスロジッククラス
DynaActionFormTestAction.java
 

  
  
  
  
  1.  
  2.  
  3. package com.bjsxt.struts;  
  4.  
  5. import javax.servlet.http.HttpServletRequest;  
  6. import javax.servlet.http.HttpServletResponse;  
  7.  
  8. import org.apache.struts.action.Action;  
  9. import org.apache.struts.action.ActionForm;  
  10. import org.apache.struts.action.ActionForward;  
  11. import org.apache.struts.action.ActionMapping;  
  12. import org.apache.struts.action.DynaActionForm;  
  13.  
  14. /**  
  15.  *  ActionForm  
  16.  * @author Administrator  
  17.  *  
  18.  */ 
  19. public class DynaActionFormTestAction extends Action {  
  20.  
  21.     @Override 
  22.     public ActionForward execute(ActionMapping mapping, ActionForm form,  
  23.             HttpServletRequest request, HttpServletResponse response)  
  24.             throws Exception {  
  25.         DynaActionForm daf = (DynaActionForm)form;  
  26.         String username = (String)daf.get("username");  
  27.         Integer age = (Integer)daf.get("age");  
  28.         System.out.println("username=" + username);  
  29.         System.out.println("age=" + age);  
  30.         return mapping.findForward("success");  
  31.     }  
  32.  

正常にページに戻りました
dyna_actionform.jsp
 

  
  
  
  
  1.  
  2.  
  3. <%@ page language="java" contentType="text/html; charset=GB18030" 
  4.     pageEncoding="GB18030"%> 
  5. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
  6. <html> 
  7. <head> 
  8. <meta http-equiv="Content-Type" content="text/html; charset=GB18030"> 
  9. <title>Insert title here</title> 
  10. </head> 
  11. <body> 
  12.      :${dynaForm.map.username }<br> 
  13.      :${dynaForm.map.age }<br> 
  14. </body> 
  15. </html> 

2、strutsアップロードファイル
 

  
  
  
  
  1.  
  2.  
  3. package com.bjsxt.struts;  
  4.  
  5. import org.apache.struts.action.ActionForm;  
  6. import org.apache.struts.upload.FormFile;  
  7.  
  8. /**  
  9.  *  ActionForm  
  10.  * @author Administrator  
  11.  *  
  12.  */  
  13. public class UploadActionForm extends ActionForm {  
  14.  
  15.     private String title;  
  16.       
  17.     // FormFile  
  18.     private FormFile myfile;  
  19.  
  20.     public String getTitle() {  
  21.         return title;  
  22.     }  
  23.  
  24.     public void setTitle(String title) {  
  25.         this.title = title;  
  26.     }  
  27.  
  28.     public FormFile getMyfile() {  
  29.         return myfile;  
  30.     }  
  31.  
  32.     public void setMyfile(FormFile myfile) {  
  33.         this.myfile = myfile;  
  34.     }  

 

  
  
  
  
  1.  
  2.  
  3. package com.bjsxt.struts;  
  4.  
  5. import java.io.FileOutputStream;  
  6.  
  7. import javax.servlet.http.HttpServletRequest;  
  8. import javax.servlet.http.HttpServletResponse;  
  9.  
  10. import org.apache.struts.action.Action;  
  11. import org.apache.struts.action.ActionForm;  
  12. import org.apache.struts.action.ActionForward;  
  13. import org.apache.struts.action.ActionMapping;  
  14. import org.apache.struts.upload.FormFile;  
  15.  
  16. /**  
  17.  *  Action  
  18.  * @author Administrator  
  19.  *  
  20.  */  
  21. public class UploadTestAction extends Action {  
  22.  
  23.     @Override  
  24.     public ActionForward execute(ActionMapping mapping, ActionForm form,  
  25.             HttpServletRequest request, HttpServletResponse response)  
  26.             throws Exception {  
  27.         UploadActionForm uaf = (UploadActionForm)form;  
  28.         System.out.println("title" + uaf.getTitle());  
  29.         FormFile myFile = uaf.getMyfile();  
  30.         if (myFile != null) {  
  31.             System.out.println("fileName=" + myFile.getFileName());  
  32.               
  33.             FileOutputStream fos = new FileOutputStream("c:\\" + myFile.getFileName());  
  34.             fos.write(myFile.getFileData());  
  35.             fos.flush();  
  36.             fos.close();  
  37.         }  
  38.         return mapping.findForward("success");  
  39.     }  
  40.  

正常にページに戻りました
upload_success.jsp
 

  
  
  
  
  1.  
  2.  
  3. <%@ page language="java" contentType="text/html; charset=GB18030" 
  4.     pageEncoding="GB18030"%> 
  5. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
  6. <html> 
  7. <head> 
  8. <meta http-equiv="Content-Type" content="text/html; charset=GB18030"> 
  9. <title>Insert title here</title> 
  10. </head> 
  11. <body> 
  12.      :${uploadForm.title}<br> 
  13.      :${uploadForm.myfile.fileName  }<br> 
  14. </body> 
  15. </html> 

3、タイプ変換
 

  
  
  
  
  1.  
  2.  
  3. package com.bjsxt.struts;  
  4.  
  5. import java.text.ParseException;  
  6. import java.text.SimpleDateFormat;  
  7. import java.util.Date;  
  8.  
  9. import org.apache.commons.beanutils.Converter;  
  10.  
  11. /**  
  12.  * java.util.Date  
  13.  * @author Administrator  
  14.  *  
  15.  */  
  16. public class UtilDateConverter implements Converter {  
  17.  
  18.     public Object convert(Class type, Object value) {  
  19.         System.out.println("UtilDateConverter.value=" + value);  
  20.         if (value == null) {  
  21.             return value;  
  22.         }  
  23.         if (value instanceof Date) {  
  24.             return value;  
  25.         }  
  26.         Date d = null;  
  27.         if (value instanceof String) {  
  28.             SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");  
  29.             try {  
  30.                 d = sdf.parse((String)value);  
  31.             } catch (ParseException e) {  
  32.                 // TODO Auto-generated catch block  
  33.                 e.printStackTrace();  
  34.             }  
  35.         }  
  36.         return d;  
  37.     }  
  38.  

 

  
  
  
  
  1.  
  2.  
  3. package com.bjsxt.struts;  
  4.  
  5. import java.util.Date;  
  6.  
  7. import javax.servlet.ServletException;  
  8.  
  9. import org.apache.commons.beanutils.ConvertUtils;  
  10. import org.apache.struts.action.ActionServlet;  
  11. import org.apache.struts.action.PlugIn;  
  12. import org.apache.struts.config.ModuleConfig;  
  13.  
  14. public class UtilDateConverterInitWithPlugin implements PlugIn {  
  15.  
  16.     public void destroy() {  
  17.     }  
  18.  
  19.     public void init(ActionServlet servlet, ModuleConfig config)  
  20.             throws ServletException {  
  21.         System.out.println("UtilDateConverterInitWithPlugin.init()");  
  22.         ConvertUtils.register(new UtilDateConverter(), Date.class);  
  23.     }  

 

  
  
  
  
  1.  
  2.  
  3. package com.bjsxt.struts;  
  4.  
  5. import java.util.Date;  
  6.  
  7. import javax.servlet.ServletException;  
  8. import javax.servlet.http.HttpServlet;  
  9.  
  10. import org.apache.commons.beanutils.ConvertUtils;  
  11.  
  12. /**  
  13.  *  java.util.date  
  14.  * @author Administrator  
  15.  *  
  16.  */  
  17. public class UtilDateConverterInitWithServlet extends HttpServlet {  
  18.  
  19.     @Override  
  20.     public void init() throws ServletException {  
  21.         System.out.println("UtilDateConverterInitWithServlet.init()");  
  22.         ConvertUtils.register(new UtilDateConverter(), Date.class);  
  23.     }  
  24.  

正常にページに戻りました
typeconvert_success.jsp
 

  
  
  
  
  1.  
  2.  
  3. <%@ page language="java" contentType="text/html; charset=GB18030" 
  4.     pageEncoding="GB18030"%> 
  5. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
  6. <html> 
  7. <head> 
  8. <meta http-equiv="Content-Type" content="text/html; charset=GB18030"> 
  9. <title>Insert title here</title> 
  10. </head> 
  11. <body> 
  12.     intValue:${typeconvertForm.intValue }<br> 
  13.     doubleValue:${typeconvertForm.doubleValue }<br> 
  14.     booleanValue:${typeconvertForm.booleanValue }<br> 
  15.     java.sql.dateValue:${typeconvertForm.sqlDate }<br> 
  16.     java.util.utilValue:${typeconvertForm.utilDate }<br> 
  17. </body> 
  18. </html> 

説明する
1、動的ActionForm動的ActionFormは、標準ActionFormの膨張を避けるために設計するものであり、動的ActionFormを用いる標準ActionFormのすべての機能を得ることができる*struts-config.xmlファイルでは、*アクションで動的ActionFormmを使用する動的ActionFormmを定義します.mTestActionjava DynaActionForm daf = (DynaActionForm)form; String username = (String)daf.get("username"); Integer age = (Integer)daf.get("age"); 動的ActionFormは、ページのhtml要素の名前と値をmapに格納するため、getメソッドで対応する値を取り出すことができます.動的ActionFormはEL式の出力方式を採用しています.${dynabean.map.prop}、参照:dyna_actionform.jsp動的Actionの検証は、通常動的検証フレームワークvalidatorを使用します.
2、strutsを用いてファイル*ページをアップロードする構成.例えば、
タイトル:
ファイル:
< ActionFormでFormFileを使用してアップロードしたファイルを受信する.ActionForm.JAva*はActionでFormFileを呼び出してアップロードファイルデータを取得し、ストリーム出力を採用してアップロードを完了する.関連項目:UploadTestAction.JAva*はラベルでアップロードパラメータを構成します.例えば、3、空フィールドテスト*フォームにinput入力ドメインがなく、jspスクリプトが受信した値はnull、el式が受信した値は空列*フォームの値が入力されていない場合、jspスクリプトとel式が受信した値はすべて空列4、テストActionFormタイプの自動変換*boolean:yes,1,on,TrueはいずれもTrueタイプに変換され、大文字と小文字は無視され、その他はfalse*Dateタイプに変換されます.*javaの場合.sql.Date、ページの日付のフォーマットはyyyy-mm-ddでなければなりません*javaの場合.util.Date、デフォルトでstrutsは変換できません
*カスタムコンバータの実装手順*converterインタフェースを実装し、convertメソッドを実装*実装するconerter登録を実装し、通常はservlet登録を採用*servlet登録を採用するにはラベルの構成に注意する必要があり、10(struts plugin登録も可能)StrutsによるActionFormの自動収集プロセス:*ページデータをmapに配置し、mapのkeyがページ名である.mapのvalueはページのvalue値*でBeanUtilsを呼び出します.setPropertiesメソッドは、mapの値を1つずつActionFormインスタンスに設定し、ActionFormの各属性に対してタイプに応じて対応するConverterを呼び出し、対応するconvertメソッドを呼び出し、対応する文字列をActionFormで指定するタイプに変換するBeanUtilsを使用することができる.copyProperties(ターゲットオブジェクト、ソースオブジェクト)メソッドは、オブジェクト値のコピーを行います.