「クッキーの利用」の編集履歴(バックアップ)一覧はこちら
「クッキーの利用」(2009/02/26 (木) 00:22:44) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
*&bold(){クッキーの作成}
1番目の引数に作成するクッキーのクッキー名を指定。
2番目の引数に保存したい情報を指定。
Cookie cookie = new Cookie("visited", "1");
*&bold(){クッキーをクライアントへ保存}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException{
:
Cookie cookie = new Cookie("visited", "1");
response.addCookie(cookie);
}
|URL|http://localhost:8080/cookie/cookietest|
|アプリケーション配置場所|c:\servlet-sample\cookie\|
|web.xmlファイル|c:\servlet-sample\cookie\WEB-INF\web.xml|
|コンテキストファイル|C:\Program Files\Apache Software Foundation\Tomcat 5.5\conf\Catalina\localhost\cookie.xml|
-クッキーの確認方法
ブラウザのURL入力欄に「javascript:document.cookie;」を入力してEnter。
*&bold(){クッキーの取り出し}
"getCookies"メソッドを使用。
-特定のクッキーの検索
「Cookie」クラスで用意されている"getName"メソッドを使用。
-クッキーの値を取得
「Cookie」クラスで用意されている"getValue"メソッドを使用。
Cookie cookie[] = request.getCookies();
if (cookie != null){
for (int i = 0 ; i < cookie.length ; i++){
if (cookie[i].getName().equals("visited")){
String val = cookie[i].getValue();
}
}
}
|URL|http://localhost:8080/cookie/cookietest|
&italic(){次回ここから http://www.javadrive.jp/servlet/cookie/index1.html}
↓素材用
デフォルトで使われるweb.xmlは <Tomcatをインストールしたディレクトリ>\conf\web.xml です。
*&bold(){<servlet>要素}
<web-app>
<servlet>
<servlet-name>
サーブレット名
</servlet-name>
<servlet-class>
実際のクラス名
</servlet-class>
</servlet>
</web-app>
*&bold(){サーブレットの呼び出し方(invoker)}
invokerを使った呼び出し…Tomcat5以降はweb.xmlに記述が必要。
セキュリティ上の問題があるため、あまりお勧めしない。
*&bold(){<servlet-mapping>要素}
<web-app>
<servlet>
<servlet-name>
サーブレット名1
</servlet-name>
<servlet-class>
実際のクラス名1
</servlet-class>
</servlet>
:
</web-app>
*&bold(){URLパターン(特定のファイルへのマッピング)}
|URL(1)|http://localhost:8080/webxmltest/helloworld|
|URL(2)|http://localhost:8080/webxmltest/index.html|
|アプリケーション配置場所|c:\servlet-sample\webxmltest\|
|web.xmlファイル|c:\servlet-sample\webxmltest\WEB-INF\web.xml|
|コンテキストファイル|C:\Program Files\Apache Software Foundation\Tomcat 5.5\conf\Catalina\localhost\webxmltest.xml|
*&bold(){URLパターン(パスマッピング)}
:
<url-pattern>
/hello/*
</url-pattern>
:
この場合、「http://localhost:8080/webxmltest/hello/」から始まる全ての呼び出しに対して指定のサーブレットを実行する。
下記のどの呼び出し方をしても同じサーブレットが呼び出される。
http://localhost:8080/webxmltest/hello/hellowolrd
http://localhost:8080/webxmltest/hello/index.html
http://localhost:8080/webxmltest/hello/sub/sub2/exsample.jpg
|URL(1)|http://localhost:8080/webxmltest/hello/abc &br() http://localhost:8080/webxmltest/hello/xxx.html|
|URL(2)|http://localhost:8080/webxmltest/abc/def/hello &br() http://localhost:8080/webxmltest/abc/def/xxx.html|
*&bold(){URLパターン(拡張子マッピング)}
:
<url-pattern>
*.gif
</url-pattern>
:
この場合、呼び出しのURLの最後が「.gif」で終わる全ての呼び出しに対して指定のサーブレットを実行する。
下記のどの呼び出し方をしても同じサーブレットが呼び出される。
http://localhost:8080/webxmltest/sample.gif
http://localhost:8080/webxmltest/hello.gif
http://localhost:8080/webxmltest/hello/abc.gif
*&bold(){URLパターン(デフォルトマッピング)}
どのURLマッピングにもマッチしなかった全ての呼び出しに対して対応するサーブレットを呼び出すためのもの。
:
<url-pattern>
/
</url-pattern>
:
「/」だけを記述します。
デフォルトマッピングはパスマッピングで「/*」と記述した場合と同じだが、優先順位が異なる。
*&bold(){URLパターンの優先順位}
高 特定のファイルへのマッピング
↑ パスマッピング
↓ 拡張子マッピング
低 デフォルトマッピング
*&bold(){<init-param>要素}
<init-param>要素はサーブレットに初期値を設定したい場合に利用する。
プログラム内に直接記述することももちろん出来るが、プログラム内に記述した場合、初期値を変更したい場合にはプログラムを再コンパイルする必要がある。それに対して<init-param>要素に初期値を設定しプログラム内から参照する場合には、初期値を変更した場合でもプログラム自体は再コンパイルする必要がない。
-<init-param>要素の構成
<servlet>
:
<servlet-name>abc</servlet-name>
<servlet-class>abc</servlet-class>
<init-param>
<param-name>
パラメータ名1
</param-name>
<param-value>
パラメータ値1
</param-value>
</init-param>
<init-param>
<param-name>
パラメータ名2
</param-name>
<param-value>
パラメータ値2
</param-value>
</init-param>
:
</servlet>
*&bold(){<init-param>で指定した初期値をサーブレット内で取り出す}
"getInitParameter"メソッドの引数には<init-param>要素内の<param-name>要素で記述したパラメータ名を指定する。メソッドの戻り値として<param-value>要素で指定したパラメータ値を取得する事が出来る。
|URL|http://localhost:8080/webxmltest/kingaku|
*&bold(){クッキーの作成}
1番目の引数に作成するクッキーのクッキー名を指定。
2番目の引数に保存したい情報を指定。
Cookie cookie = new Cookie("visited", "1");
*&bold(){クッキーをクライアントへ保存}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException{
:
Cookie cookie = new Cookie("visited", "1");
response.addCookie(cookie);
}
|URL|http://localhost:8080/cookie/cookietest|
|アプリケーション配置場所|c:\servlet-sample\cookie\|
|web.xmlファイル|c:\servlet-sample\cookie\WEB-INF\web.xml|
|コンテキストファイル|C:\Program Files\Apache Software Foundation\Tomcat 5.5\conf\Catalina\localhost\cookie.xml|
-クッキーの確認方法
ブラウザのURL入力欄に「javascript:document.cookie;」を入力してEnter。
*&bold(){クッキーの取り出し}
"getCookies"メソッドを使用。
-特定のクッキーの検索
「Cookie」クラスで用意されている"getName"メソッドを使用。
-クッキーの値を取得
「Cookie」クラスで用意されている"getValue"メソッドを使用。
Cookie cookie[] = request.getCookies();
if (cookie != null){
for (int i = 0 ; i < cookie.length ; i++){
if (cookie[i].getName().equals("visited")){
String val = cookie[i].getValue();
}
}
}
|URL|http://localhost:8080/cookie/cookietest|
*&bold(){値の再設定}
「Cookie」クラスで用意されている"setValue"メソッドで既存のクッキーに別の値を設定する。
Cookie cookie[] = request.getCookies();
Cookie visitedCookie = null;
if (cookie != null){
for (int i = 0 ; i < cookie.length ; i++){
if (cookie[i].getName().equals("visited")){
visitedCookie = cookie[i];
}
}
if (visitedCookie != null){
int visited = Integer.parseInt(visitedCookie.getValue());
visitedCookie.setValue(Integer.toString(visited + 1));
response.addCookie(visitedCookie);
}
}
|URL|http://localhost:8080/cookie/cookietest|
*&bold(){有効期限の設定}
作成したクッキーはデフォルトで有効期限がブラウザが閉じるまでとなっている。
「Cookie」クラスで用意されている"setMaxAge"メソッドで有効期限を設定する。
有効期限は秒数で指定する。
例えば1時間に設定したい場合:
Cookie cookie = new Cookie("visited", "1");
cookie.setMaxAge(3600);
引数にマイナスの値を設定した場合、有効期限はブラウザが閉じるまでとなる。
引数に0を設定するとクッキーを破棄する。
|URL|http://localhost:8080/cookie/cookietest|