サーブレット初期パラメータその他


最近、あるものを作るときにservletのパラメータを使うと、次の2つの関係が突然分からなくなります.
        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";

これにより、このパスに基づいて関連するプロファイルを読み込み、ロードが完了します.もちろん、は複数を構成することができますが、一般的には1つのlistenerに対応します.servletでこの値を取得して使用
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")