GetとPostリクエストとサーブレットでリクエスト情報を取得する方法

4139 ワード

1.Get要求とPost要求1).GET方式を用いてパラメータを渡す:①.ブラウザアドレスバーにあるURLアドレスを入力したり、ウェブページ上のハイパーリンクをクリックしたりしたときに、ブラウザが発行するHTTP要求メッセージの要求方式GET.②.ウェブページのフォーム要素のmethod属性が「GET」に設定されている場合.ブラウザがこのFORMフォームを発行する際に生成するHttp要求メッセージの要求方式もGETである.③. GET要求方式を用いてWEBサーバにパラメータを渡すフォーマット:http://www.zzz.com/counter.jsp?name=1&password=111 ④. GET方式で伝送されるデータ量は一般的に1 KB以下に制限される.
 
http://localhost:8080/Servlet/hello.jsp?user=1&password=1    
2).POST方式でパラメータを渡す:①.POST要求方式は主にWEBサーバ側プログラムにformフォーム中のデータを提出するために用いられる:formフォームのmethodはPOST②. POST方式は各フォームフィールド要素とそのデータをHttpメッセージの実体内容としてWEBサービスに送信し、GET方式で伝送するデータ量よりずっと大きい.
 
 
POST /Example04/index.jsp HTTP/1.1  
Referer: http://localhost:8080/Example04/form.html  
Content-Type: application/x-www-form-urlencoded  
Host: localhost:8080  
Content-Length: 30  

username=zhangsan&password=123           --要求体でパラメータを転送する2.サーブレットで要求情報を取得する方法:1).servletのサービス()メソッドは、要求に応答するために使用されます.なぜなら、要求のたびにサービス()メソッドpublic voidサービス(サーブレットRequest request,サーブレットResponse response)が呼び出されるからです.  throwsサーブレットException,IOException{}サーブレットRequest:要求情報がカプセル化されており、そこから任意の要求情報を取得できます.サーブレットResponse:応答情報がカプセル化されており、ユーザーに何か応答したい場合は、このインタフェースのメソッドを使用して、これら2つのインタフェースの実装クラスがサーバによって実装され、サーバがサービスメソッドを呼び出すときに転送されます.2).サーブレットリクエスト:①.要求パラメータの取得  -->String getParameter(String name):  要求パラメータの名前に基づいて、パラメータ値を返します.要求されたパラメータに複数の値(CheckBoxなど)がある場合、このメソッドは最初にコミットされた値しか取得できません.コード:
 
	String user = request.getParameter("user");
			String password = request.getParameter("password");
			System.out.println("   user:"+user+"   password:"+password);
//    :
// user:111   password:111

-->String[]getParameterValue(String name)要求パラメータの名前に基づいて、要求パラメータに対応する文字列配列コードを返します.
 
String[] interestings = request.getParameterValues("interesting");
			for(String interest:interestings){
				System.out.println("--"+interest);
//--foot
//--game
//--shopping

-->Enumeration getParameterName()は、サーブレットコンフィグ(またはサーブレットContext)のgetInitParameterName()メソッドコードと同様に、パラメータ名に対応するEnumerationオブジェクトを返します.
 
Enumeration names=request.getParameterNames();
				while(names.hasMoreElements()){
					String name=names.nextElement();
					String value=request.getParameter(name);
					System.out.println("--"+name+":"+value);
				}
//--user:111
//--password:111
//--interesting:foot	

-->MapgetParameterMap()要求パラメータのキー値ペアを返します:key:パラメータ名 value:パラメータ値.String配列タイプ.コード:
 
Map map =  request.getParameterMap();
			for(Map.Entry entry:map.entrySet()){
				System.out.println("**"+entry.getKey()+":"+Arrays.asList(entry.getValue()));
			}
//**user:[111]
//**password:[111]
//**interesting:[foot, game, shopping]

②.取得要求のURI
 
Map map =  request.getParameterMap();
			for(Map.Entry entry:map.entrySet()){
				System.out.println("**"+entry.getKey()+":"+Arrays.asList(entry.getValue()));
			}
//**user:[111]
//**password:[111]
//**interesting:[foot, game, shopping]

③.取得要求方式:
 
	String requestMethod=httpServletRequest.getMethod();
			System.out.println(requestMethod);  //   GET

④. GETのクエリー文字列を取得する:
 
			String  query= httpServletRequest.getQueryString();
			System.out.println(query);  	
//   user=111&password=111&interesting=foot&interesting=game&interesting=shopping

⑤. attributeに関するいくつかの方法3).HttpServeretRequest:ServeretRequestのサブインタフェースです. HTTPリクエストに対して定義されます.HTTPリクエストを大量に取得する方法が含まれています.4).ServiceletResponse:応答情報をカプセル化し,ユーザに何か応答を与えたい場合は,そのインタフェースを用いた方法で実現できる①.!!getWriter():PrintWriterオブジェクトを返し、そのオブジェクトのprint()メソッドを呼び出し、print()のパラメータをお客様のブラウザに直接印刷します.PrintWriter out=response.getWriter()out.println("helloworld..."); ②.レスポンスの内容タイプを設定する:response.setContentType(「アプリケーション/msword」);③. void sendRedirect(String location):要求のリダイレクト.(この方法はHttpServeretResponseで定義されています).