JAEE学習ノート(25)Struts 2(1)

19780 ワード

struts 2フレームワーク
目次
1.struts 2の紹介
2.struts 2構成について(Action構成について)---ポイント
3.struts 2結果タイプについて
4.struts 2処理要求パラメータ---重点
5.struts 2のタイプ変換
6.struts 2の検査
7.struts 2国際化
8.struts 2遮断器----重点
9.struts 2ファイルのアップロードとダウンロード
10.struts 2におけるognlとvaluestack---ポイント
11.ognlとvaluestatck---ポイント
12.struts 2でのフォームの重複コミット防止
13.struts 2のajaxプラグイン.
14.練習
=======================================================
1.struts 2フレームワークの紹介
      :     ,      ?
                       (   ),              ,      。
             ,           ?                ? 
        
      :   struts2  ,     ?
        Struts 2 Struts      ,   struts 1 WebWork               Struts 2  。
            Struts 2      Struts 1         。Struts 2 WebWork   
        struts2=struts1+webwork;            
        struts2   apache  。         
        struts2      mvc  。  javaweb  model2      mvc  。  model2=servlet+jsp+javaBean           
        struts2    javaweb      。           
          struts2  ,       web  ,          。
        
       struts2      :
        struts1  webwork  jsf  springmvc
        
        ssh---struts2 spring hibernate
        ssi---springmvc spring ibatis
        
    XWork---  webwork  
    Xwork         :     (interceptor),         ,    ,
            (OGNL – the Object Graph Navigation Language),
    IoC(Inversion of Control    )       
-----------------------------------------------------------------------------

struts 2クイックスタート:
    index.jsp------>HelloServlet-------->hello.jsp  web    .
    index.jsp------>HelloAction--------->hello.jsp  struts2  
    
    1.  jar 
          struts2 jar   struts-2.3.15.1-all   .
        
        struts2     :
            apps:     
            docs:  
            lib:struts2      jar                    
            src:     
                core    struts2    
                xwork-core struts2     xwork,xwork    
                
          : struts2  ,          jar , apps  struts2-blank     copy
    
    2.  index.jsp  
        hello.jsp  

    3. struts2      
        1.web.xml          (     )-----    Filter
              :    struts2      。
             
                struts2
                org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
            

            
                struts2
                /*
            
            
        2.    struts.xml     ,   struts2      。
              :   struts2        。
            
              :struts.xml
              :src (classes )
            
    4.    HelloAction 
          , HelloAction          String     ,  ,   。
        public String say(){
            return "good";
        }
        
    5. struts.xml     HelloAction
        
        
            
                /hello.jsp
            
        
        
    6. index.jsp     ,  
        struts 2を めて  
               :http://localhost/struts2_day01/index.jsp      ,     
        HelloAction   say     ,     hello.jsp

--------------------------------------------------------------------------
  struts2        :
    index.jsp
    hello.jsp
    HelloAction
    struts.xml
-----------------
1.    Filter----StrutsFilter
2. web.xml     StrutsFilter
    
        struts
        cn.itcast.filter.StrutsFilter
    

    
        struts
        /*
    
3. StrutsFilter       ,   Action    ,   hello.jsp    .
    
        // 2.1         
        String uri = request.getRequestURI();
        String contextPath = request.getContextPath();
        String path = uri.substring(contextPath.length() + 1);

        // System.out.println(path); // hello

        // 2.2   path struts.xml            
        SAXReader reader = new SAXReader();
        //   struts.xml   document  。
        Document document = reader.read(new File(this.getClass()
                .getResource("/struts.xml").getPath()));

        Element actionElement = (Element) document
                .selectSingleNode("//action[@name='" + path + "']"); //        

        if (actionElement != null) {
            //       class    method  
            String className = actionElement.attributeValue("class"); //    action    
            String methodName = actionElement.attributeValue("method");//   action       。

            // 2.3    ,  Class  ,  Method  
            Class actionClass = Class.forName(className);
            Method method = actionClass.getDeclaredMethod(methodName);

            // 2.4  method  .
            String returnValue = (String) method.invoke(actionClass
                    .newInstance()); //   action       ,         。

            // 2.5
            //   returnValue action       result name   , returnValue   。
            Element resultElement = actionElement.element("result");
            String nameValue = resultElement.attributeValue("name");

            if (returnValue.equals(nameValue)) {
                // 2.6         。
                String skipPath = resultElement.getText();

                // System.out.println(skipPath);

                request.getRequestDispatcher(skipPath).forward(request,
                        response);
                return;
            }
        }

=======================================================
struts 2のプロセス分析およびツール構成
1.    
       ---- StrutsPrepareAndExecuteFilter       ----- Interceptors    (       ) ----- Action  execute ---      Result 
    *       struts-default.xml  
    *         defaultStack        

    ----            ,         

            
2.      struts.xml       
    
         Aptana    ,    Aptana  xml      struts2     
     struts.xml      DTD  , 
        
              ,    dtd,      
              ,       DTD   

    ***   DTD ,     DTD     
    
3.  struts2   
       com.opensymphony.xxx    xwork-core 
       org.apache.struts2      core 
    
    
4.      struts2-config-browser-plugin-2.3.15.1
              struts2        

       struts2/lib/struts2-config-browser-plugin-2.3.7.jar   WEB-INF/lib  

       http://localhost/struts2_day01/config-browser/index.action    struts2      

=========================================================
struts 2構成(ポイント)
1.struts2        
    struts2      ,     StrutsPrepareAndExecuteFilter.
    
     StrutsPrepareAndExecuteFilter init    Dispatcher      .
     Dispatcher     init       struts2         
    
        init_DefaultProperties(); // [1]   ----------  org/apache/struts2/default.properties 
        init_TraditionalXmlConfigurations(); // [2]  --- struts-default.xml,struts-plugin.xml,struts.xml
        init_LegacyStrutsProperties(); // [3] ---    struts.properties 
        init_CustomConfigurationProviders(); // [5]  -----        
        init_FilterInitParameters() ; // [6] ----- web.xml 
        init_AliasStandardObjects() ; // [7] ---- Bean   
        
        1.default.properties  
              :   struts2       
              : org/apache/struts2/default.properties 
            
        2.struts-default.xml
              :   bean,interceptor,result 。
              : struts core  jar .
            
          struts-plugin.xml
              struts2              。
          struts.xml              
               struts2        。
                
        3.    struts.properties
                     。
            
        4.web.xml
        
            ,                      。
        
        default.properties
        struts-default.xml
        struts.xml
            
-----------------------------------------------------------------------         
2.  Action   
    
    1.    :        。    action。
        1.name              ,      ,        。 
        2.namespace    action   name             action   。
        3.extends          。
        4.abstrace       true/false,   true,            。
    2         action
        1.name    action     ,     (    )   package  namespace     action   。
        2.class Action    
        3.method     Action        ,      ,    String.
    3.           
        1.name    action          ,      。
        
      action      :
        1.       
             namespace     ""
            
                class       com.opensymphony.xwork2.ActionSupport

                method       execute
             name      "success"       

        2.    action        
               action    :
            
                
                    /hello.jsp
                
            
            
                 :
            http://localhost/struts2_day01_2/a/b/c/hello
                 action。
            
              :struts2  action    ,      
             1.namespace="/a/b/c"  action name=hello    .
             2.namespace="/a/b     action name=hello    
             3.namespace="/a"      action name=hello    
             4.namespace="/"        action name=hello      .
             
                      ,  404  .
        
        3.   action。
              :    action       。
            
            
                 ,      ,   action     ,    name      action。
            
        4.action      
             action   ,  class  。       com.opensymphony.xwork2.ActionSupport。
            
            
                 ,       ,    action        class    。
            
---------------------------------------------------------------------------
      
    default.properties     struts    。
    
      :      ,          ?
        1.struts.xml(    )
            
        2.struts.properties(     )          
        3.web.xml(  )
                ,   StrutsPrepareAndExecuteFilter          .
            
                struts.action.extension
                do,,
            
        
        
        struts.action.extension=action,, 
                strus2          .
        
          
               request.setCharacterEncoding("UTF-8");   post     
            
         
            false   ,true          ,      true、      false  
        
          
                    ,  struts.xml          (  )
  ----------------------------------------------------------------------------
struts.xml     :

      :        。             , struts.xml     
    

===========================================================
Action
1.  Action        :
         
    1.    POJO .
           Java  (Plain Old Java Objects)
                   ,        (  Object)
        
          :   。
          :          。
        
         struts2            :
            * struts2     struts.xml      Action   
            * obj = Class.forName("    ").newInstance();
            * Method m = Class.forName("    ").getMethod("execute");  m.invoke(obj);         execute  

    2.     ,  Action  .  com.opensymphony.xwork2.Action
        
          :   。         ,         。
          :          。
        
        public static final String SUCCESS = "success";  //        (    )
        public static final String NONE = "none";  //        return null;     
        public static final String ERROR = "error";  //          (    )
        public static final String INPUT = "input"; //         ,           (    )
        public static final String LOGIN = "login"; //        (    )

    3.     ,   ActionSupport .  com.opensymphony.xwork2.ActionSupport
        ActionSupport    Action  。
        
          :    、      、               .
          :    。
        
        ,          .
--------------------------------------------------------------------------  
  action   :

    1.    method  ,     action        .
        
             book_add,      BookAction   add  。         
        
             book_update,      BookAction   update  。
        
    2.          
        1. struts.xml   
            
        2. jsp   
            book.jsp
                book add
book update
book delete
book search
product.jsp product add
product update
product delete
product search
book add , Book_add, struts.xml . Book add {1}Action---->BookAction method={2}--->method=add : 1. 。 2. , 。 ---------------------------------------------- 3. ( ) struts.xml : http://localhost/struts2_day01_2/book!add BookAction add 。 book!add 。 :struts2 , default.properties true. struts.enable.DynamicMethodInvocation = true

============================================================
struts 2フレームワークでservlet apiを取得する
  struts2  ,       servlet api;

 struts2   servlet api     :
    1.  ActionContext   
        1.    ActionContext  。
            ActionContext context=ActionContext.getContext();
        2.  servlet api
              :  ActionContext        Servlet api,    Map  。
            
            1.context.getApplication()
            2.context.getSession()
            3.context.getParameter();---       request.getParameterMap()
            4.context.put(String,Object)    request.setAttribute(String,String);
                
    
    2.      (            servlet api)
        
        1.  action         。
            ServletContextAware :   ServletContext  
            ServletRequestAware :   request  
            ServletResponseAware :   response  

        2.        。             
            private HttpServletRequest request;
        3.    web  ,               web    . 
            public void setServletRequest(HttpServletRequest request) {
                this.request = request;
            }
            
          :     :
               struts2    interceptor   .
            
            
             if (action instanceof ServletRequestAware) { //  action     ServletRequestAware  
                HttpServletRequest request = (HttpServletRequest) context.get(HTTP_REQUEST); //  request  .
                ((ServletRequestAware) action).setServletRequest(request);// request    action        。
            }
            
    3.  ServletActionContext  .
         ServletActionContext     static。           
        getRequest();
        getResposne();
        getPageContext();

  --------------------------------------------------------------------

Result結果タイプ
      
        1.name   action  method      ,    .
            
        2.type    :         
            
          type          :
             struts-default.xml      type     
            
             
            
            
            
            
            
            
            
            
            
        
          : chain  dispatcher  redirect redirectAction  stream
            
            dispatcher:         ,     。      action     。
            chain:         。           action      action。
            
            redirect:                action     
            redirectAction:                 action     action。
            
            stream:               ,      。
            
          : freemarker  velocity
        
-----------------------------------------------------------------------------
                 
                         
        
                    
                    /demo6/result.jsp 
        
         
        
                    
                    /demo6/result.jsp