Struts 2のresultの様々なtypeタイプとプロファイルの詳細
5493 ワード
Struts2 :
Chain Result-->type="chain" Action
Dispatcher Result -->type="dispatcher" , JSPFreeMarker
Result -->type="freemarker" FreeMarker HttpHeader
Result -->type="httpheader" Http Redirect
Result -->type="redirect" URLRedirect Action
Result -->type="redirectAction" ActionStream
Result -->type="stream" InputSream , Velocity
Result -->type="velocity" Velocity XLST Result -->type="xslt" XML/XLST PlainText
Result -->type="plainText" , result JasperReports Plugin, JasperReport 。
dispatcher:ページ転送に使用され、ページジャンププロセスはずっと同じスレッドであり、Actionのデータはずっと保存されています.
redirect:ページを返したり、actionを返したり、URLにリンクしたりすることができます. 欠点:redirectはhttp返却コード(SUCCESS)と返却されたページの位置を一緒にWebサーバに再送し、収容後にWebサーバから新しいHTTPリクエストが生成されると、新しいスレッドが生成され、元のActionで実行されたスレッドに保存されたデータにアクセスできません.したがってresultはActionのデータを含む必要があり、redirectは実行可能な方法ではありません.新しいHTTPリクエストはサーブレットコンテナの新しいスレッドで処理されるため、ActionContextのすべてのステータスは存在しません.
chain:機能はredirectのaction転送と似ていますが、redirectaction転送機能とは異なり、Actionのデータを同じHTTPリクエストに保存することができます.
struts 2の他のことについて
===============
struts.xmlのpackageのnameは任意に定義でき、継承時にのみ使用できます.
===============
============= ネーミングスペース==========
namespace=「/hello」リクエストパスが/hello/registerに変更されました
フォームパスを変更し、必ず手動で.action<:form action="/hello/register.action">
検索方法:namespaceがデフォルトで、フォームパスが/hello/register.action strutsが名前空間を見つけられなかった場合は、自動的にデフォルトの名前空間に検索されます.
=============================
struts_1.xmlとstruts_2.xmlが標準strustのxmlプロファイルincludeである場合、strutsは起動後にstruts_1.xmlとstruts_2.xmlの構成情報をメモリに一緒にロードします.
=============== Struts 2 MVC==============FilterDispatcher---コアコントローラ
各action------ビジネスコントローラ --------- ビジネスロジックコンポーネントの呼び出し---DAOの呼び出し---データベースインタラクション
================= モジュール開発===================
srcの下でstruts 1.xmlstruts 2.xmlを確立する
異なる開発者は、独自のxmlプロファイルを書くだけでstruts.xmlに
----------------------struts 1.xmlxml宣言、DTD情報... 構造はstruts.xmlと同じ
----------------------struts 2.xmlxml宣言、DTD情報... 構造はstruts.xmlと同じ
================ モデル駆動===================
**属性駆動**:フォームのフィールドはアクションの属性として存在します.
**モデル駆動**:オブジェクトをJavaBeanでマウントするActionFormと同様
モデルBeanpublic class User{ private String username; private String password; private String repassword; private int age; private Date date;
//setter... getter...}
###ValueStack###--値スタック
ModelDriven
Actionの実装が必要 ModelDrivenインタフェース
public class RigesterAction extends ActionSupport implements ModelDriven
private User user = new User(); public User getModel() { return user; }
@Override public String execute() throws Exception {
return SUCCESS; }}
==================== Preparableインタフェース===================
Preparableインタフェースにはvoid prepare()throws Exceptionメソッドがあり、そのインタフェースのActionクラスを実現し、このactionであるメソッドを実行する前にprepare()を実行し、action準備メソッドと呼ぶ.
========================= 特定のエラーメッセージを表示する
前の「原点」を取り除くにはfielderror.ftlテンプレートを自分で修正して前のポイントコードを取り除く必要があります