序文
Struts2に関する入門チュートリアルを紹介しました。学んだ知識、学習プロセスとソリューション中に遭遇した問題を共有し続けます。もちろん、読者が問題を見つけた場合、以下のコメントで私に知らせることができます。よろしくお願いします
動作中のWebリソースへのアクセス
Webリソース
いわゆるWebリソースは、httpservletrequest、httpservletresponse、servletcontextなどのネイティブAPIを指します。 B/Sアプリケーション開発コントローラーとして、ドメインオブジェクトへのプロパティの読み取りや書き込みなど、Webリソースにアクセスできる必要があります。
Webリソースにアクセスする方法
Servletapiからのデカップリング方法:Servletapiとの結合を回避し、作用中の単体テストを促進するために、Struts2はhttpservletrequest、httpsession、およびservletContextをカプセル化し、これらの3つのオブジェクトを置き換えるために3つのMAPオブジェクトを構築します。アクションでは、httpservletrequest、httpservletessession、httpservletcontextの対応するマップオブジェクトを使用して、データを保存および読み取ることができます。
public Object get(Object key)メソッドを使用して、リクエストパラメーターを渡して実装を実現する必要があります。setRequest()メソッドを実装して、すべてのアクションメソッドでリクエストマップを呼び出すことができます。 ActionContextを使用して、ドメインオブジェクトのコードデモを取得します
index.jspページからリクエストをshowpage.jspに送信し、リクエストをstruts 'action class objectaction.javaに渡してリクエストを処理します
Objectaction.javaでは、ドメインオブジェクトがActionContextによって取得され、プロパティ値が追加され、リクエストはshowpage.jspに転送されます
showpage.jspページで、各ドメインオブジェクトの値を取得できます
index.jsp
<%@ page contentType = "text/html; charset = utf-8"言語= "java"%> <html> <head> <title>ハンドル</title> </head> <body> - 名前パラメーターを渡します。 nofollow ">アプリケーション</a> </body> </html>
Objectaction.java
パッケージcom.request.test;インポートcom.opensymphony.xwork2.actioncontext; import java.util.map; public class objectaction {public string print(){// actioncontext actioncontext actioncontext = actioncontext.getContext(); ApplicationMap.put( "ApplicationMap"、 "ApplicationMapValue"); requestMap =(map <string、object>)actioncontext.get( "request"); //リクエストに対応するマップを取得します。対応するgetRequest()メソッドはありません。したがって、get( "request")メソッドマップ<string、objectmap>(map <string、object、objectcontext.get( "request"); // requestmap.put( "requestmap"、 "requestmapvalue"); params string [] params =(string [])paramsmap.get( "name"); //パラメーター値をコンソールsystem.out.println(params [0]); 「成功」を返します。 }}struts.xml(パッケージノードのみを表示)
<パッケージname = "showvalue" extends = "struts-default"> <action name = "showpage" method = "print"> <result name = "success">/showpage.jsp </result> </action> </package>
showpage.jsp(ボディータグの内容のみが表示)
<% - アプリケーションドメインオブジェクトの値を取得 - %> $ {applicationscope.applicationmap} <br> <% - セッションドメインオブジェクトの値を取得 - %> $ {sessionscope.sessionmap} <% - リクエストドメインオブジェクトの値を取得 - %> $ {requestscope.requestmap}オブジェクト - %> $ {requestScope.RequestMap}詳細と注意(画像をブラウザの新しいタブページにドラッグして、大きな画像を表示します)
XXXAWAREインターフェイスを使用してWebリソースへのアクセス
ActionContextを使用するのと同様に、index.jspページでObjectAction.javaにリクエストを送信するとprint2()メソッドで処理されます。
objectAction.javaのprint2()メソッドのドメインオブジェクトに値を割り当て、渡されたパラメーターの値を取得します
最後に、showpage.jspでドメインオブジェクトの値を取得します。前のものと区別するために、各出力値にシンボルを追加して区別します。
index.jsp(ボディタグパーツを表示)
<a href = "showpage2.action?name = smzyy" rel = "external nofollow"> page2 </a>
Objectaction.java
パッケージcom.request.test;インポートcom.opensymphony.xwork2.actioncontext; Import org.apache.struts2.intercepor.applicationaware; Import org.apache.struts2.interceptor.parameteraware;インポートorg.apache.struts2.interceptor.requestaware; interpare.struts2.truts2.truts2 java.util.map; public class objectactionは、requestaware、sessionaware、applicationaware、parameteraware {private map <string、object> requestmap;プライベートマップ<文字列、オブジェクト>セッションマップ;プライベートマップ<文字列、オブジェクト> ApplicationMap;プライベートマップ<string、string []> parametermap; // showpage.action必要なメソッドpublic string print2(){applicationMap.put( "ApplicationMap"、 "ApplicationMapval ==="); requestMap.put( "requestMap"、 "requestMapval ==="); sessionmap.put( "sessionmap"、 "sessionmapval ==="); string [] name = parametermap.get( "name"); System.out.println(name [0] + "===="); 「成功」を返します。 } @Override public void setApplication(map <string、object> map){this.applicationmap = map; } @Override public void setParameters(map <string、string []> map){this.parametermap = map; } @Override public void setRequest(map <string、object> map){this.requestmap = map; } @Override public void setSession(map <string、object> map){this.sessionmap = map; }}struts.xml(パッケージノードパーツを表示)
<パッケージ名= "showvalue" extends = "struts-default"> <action name = "showpage2" method = "print2"> <result name = "success">/showpage.jsp </result> </action> </package>
showpage.jsp(上記と同じ、まったく変更されていません)
選択の提案
上記の2つのWebリソースを取得する方法により、最初の方法にドメインオブジェクトを呼び出す必要がある多くのアクションメソッドがある場合、各メソッドを実装する必要があり、2番目の方法は1回だけ実装する必要があるため、実際の開発では、状況に応じて実装するために対応するメソッドが選択されます。
Servletapiと相まって:より多くのServletapisにアクセスし、ネイティブ方法を呼び出すことができます
ここでの実装方法は上記の実装方法に似ているので、私はそれについて話しません。
要約します
上記は、この記事のコンテンツ全体です。この記事の内容には、すべての人の研究や仕事に特定の参照値があることを願っています。ご質問がある場合は、メッセージを残してコミュニケーションをとることができます。 wulin.comへのご支援ありがとうございます。