Struts 2はRequestとSessionを得る
Struts 2はRequestとSessionを得る
キーワード:struts 2、request、sessionはStruts 1.*では、request、response、sessionなどのサーブレットオブジェクトにアクセスするには便利です.これは、常にパラメータとして各メソッド間で伝達されているためです.Struts 2では、フォームの値が予め設定されたgetメソッドを介して得られるため、それらのトレースが見えにくくなります.パラメータがあればrequestを通過しなければなりませんgetParametreまたはsession.getAttributeで手に入れるには、どうすればいいのでしょうか.Maxのチュートリアルでは、IoC方式と非IoC方式の2つに分けることができますが、この2つの方式の違いをどのように理解しますか?IoCはSpringの特徴の1つで、字面の意味は反転制御で、はっきり言って依存注入で、例えば類A依存類B、それでは積極的にAに1つの類Bの対象を注入して、以下はこの2つの方法の具体的な実現を見てみましょう.1.非Ioc方式この方式は主にcomを利用する.opensymphony.xwork2.ActionContextクラスおよびorg.apache.struts2.サーブレットActionContextクラス、具体的な方法は以下の通りです.requestオブジェクトを取得するには、次の手順に従います.
Javaコード HttpServletRequest request = ServletActionContext.getRequest (); ActionContext ct= ActionContext.getContext() HttpServletRequest request= (HttpServletRequest)ct.get(ServletActionContext.HTTP_REQUEST);
セッションオブジェクトの取得:Struts 2では下位レベルのセッションはすべてMapタイプにカプセル化されており、我々はSessionMapと呼ぶが、通常我々が言うセッションはHttpSessionオブジェクトを指し、具体的な取得方法は以下の通りである.
Javaコード Map session=ActionContext.getSession(); Map session=(Map)ActionContext.getContext().getActionContext.SESSION);
このSessionMapを得るとsessionを読み書きすることができ、元のHttpSessionを得るにはまずHttpService Requestオブジェクトを得てrequestを通過することができる.getSession()を使用して、元のHttpSessionオブジェクトを取得します.一般的にSessionMapはすでにすべての仕事を完成することができて、私たちはもう底のsessionに触れる必要はありません.2.IoC方式は相対的に変化が少なく、具体的な流れは以下の通りである.requestオブジェクトを取得する手順1:ServertRequestAwareインタフェースをactionに実装する手順2:HttpServertRequestタイプのインスタンス変数をactionに宣言する手順3:ServertRequestAwareインタフェースをactionで実装するsetSetServertRequestメソッドは、以下に示すように簡単に実装されます. private HttpServletRequest request; public void setServletRequest(HttpServletRequest request) { this.request = request; }Sessionオブジェクトの取得(この場合のsessionはSessionMapタイプであることに注意):第1ステップ:SessionAwareインタフェースをactionに実装させる第2ステップ:HttpService Requestタイプのインスタンス変数をactionに宣言する第3ステップ:SessionAwareインタフェースをactionで実装するsetSessionメソッドは、以下に示すように簡単に実装されます. private Map session; publicvoid setSession(Map session) { this. session = session; }Trackback:http://tb.blog.csdn.net/TrackBack.aspx?PostId=1721226次はRequestとSessionを得るための別の記事です.
Javaコード Struts 2でActionでセッションを使用する必要がある場合は、次の2つの方法で を得ることができます. 1 .ActionContext classのメソッドgetSessionにより を得る. 2 .Action実現org.apache.struts2.interceptor.SessionAwareインタフェースによってsessionが動作する 次に、actionでsessionが得られた第1の方法を用いる例 を参照する. package s2.ex.action; import java.util.Map; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; public class SessionTestAction extends ActionSupport { public String execute() { ActionContext actionContext = ActionContext.getContext(); Map session = actionContext.getSession(); session.put("USER_NAME", "Test User"); return SUCCESS; } } この例では、ActionContextによってセッションが得られ、セッションにkeyをUSER_として配置するNAME、値はTest Userの内容です. 以下は実装orgである.apache.struts2.interceptor.SessionAwareインタフェースによるsession動作の例 package s2.ex.action; import java.util.Map; import org.apache.struts2.interceptor.SessionAware; import com.opensymphony.xwork2.ActionSupport; public class SessionTest1Action extends ActionSupport implements SessionAware { private Map session; public void setSession(Map session) { this .session = session; } public String execute() { this .session.put( "USER_NAME", "Test User 1"); return SUCCESS; } } この例では、インタフェースSessionAwareにおけるsetSession方法が実装される. 上の2つの方法でsessionが得られ、実現できる機能は同じです. ここでは第2の方法でsessionを使用することを推奨します.なぜなら、単体テストが容易であるためです.第2の方法では、Mapを1つ構築するだけでaction classを単体テストすることができます. は、1つのプロジェクトでセッションを使用する必要がある場合が多い、各actionがorgを実現する場合がある.apache.struts2.interceptor.SessionAwareというインタフェースは、面倒に見えるかもしれないので、orgを実現するために抽象的なBaseActionクラスを提案します.apache.struts2.interceptor.SessionAwareインタフェースは,以降すべてのactionがこのBaseActionを継承すればよい. は、JSPでセッションをどのように使用するかの例である. <%@ page contentType="text/html; charset=UTF-8" %> <%@page pageEncoding= "utf-8" %> <%@taglib prefix= "s" uri= "/struts-tags" %> Session Test
一般的にプロジェクトではsessionにObjectを配置することが多く、user、userにboolean adminとString userNameがあり、userにisAdminの方法が存在する場合、jspではでユーザーに管理権限があるかどうかを判断することができます.ユーザ名は<:property value="#session.user.userName">または.
jackzhangyunjieから
キーワード:struts 2、request、sessionはStruts 1.*では、request、response、sessionなどのサーブレットオブジェクトにアクセスするには便利です.これは、常にパラメータとして各メソッド間で伝達されているためです.Struts 2では、フォームの値が予め設定されたgetメソッドを介して得られるため、それらのトレースが見えにくくなります.パラメータがあればrequestを通過しなければなりませんgetParametreまたはsession.getAttributeで手に入れるには、どうすればいいのでしょうか.Maxのチュートリアルでは、IoC方式と非IoC方式の2つに分けることができますが、この2つの方式の違いをどのように理解しますか?IoCはSpringの特徴の1つで、字面の意味は反転制御で、はっきり言って依存注入で、例えば類A依存類B、それでは積極的にAに1つの類Bの対象を注入して、以下はこの2つの方法の具体的な実現を見てみましょう.1.非Ioc方式この方式は主にcomを利用する.opensymphony.xwork2.ActionContextクラスおよびorg.apache.struts2.サーブレットActionContextクラス、具体的な方法は以下の通りです.requestオブジェクトを取得するには、次の手順に従います.
Javaコード
HttpServletRequest request = ServletActionContext.getRequest ();
ActionContext ct= ActionContext.getContext()
HttpServletRequest request=
(HttpServletRequest)ct.get(ServletActionContext.HTTP_REQUEST);
セッションオブジェクトの取得:Struts 2では下位レベルのセッションはすべてMapタイプにカプセル化されており、我々はSessionMapと呼ぶが、通常我々が言うセッションはHttpSessionオブジェクトを指し、具体的な取得方法は以下の通りである.
Javaコード
Map session=ActionContext.getSession();
Map session=(Map)ActionContext.getContext().getActionContext.SESSION);
このSessionMapを得るとsessionを読み書きすることができ、元のHttpSessionを得るにはまずHttpService Requestオブジェクトを得てrequestを通過することができる.getSession()を使用して、元のHttpSessionオブジェクトを取得します.一般的にSessionMapはすでにすべての仕事を完成することができて、私たちはもう底のsessionに触れる必要はありません.2.IoC方式は相対的に変化が少なく、具体的な流れは以下の通りである.requestオブジェクトを取得する手順1:ServertRequestAwareインタフェースをactionに実装する手順2:HttpServertRequestタイプのインスタンス変数をactionに宣言する手順3:ServertRequestAwareインタフェースをactionで実装するsetSetServertRequestメソッドは、以下に示すように簡単に実装されます. private HttpServletRequest request; public void setServletRequest(HttpServletRequest request) { this.request = request; }Sessionオブジェクトの取得(この場合のsessionはSessionMapタイプであることに注意):第1ステップ:SessionAwareインタフェースをactionに実装させる第2ステップ:HttpService Requestタイプのインスタンス変数をactionに宣言する第3ステップ:SessionAwareインタフェースをactionで実装するsetSessionメソッドは、以下に示すように簡単に実装されます. private Map session; publicvoid setSession(Map session) { this. session = session; }Trackback:http://tb.blog.csdn.net/TrackBack.aspx?PostId=1721226次はRequestとSessionを得るための別の記事です.
Javaコード
jackzhangyunjieから