サーブレット初期パラメータその他
3602 ワード
最近、あるものを作るときにservletのパラメータを使うと、次の2つの関係が突然分からなくなります.
汗をかいたから、急いで補習しなさい.
両方のインタフェースは、要求間パラメータ伝達を処理するサーブレットRequestにあります.まずは見てみましょう
public String getParameter(String name);
クライアントとサービス間のデータ転送.たとえばクライアントからhttpリクエスト(GET/POST)が発行され、リクエストにリクエストパラメータが含まれている場合、このインタフェースで取得でき、すべてのパラメータがStringまたはnullとして返されます.たとえば、次のような要求パスがあります.
http://localhost:8080/sample/query.htm?name=aaa&age=12では、以下の方法で値を取得できます.
もちろん、POSTリクエストのformフォームのデータも同様に取得され、他の類似のインタフェースは次のとおりです.
public Object getAttribute(String name);
req.getAttribute()とsetAttribute(String name,Object o)を併用します.一般的なシーンを考慮すると、クエリー操作を実行した後、クエリー結果をページ表示に戻す必要がある場合、このデータ転送はservletで次のように使用することを考慮できます.
ページでデータを取得する必要があります
もちろん今のフレームワークではこのようなコードはあまり書かれていません.
また、以下の内容はhttp://hain.iteye.com/blog/70731参照
次にservletのパラメータを見てみましょう.主に2つのcontext-paramとinit-paramがあります.
1、context-paramはアプリケーションの範囲内のパラメータに対応し、servletcontextに格納、web.xmlでは、次のように構成されています.
これは一般的なspringのロード構成です.ここでは、webコンテナの起動時にspringのプロファイルをロードし、servletcontextをspringのコンテナに置き換える必要があります.もちろん、このような構成に基づいてparam-nameは固定されたcontextConfigLocationであり、対応するリスニングContextLoaderListener親クラスでContextLoader:
これにより、このパスに基づいて関連するプロファイルを読み込み、ロードが完了します.もちろん、は複数を構成することができますが、一般的には1つのlistenerに対応します.servletでこの値を取得して使用
2、init-paramこれはservletのパラメータに対応し、以下のように配置されている.
servletで取得
req.getAttribute("name");
req.getParameter("name");
汗をかいたから、急いで補習しなさい.
両方のインタフェースは、要求間パラメータ伝達を処理するサーブレットRequestにあります.まずは見てみましょう
public String getParameter(String name);
クライアントとサービス間のデータ転送.たとえばクライアントからhttpリクエスト(GET/POST)が発行され、リクエストにリクエストパラメータが含まれている場合、このインタフェースで取得でき、すべてのパラメータがStringまたはnullとして返されます.たとえば、次のような要求パスがあります.
http://localhost:8080/sample/query.htm?name=aaa&age=12では、以下の方法で値を取得できます.
String name = req.getParameter("name")
String age = req.getParameter("age")
もちろん、POSTリクエストのformフォームのデータも同様に取得され、他の類似のインタフェースは次のとおりです.
public Enumeration getParameterNames();
public String[] getParameterValues(String name);
public Map getParameterMap();
public Object getAttribute(String name);
req.getAttribute()とsetAttribute(String name,Object o)を併用します.一般的なシーンを考慮すると、クエリー操作を実行した後、クエリー結果をページ表示に戻す必要がある場合、このデータ転送はservletで次のように使用することを考慮できます.
req.setAttribute("list", new ArrayList<E>());
ページでデータを取得する必要があります
List list= (ArrayList)req.getAttribute("list");
もちろん今のフレームワークではこのようなコードはあまり書かれていません.
また、以下の内容はhttp://hain.iteye.com/blog/70731参照
次にservletのパラメータを見てみましょう.主に2つのcontext-paramとinit-paramがあります.
1、context-paramはアプリケーションの範囲内のパラメータに対応し、servletcontextに格納、web.xmlでは、次のように構成されています.
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/spring-*.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
これは一般的なspringのロード構成です.ここでは、webコンテナの起動時にspringのプロファイルをロードし、servletcontextをspringのコンテナに置き換える必要があります.もちろん、このような構成に基づいてparam-nameは固定されたcontextConfigLocationであり、対応するリスニングContextLoaderListener親クラスでContextLoader:
/**
* Name of servlet context parameter (i.e., {@value}) that can specify the
* config location for the root context, falling back to the implementation's
* default otherwise.
* @see org.springframework.web.context.support.XmlWebApplicationContext#DEFAULT_CONFIG_LOCATION
*/
public static final String CONFIG_LOCATION_PARAM = "contextConfigLocation";
これにより、このパスに基づいて関連するプロファイルを読み込み、ロードが完了します.もちろん、
getServletContext().getInitParameter("contextConfigLocation"));
2、init-paramこれはservletのパラメータに対応し、以下のように配置されている.
<servlet>
<servlet-name>sales</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>name</param-name>
<param-value>this is a servlet init-param</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
servletで取得
this.getInitParameter("name")