Session
HelloHttpClientSession
■前提
http://localhost:11382/myweb/sessioncount.jsp
は、セッションでアクセスされた回数を返すJSPだとする。
■JSPコード
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"
%><%
int count = 0;
String countString = (String) session.getAttribute("COUNT");
if (countString != null) {
count = Integer.parseInt(countString);
count++;
}
session.setAttribute("COUNT", Integer.toString(count));
%><%=count%>
■コード
package hello.org.apache.commons.httpclient;
import java.io.IOException;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.HttpMethod;
import org.apache.commons.httpclient.MultiThreadedHttpConnectionManager;
import org.apache.commons.httpclient.cookie.CookiePolicy;
import org.apache.commons.httpclient.methods.GetMethod;
public class HelloHttpClientSession {
public static void main(String[] args) {
HttpClient client = new HttpClient(
new MultiThreadedHttpConnectionManager());
HttpMethod method1 = new GetMethod("http://localhost:11382/myweb/sessioncount.jsp");
HttpMethod method2 = new GetMethod("http://localhost:11382/myweb/sessioncount.jsp");
// クッキーを無視する設定
method1.getParams().setCookiePolicy(CookiePolicy.IGNORE_COOKIES);
// デフォルト設定(クッキーを保持する)
method2.getParams().setCookiePolicy(CookiePolicy.DEFAULT);
try {
client.executeMethod(method1);
System.out.println("method1:"+new String(method1.getResponseBody()));
client.executeMethod(method2);
System.out.println("method2:"+new String(method2.getResponseBody()));
client.executeMethod(method2);
System.out.println("method2:"+new String(method2.getResponseBody()));
client.executeMethod(method1);
System.out.println("method1:"+new String(method1.getResponseBody()));
client.executeMethod(method2);
System.out.println("method2:"+new String(method2.getResponseBody()));
} catch (HttpException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
method1.releaseConnection();
method2.releaseConnection();
client.getHttpConnectionManager().closeIdleConnections(0);
}
}
}
■結果
method1:0
method2:0
method2:1
method1:0
method2:2
■解説
method2 はカウントが保持されていることがわかる。