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 はカウントが保持されていることがわかる。