例からStruts 2を理解する


まず最も簡単な例で、ブラウザでactionを要求し、jspページに文字列を返して表示します.
第一に、struts 2のjarパッケージを導入するwebプロジェクトを作成します.ディレクトリは以下の通りです.
            
第二:web.xmlでstruts 2を構成するコアブロック
<?xml version="1.0" encoding="UTF-8"?>  
<web-app version="2.5"   
    xmlns="http://java.sun.com/xml/ns/javaee"   
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">  
  <welcome-file-list>  
    <welcome-file>index.jsp</welcome-file>  
  </welcome-file-list>  
  <filter>  
    <filter-name>struts2</filter-name>  
    <!--  struts2   Filter     -->  
    <filter-class>  
        org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter  
    </filter-class>  
  </filter>  
  <filter-mapping>  
    <filter-name>struts2</filter-name>  
    <url-pattern>/*</url-pattern>  
  </filter-mapping></web-app>  

3つ目は
MyEclipseプロジェクトのsrcルートディレクトリの下にstruts.xmlファイルを作成
        struts 2インストールパッケージの中のappsディレクトリの下のいずれかのjarパッケージを開くことができて、中のWEB_INFR/srcディレクトリの下、struts.xmlファイルを探して、そのファイルをプロジェクトのsrcルートディレクトリの下にコピーして、中の内容を空にします(ラベルとヘッダラベルだけを残してください
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
   "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
   "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>


    <!-- Struts 2  Action         -->  
     <package name="strutsqs" namespace="/zd" extends="struts-default">   
        <!--   action     action     -->  
         <action name="index" class="com.zhudan.test.testaction" method="test" >   
            <!--   action     result,result     ,  name      ,tyle        -->  
                    <result name="suc">/index.jsp</result>   
        </action>   
     </package>   
</struts>
 主なプロパティの説明:
         package-name:異なるpackageを区別するために使用されます.一意で使用可能な変数名でなければなりません.他のpackageで継承されます.
         package--namespace:重複コード(struts 1との比較)を減らすために使用されます.actionを呼び出すときに入力パスの構成部分です.
         package--extends:他のpackageを継承して中のフィルタなどを使う.
         Action--name:1つのpackageで異なるactionを区別するために使用されます.一意で使用可能な変数名でなければなりません.actionを呼び出すときにパスを入力する構成部分です.
         Action--class:actionが存在するパス(パッケージ名+クラス名);
         Action--method:actionで呼び出されたメソッド名.プロジェクトに使用されていないため、説明されていません.必要に応じて、関連ドキュメントを参照してください.
第四:actionクラスの作成
package com.zhudan.test;

import com.opensymphony.xwork2.ActionSupport;

public class testaction extends ActionSupport {

	@Override
	public String execute() throws Exception {
		// TODO Auto-generated method stub
		return null;
	}
	//  test  ,  index.jsp  
	public String test() throws Exception {
		// TODO Auto-generated method stub
		return "suc";
	}
	
}

第五:簡単なjspページ
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'index.jsp' starting page</title>
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
  </head>
  
  <body>
        !<br>
  </body>
</html>

第六:tomactを起動し、アドレスにアクセスする:http://localhost:8080/Struts2Test/zd/index.action
        Struts 2 Test:プロジェクト名        zd:ネーミングスペースで、namespaceの文字列に対応します.        index.action:indexはactionの文字列に対応し、「.action」は要求がactionであることを表す.
第七:運行メカニズム
       1)クライアントはブラウザにurlアドレスを入力する.
       2)このurl要求はhttpプロトコルを介してtomcatに送信される.
       3)tomcatはurlに基づいて対応するプロジェクトの中のweb.xmlファイルを見つけた.
       4)web.xmlではstruts 2の構成が発見されます.
       5)struts 2に対応するstruts.xmlプロファイルが見つかります.
       6)url解析struts.xmlプロファイルに基づいて対応するclassが見つかります.
       7)classを呼び出して1ワードStringを返し、struts.xmlに従って対応するjspに戻る.
第八:strus 2の概略フロー
       1)  クライアントは、Tomcatなどのサーブレットコンテナへの要求を初期化します.
       2)  この要求は一連のフィルタ(Filter)を通過する.
       3)  次にStrutsPrepareAndExecuteFilterが呼び出され、StrutsPrepareAndExecuteFilterはActionMapperにActionを呼び出す必要があるかどうかを尋ねる.
       4)  ActionMapperがアクションを呼び出す必要があると決定した場合、StrutsPrepareAndExecuteFilterはリクエストの処理をActionProxyに渡す.
       5)  ActionProxyは、コンフィギュレーションマネージャからフレームワークのプロファイルを尋ね、呼び出すアクションクラスを見つけます.
       6)  ActionProxyはActionInvocationのインスタンスを作成します.
       7)  ActionInvocationインスタンスは、名前付きモードを使用して呼び出され、Actionを呼び出すプロセスの前後で、関連するインターセプタの呼び出しに関連します.
       8)  Actionの実行が完了すると、ActionInvocationはstruts.xmlの構成に基づいて対応する戻り結果を見つける責任を負います.
まとめ:
       Struts 2のコアは、ブロッキングStrutsPrepareAndExecuteFilterです.Struts.xml内のすべてのpackageはextends=「struts-default」でなければなりません.同じようにすべてのJavaクラスはextendsがObjectから出るのと同じです.struts-default.xmlでは以上のことをします.