Today: Yesterday: Total: Online:
カテゴリー
その他
  • RSS1.0
  • RSS2.0
  • atom0.3
  • valid XHTML1.0
  • valid CSS2
  • Credit
RSSリーダーで購読する | この日記のはてなブックマーク数 | プロフィール
コメントが一番多い記事(233コメント):人の心理の裏をかくホームページ集客術:リピータになってもらうためには
ツイートが一番多い記事(94ツイート):ちょっと待て!twitterやfacebookに子供の写真を掲載する親達への警告
いいねが一番多い記事(574いいね):facebookスパムに要注意。なりすましの見分け方とアカウント乗っ取りの手口(2013年度版)

カテゴリー » JAVA » JSP November 02, 2010

JSPでのリダイレクト方法 ID:1288678093


jsp:forwardを使う。
<jsp:forward page="9-1-mobile.jsp" /><%

尚、forwardアクションによる転送では転送元と転送先で、
sessionオブジェクト、requestオブジェクトが共有される。

よって、下記のような形でエラーページを出力するときに
値を渡せる

・リクエストオブジェクトによる転送例

転送元
// エラーメッセージが設定されている場合はエラーページへ転送
if(!errorMessage.equals("")) {
    request.setAttribute("errorMessage", errorMessage);
    %><%
} 

転送先
String errorMessage = (String)request.getAttribute("errorMessage");

・セッションオブジェクトによる転送例

転送元
<jsp:forward page="転送先ローカルURL"/>
    <jsp:param name="パラメータ名A" value="パラメータ値A"/>
    <jsp:param name="パラメータ名B" value="パラメータ値B"/>
</jsp:forward>


転送先
request.getParameter("パラメータ名A");

http://www.atmarkit.co.jp/fjava/rensai/jsp09/jsp09.html

— posted by midilin @ 03:08PM

カテゴリー » JAVA » JSP November 02, 2010

JSP クッキーの設定 ID:1288677818


・クッキーの設定
// クッキーに格納する文字列を作成(URLエンコードをする)
String value = URLEncoder.encode(now.toString());

// 名前が"accesstime"、値が現在時刻であるクッキーを作成
Cookie cookie = new Cookie("accesstime",value);

// クッキーの設定
cookie.setMaxAge(7 * 24 * 60 * 60); //有効期間を1週間に設定

// クッキーを発行
response.addCookie(cookie);

・クッキーの取得

// それぞれのクッキーに対して名前を確認
if(cookies != null) {
    for(int i = 0; i < cookies.length; i++) {
        // 名前が "accesstime" であるかチェック
        if(cookies[i].getName().equals("accesstime")) {
            // 該当するクッキーを取得
            accesstimeCookie = cookies[i];
        }
    }
}

// 表示する文字列
String accesstime;

// 該当するクッキーがみつからなかった場合
if(accesstimeCookie == null) {
    accesstime = "記録がありません";
} else { // クッキーがみつかった場合は値を取得(URLデコードする)
    accesstime = URLDecoder.decode(accesstimeCookie.getValue());
}

・クッキーの破棄

既存のクッキーを有効期間がゼロ秒のクッキーに変更することで、ブラウザ側で破棄の処理を行う
// クッキーを作成
Cookie cookie = new Cookie("accesstime","");

// クッキーの有効期間を0秒に設定
cookie.setMaxAge(0);

// クッキーを発行
response.addCookie(cookie);

http://www.atmarkit.co.jp/fjava/rensai/jsp08/jsp08.html

— posted by midilin @ 03:03PM

カテゴリー » JAVA » JSP November 02, 2010

JSPのセッション ID:1288676708


・通常は1ページ1セッション。
・複数のページを1セッションで扱いたい場合(ショッピングサイトなど)
 HTTPの範囲では、扱うことができないため、JSPではクッキーを使用して複数ページにわたるセッションを管理する仕組みが準備されている。

例)
・セッション変数にユーザー名が格納されていればメッセージ表示+7-3.jspへのリンク
・ユーザー名が格納されていなければ、入力用のフォームを表示し、値を7-2.jspを渡す

<%@ page contentType="text/html; charset=euc-jp" %>
<%
// 内容: セッションを使用する
 
// セッション変数の取得
String userName = (String)session.getAttribute("name");
 
// 表示するメッセージ
String message = "";
 
if(userName == null) { // セッション変数 name を取得できなかった場合
     message = "お名前を入力してください。<br>"
             + "<form action=\"7-2.jsp\">"
             + "<input type=\"text\" name=\"name\" size=16> "
             + "<input type=\"submit\" value=\"OK\">";
 
} else { // セッション変数 name を取得できた場合
     message = "ようこそ <b>" + userName + "</b> さん。<br><br>"
             + "<a href=\"7-3.jsp\">セッションを終了する</a>";
}
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head><title>セッションを使用する</title></head>
<body>
<p>-- セッション変数の取得 --</p>
<p><%= message %></p>
<p>(sessionID=<%= session.getId() %>)</p>
</body>
</html>

セッションのの識別IDはgetId()メソッドで取得できる。


セッション変数の格納は
session.setAttribute("name", name);


セッションの開放は
session.invalidate();

sessionは、outと同じ暗黙オブジェクトの1つ

http://www.atmarkit.co.jp/fjava/rensai/jsp07/jsp07.html

— posted by midilin @ 02:45PM

カテゴリー » JAVA » JSP November 02, 2010

Jsp Bean サンプルプログラム ID:1288675628


・BeanであるクラスとBeanでないクラスの違い

Beanにはプロパティの値を設定するメソッドと
プロパティの値を取得するメソッドの名前に決まり事がある。

基本的には、setとgetの後にプロパティ名を続けたメソッドを準備すればよいだけ。



CopyrightHTMLBean.java

package atmarkit;
 
 /**
  * 著作権表示用のHTMLを生成するBean
  */
 public class CopyrightHTMLBean {
 
     /** 著作年 */
     private String year = "";・・・・・・・・private変数になった
     public void setYear(String year) { this.year 
= year; }
 
     /** 著作者 */
     private String name = "";・・・・・・・・private変数になった
     public void setName(String name) { this.name 
= name; }
 
     /** メールアドレス */
     private String mail = "";・・・・・・・・private変数になった
     public void setMail(String mail) { this.mail 
= mail; }
 
     /**
      * 標準的な著作権表示HTML文を取得する
      * @return 標準的な著作権表示HTML文
      */
     public String getNormalHTML() {
         // メールアドレスが指定されている場合は著作者名にリンクをつける
         if(!mail.equals("")) 
{
             
name = " <a href=\"mailto:" + mail + "\">" + name + "</a>";
         }
         return "Copyright 
" + year + " " + name + ". All rights reserved.";
     }
 
     /**
      * 短い著作権表示HTML文を取得する
      * @return 短い著作権表示HTML文
      */
     public String getShortHTML() {
         // メールアドレスが指定されている場合は著作者名にリンクをつける
         if(!mail.equals("")) 
{
             
name = " <a href=\"mailto:" + mail + "\">" + name + "</a>";
         }
         return "(C) " 
+ year + " " + name + ".";
     }
 }

JSP側

<%@ page contentType="text/html; charset=euc-jp" %>
 <jsp:useBean id="copyright" class="atmarkit.CopyrightHTMLBean" 
/>
 <jsp:setProperty name="copyright" property="year" value="2001" 
/>
 <jsp:setProperty name="copyright" property="mail" value="taro@java.server.pages" 
/>
 <jsp:setProperty name="copyright" property="name" value="JSP 
太郎" />
 <%
 // オリジナルBeanを使用する
 %>
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
nbsp;    <title>オリジナルBeanを使用する</title>
</head>
<body>
<p>-- オリジナルBeanを使用する --</p>
<p>
<hr>
標準的な著作権表示<br>
<jsp:getProperty name="copyright" property="normalHTML" />
<hr>
短い著作権表示<br>
<jsp:getProperty name="copyright" property="shortHTML" />
<hr>
</p>
</body>
</html>

●<jsp:useBean>
Beanの使用を宣言

<jsp:useBean id="copyright" 
            class="atmarkit.CopyrightHTMLBean" />
            

atmarkit.CopyrightHTMLBean copyright = new atmarkit.CopyrightHTMLBean();
と同じような意味


●<jsp:setProperty>
Beanのプロパティの値を設定

<jsp:setProperty name="copyright" 
            property="year" value="2001" />

copyright.setYear("2001");
と同じ意味

●<jsp:getProperty>
Beanのプロパティの値を取得

<jsp:getProperty name="copyright" 
            property="shortHTML" />

copyright.getShortHTML(); と同じような意味

http://www.atmarkit.co.jp/fjava/rensai/jsp06/jsp06.html

— posted by midilin @ 02:27PM

カテゴリー » JAVA » JSP November 02, 2010

Beanのスコープ ID:1288675259


<jsp:useBean id="id_name" 
            class="class_name" scope="scope" 
            /> 

scopeの値は、page、request、session、applicationの4通
デフォルトでpageが使用

scopeは、一度宣言されたBeanにアクセスできる有効範囲

・page
現在のページのみ

・request
現在のリクエストの範囲(インクルードされたページ、転送先のページを含む)
レスポンスがユーザーに返されるまでの間だけ有効
(使用例:FORMで入力されたデータを保持させる)

・session
現在のセッションの範囲
(使用例:ログインしたユーザーの情報を保持させる)

・application
アプリケーションの有効期間と同じだけ、永続的に使用
(使用例:アクセスカウントなど、アプリケーション間で共有する情報を保持させる

http://www.atmarkit.co.jp/fjava/rensai/jsp06/jsp06.html

— posted by midilin @ 02:20PM

カテゴリー » JAVA November 02, 2010

メンバ変数 ID:1288672991


オブジェクトの状態を保持する変数で
オブジェクトに属し、どのメソッド、コンストラクタにも属さない。

メンバ変数は複数のメソッド、コンストラクタで共通して使用することができる

使用例

 //メンバ変数
 int memberVar = 10;  //(1)
 void methodA() {
  //methodAに属するローカル変数localVarA
  int localVarA = 20;  //(4)
  System.out.println("メンバ変数(memberVar):" + memberVar); //(5)
  System.out.println("ローカル変数(localVarA):" + localVarA); //(6)
//System.out.println("ローカル変数(localVarB):" + localVarB); //(7)
 }

http://www.javaroad.jp/java_class4.htm

— posted by midilin @ 01:43PM

カテゴリー » JAVA » JSP November 02, 2010

JSPのインクルード方法 ID:1288672805


静的なインクルードを行う「インクルードディレクティブ」
<% out.print("Hello,
"); %>

<%@ include file="include.jsp"%>

インクルードディレクティブは、コンパイル前に読み込み処理を行う。
(ファイルを変更して、更新してもすぐに反映されない)

動的なインクルードを行う「インクルードアクション」
<% out.print("Hello,
"); %>

<jsp:include page="include.jsp" flush="true"
/>

インクルードアクションは実行時に読み込み処理を行う。
(ファイルを変更して、更新してもすぐに反映される)

http://www.atmarkit.co.jp/fjava/rensai/jsp05/jsp05.html

— posted by midilin @ 01:40PM

カテゴリー » JAVA » JSP November 02, 2010

JSP web.xml classesディレクトリ libディレクトリ ID:1288671860


JSPではWebアプリケーションのディレクトリ構成が次のように決められている。

$docBase - WEB-INF - classes - myPackageName-myClass.class
|- lib - myLib.jar
- web.xml

$docBaseは、Context Pathの宣言で指定したdocBaseのパス
その下に、WEB-INFというディレクトリが存在し、
その中に、classesとlibディレクトリ、およびweb.xmlファイルを配置


classesディレクトリには、オリジナルのクラスを配置することで、JSPからそのクラスを使用することができる

lib以下に置いたクラスは、Tomcat起動時にクラスパスに追加される。
Webアプリケーションで使用するJAR形式のアーカイブを配置する。

web.xml には、サーブレットの登録や初期値の設定を行う。
デフォルト値でよい


JSPファイル、HTMLファイルは、$docBase以下の任意の場所に配置する




http://www.atmarkit.co.jp/fjava/rensai/jsp04/jsp04.html

— posted by midilin @ 01:24PM

カテゴリー » JAVA » JSP November 02, 2010

JSP サンプル プログラム ID:1288666728


・ブラウザからの入力のないプログラム:現在時刻表示
<%@ page contentType="text/html; charset=euc-jp" %>・・・文字コードの指定(指定しないとデフォルトはISO-8859-1が使用される)
 <%
 // 内容: 時刻を表示する例
 
 // 現在の時刻を取得
 java.util.Date nowTime = new java.util.Date();
 %>
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
<head><title>時刻を出力する例</title></head>
<body>
<p>-- 時刻を出力する例 --</p>
<p>
現在の時刻は <strong><%= nowTime %></strong> です。
</p>
</body>
</html>


・時刻による分岐方法
<%@ page import="java.util.*"
 contentType="text/html; charset=euc-jp" %>
 <%
 // 時刻に応じたあいさつを表示する例
 
 // 現在の時刻を取得
 GregorianCalendar calendar = new GregorianCalendar();
 int nowHour = calendar.get(Calendar.HOUR_OF_DAY);
 %>
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
 <head><title>時刻に応じたあいさつを表示する例</title></head>
 <body>
 <p>-- 時刻に応じたあいさつを表示する例 --</p>
 <p>
 現在は <strong><%= nowHour %>時</strong> です。<br>
 <strong>
 <% if(nowHour >= 4 && nowHour < 7) { %>
 まだ朝早いですね
 <% } else if(nowHour >= 7 && nowHour < 12) { 
%>
 おはようございます
 <% } else if(nowHour >= 12 && nowHour < 15) { 
%>
 お昼ですね
 <% } else if(nowHour >= 15 && nowHour < 18) { 
%>
 もう夕方になりました
 <% } else if(nowHour >= 18 && nowHour < 22) { 
%>
 夜になりましたね
 <% } else if(nowHour >= 22 || nowHour < 4) { %>
 深夜です
 <% } %>
 </strong>
 </p>
 </body>
 </html>

・ブラウザから入力を受け取るプログラム

HTML側
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
 <head><title>入力ページ</title></head>
 <body>
 <p>-- 入力ページ --</p>
 <p><form action="3-4.jsp">
 お名前: <input type="text" name="name" size=32><br>
 生年月日: <input type="text" name="birthday" size=20><br>
 <br>
<input type="submit" value="OK">
</form></p>
</body>
</html>

受け取った内容を出力するJSP
<%@ page contentType="text/html; charset=euc-jp" %>
 <%
 // ユーザーからの入力を出力する
 
 // パラメータを取得
 String name = request.getParameter("name");
 String birthday = request.getParameter("birthday");
 
 // 文字コードの変換を行う
name = new String(name.getBytes("8859_1"), "EUC_JP");
birthday = new String(birthday.getBytes("8859_1"), "EUC_JP");
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head><title>ユーザーからの入力を出力する</title></head>
<body>
<p>-- ユーザーからの入力を出力する --</p>
<p><ul>
<li>お名前: <%= name %>
<li>生年月日: <%= birthday %>
</ul></p>
</body>
</html> 

・メソッドの使用例

メソッド内は
<%! %>
を使用

出力する式は
<%= %><br>

<%@ page contentType="text/html; charset=euc-jp" %>
 <%
 // メソッドを使用する例
 
 String redText = getColoredHTML("赤いテキスト", "red");
 String blueText = getColoredHTML("青いテキスト", "blue");
 String greenText = getColoredHTML("緑のテキスト", "green");
 %>
 <%!
/**
 * フォントカラーの指定を行ったHTML文を作成する
 * @param str 色を付けて表示する文字列
 * @param color 色を指定する文字列
 * @return フォントカラーの指定を行ったHTML文
*/
public String getColoredHTML(String str, String color) {
return "<font color=\"" + color + "\">" 
+ str + "</font>";
}
%>
<html>
<head><title>メソッドを使用する例</title>
<body>
<p>-- メソッドを使用する例 --</p>
<p>
<%= redText %><br>
<%= blueText %><br>
<%= greenText %><br>
</p>
</body>
</html> 
http://www.atmarkit.co.jp/fjava/rensai/jsp03/jsp03.html


・JavaとJSPの連携

Java側

CopyrightHTML.java
package atmarkit;
 
 /**
  * 著作権表示用のHTMLを生成するクラス
  */
 public class CopyrightHTML {
 
     /** 著作年 */
     public String year = "";
 
     /** 著作者 */
     public String name = "";
 
     /** メールアドレス */
     public String mail = "";
 
     /**
      * 標準的な著作権表示HTML文を取得する
      * @return 標準的な著作権表示HTML文
      */
     public String getNormalHTML() {
         // メールアドレスが指定されている場合は著作者名にリンクをつける
         if(!mail.equals("")) 
{
             
name = " <a href=\"mailto:" + mail + "\">" + name + "</a>";
         }
         return "Copyright 
" + year + " " + name + ". All rights reserved.";
     }
 
     /**
     * 短い著作権表示HTML文を取得する
     * @return 短い著作権表示HTML文
     */
     public String getShortHTML() {
         // メールアドレスが指定されている場合は著作者名にリンクをつける
         if(!mail.equals("")) 
{
             
name = " <a href=\"mailto:" + mail + "\">" + name + "</a>";
         }
         return "(C) " 
+ year + " " + name + ".";
     }
 }


・JSP側
<%@ page contentType="text/html; charset=euc-jp" import="atmarkit.CopyrightHTML" 
%>
 <%
 // オリジナルクラスを使用する
 CopyrightHTML copyright = new CopyrightHTML();
 copyright.year = "2001";
 copyright.mail = "taro@java.server.pages";
 copyright.name = "JSP 太郎";
 
 %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
     <title>オリジナルクラスを使用する</title>
</head>
<body>
<p>-- オリジナルクラスを使用する --</p>
<p>
<hr>
標準的な著作権表示<br>
<%= copyright.getNormalHTML() %>
<hr>
短い著作権表示<br>
<%= copyright.getShortHTML() %>
<hr>
</p>
</body>
</html>


CopyrightHTMLクラスをBeanにした場合は
http://www.border.jp/midilin/memo/index.php?UID=1288675628
を参考のこと。

http://www.atmarkit.co.jp/fjava/rensai/jsp06/jsp06.html

— posted by midilin @ 11:58AM

カテゴリー » JAVA » JSP November 02, 2010

Context Pathの設定 ID:1288664427


http://servername/tomcat/hello.jsp という
URLへアクセスすることで
/home/user_name/tomcat/hello.jsp
というプログラムを実行するには、Context Pathの設定が必要


<Context path="/tomcat"
   docBase="/home/user_name/tomcat"
   crossContext="false"
   debug="0"
   reloadable="true" >
</Context>  

http://www.atmarkit.co.jp/fjava/rensai/jsp02/jsp02.html

— posted by midilin @ 11:20AM