例からStruts 2を理解する
まず最も簡単な例で、ブラウザでactionを要求し、jspページに文字列を返して表示します.
第一に、struts 2のjarパッケージを導入するwebプロジェクトを作成します.ディレクトリは以下の通りです.
第二:web.xmlでstruts 2を構成するコアブロック
3つ目は
MyEclipseプロジェクトのsrcルートディレクトリの下にstruts.xmlファイルを作成
struts 2インストールパッケージの中のappsディレクトリの下のいずれかのjarパッケージを開くことができて、中のWEB_INFR/srcディレクトリの下、struts.xmlファイルを探して、そのファイルをプロジェクトのsrcルートディレクトリの下にコピーして、中の内容を空にします(ラベルとヘッダラベルだけを残してください
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クラスの作成
第五:簡単なjspページ
第六: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では以上のことをします.
第一に、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では以上のことをします.