CALENDAR
S M T W T F S
    123
45678910
11121314151617
18192021222324
252627282930 
<< June 2017 >>
ARCHIVES
RECOMMEND
RECOMMEND
RECOMMEND
MOBILE
qrcode
SPONSORED LINKS
スポンサーサイト

一定期間更新がないため広告を表示しています

| - | | - | - |  
Java 23日目 memo
========================================
フォームのレイアウト(P.358)
========================================

入力フォーム EnqueteForm.jsp
----------------------------------------
<%@ page contentType="text/html; charset=Windows-31J"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
  "http://www.w3.org/TR/html4/strict.dtd">
<HTML>
 <HEAD>
  <TITLE>JSPサンプル</TITLE>
  <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=Windows-31J">
  <LINK REL="stylesheet" TYPE="text/css" HREF="style.css">
 </HEAD>
 
<BODY>
<DIV CLASS="page">
 <H1>アンケート調査</H1>
 <FORM ACTION="EnqueteConfirm.jsp" METHOD="post">

 <DIV CLASS="section">
  <B>お名前</B>
  <INPUT TYPE="text" NAME="name">
 </DIV>

 <DIV CLASS="section">
  <B>製品 </B>
  <SELECT NAME="product">
   <OPTION VALUE="0">ワープロ天国
   <OPTION VALUE="1">計算大王
   <OPTION VALUE="2">プレゼン大将
   <OPTION VALUE="3">検索名人
   <OPTION VALUE="4">絵描き職人
  </SELECT>
 </DIV>

 <DIV CLASS="section">
  <B>評価</B>
   <INPUT TYPE="radio" NAME="eval" VALUE="1">非常によい
   <INPUT TYPE="radio" NAME="eval" VALUE="2">よい
   <INPUT TYPE="radio" NAME="eval" VALUE="3">普通
   <INPUT TYPE="radio" NAME="eval" VALUE="4">あまり良くない
   <INPUT TYPE="radio" NAME="eval" VALUE="5">悪い
 </DIV>

 <DIV CLASS="section">
  <B>お使いのOS</B>
   <INPUT TYPE="checkbox" NAME="os" VALUE="1">Windows
   <INPUT TYPE="checkbox" NAME="os" VALUE="2">Mac OS
   <INPUT TYPE="checkbox" NAME="os" VALUE="3">Linux
   <INPUT TYPE="checkbox" NAME="os" VALUE="4">その他
 </DIV>

 <DIV CLASS="section">
  <B>ご意見・ご感想</B>
  <TEXTAREA NAME="remark" COLS="60" ROWS="5"></TEXTAREA><BR>
 </DIV>

 <INPUT TYPE="submit" VALUE="送信">
</FORM>
</DIV>
</BODY>
</HTML>

(css省略)


↓↓↓解説↓↓↓
▼リストボックス
SELECT要素とOPTION要素を使ってプルダウン形式のリストボックスを配置。フォームがサブミットされたときには、画面上で選択されているOPTION要素のVALUEの値がパラメータとして送信される。

▼ラジオボタン
INPUT要素のTYPE属性に"radio"を指定。通常はNAME属性に同じ名前を指定したボタンを複数配置。画面上の選択は同じ名前を持つラジオボタンの中の1つのみ。フォームをサブミットすると選択されているボタンのVALUEの値がパラメータとして送信される。未選択の場合はパラメータ名が送信されない。

▼チェックボックス
INPUT要素のTYPE属性に"checkbox"を指定。NAME属性が同じ名前のボタンを複数配置してもよい。この場合は受信側のJSPで配列としてパラメータを処理する。単独のチェックボックス配置して、受信側ではパラメータ名が送信されたかどうかだけをチェックする方法もある。

▼テキストボックス
INPUT要素のTYPE属性に"text"を指定。この中に入力された文字列がパラメータ値として送信される。SIZE属性で表示の幅(桁数)、MAXLENGTH属性で入力できる文字列の最大長を指定できる。このテキストボックスで扱えるのは1行の文字列だけで改行はできない。

▼テキストエリア
TEXTAREA要素の開始タグと終了タグの間に挿入された文字列がパラメータ値として送信される。COLS属性で桁数、ROWS属性で行数を指定することができる。



----------------------------------------

確認フォーム EnqueteConfirm.jsp
----------------------------------------
<%@ page contentType="text/html; charset=Windows-31J"%>
<%@ page import="java.util.*"%>
<%
String[] aryProduct={"ワープロ天国","計算大王","プレゼン大将","検索名人","絵描き職人"};
String[] aryEval={"評価が指定なし","非常によい","よい","普通","あまり良くない","悪い"};
String[] aryOs={"OS指定なし","Windows","Mac OS","Linux","その他"};
request.setCharacterEncoding("Windows-31J");
String strName = request.getParameter("name");
String strProduct=request.getParameter("product");
int intProduct=Integer.parseInt(strProduct);
String strProductName = aryProduct[intProduct];
String strEval=request.getParameter("eval");
String strEvalName="";
int intEval=0;
if(strEval!=null){
 intEval=Integer.parseInt(strEval);
 strEvalName = aryEval[intEval];
}
String[] aryOsValues=request.getParameterValues("os");
if(aryOsValues==null){
 aryOsValues=new String[1];
 aryOsValues[0]="0";
}
String[] aryOsName = new String[aryOsValues.length];
for(int i=0;i<aryOsValues.length;i++){
 int intOs=Integer.parseInt(aryOsValues[i]);
 aryOsName[i] = aryOs[intOs];
}
String strOsNames=Arrays.toString(aryOsName);
strOsNames=strOsNames.substring(1,strOsNames.length()-1);
String strRemark=request.getParameter("remark");
if(strRemark.equals("")){
 strRemark="記入なし";
}
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
  "http://www.w3.org/TR/html4/strict.dtd">
<HTML><HEAD>
<TITLE>JSPサンプル</TITLE>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=Windows-31J">
<LINK REL="stylesheet" TYPE="text/css" HREF="style.css">
</HEAD><BODY>
<DIV CLASS="page">
<H1>送信内容の確認</H1>
<FORM ACTION="EnqueteSave.jsp" METHOD="post">
<DIV CLASS="section">
<B>お名前:</B><%=strName.replaceAll("<","<").replaceAll(">",">")%>
</DIV>
<INPUT TYPE="hidden" NAME="name" VALUE="<%=strName%>">
<DIV CLASS="section">
<B>製品:</B><%=strProductName%>
</DIV>
<INPUT TYPE="hidden" NAME="product" VALUE="<%=intProduct%>">
<DIV CLASS="section">
<B>評価:</B><%=strEvalName%>
</DIV>
<INPUT TYPE="hidden" NAME="eval" VALUE="<%=intEval%>">
<DIV CLASS="section">
<B>OS:</B><%=strOsNames%>
</DIV>
<%for(int i=0;i<aryOsValues.length;i++){%>
 <INPUT TYPE="hidden" NAME="os" VALUE="<%=aryOsValues[i]%>">
<%}%>
<DIV CLASS="section">
<B>ご意見・ご感想:</B><BR>
<%=strRemark.replaceAll("<","<").replaceAll(">",">").replaceAll("¥n","<BR>")%>
</DIV>
<INPUT TYPE="hidden" NAME="remark" VALUE="<%=strRemark%>">
<INPUT TYPE="submit" VALUE="送信">
<INPUT TYPE="button" VALUE="戻る" ONCLICK="history.back()">
</FORM>
</DIV>
</BODY></HTML>



↓↓↓解説↓↓↓
1.あらかじめ番号に対応する文字列を配列に格納
2.パラメータを取得(request.getParameter)
3.取得したパラメータを整数に変換する(Integer.parseInt)
4.3.で得られた整数をインデックスとして使い、配列から文字列を取り出す。

▼getParameterValuesメソッド
チェックボックスは、複数の項目にチェックがつけられていれば複数の値が送られ、未選択はパラメータ自体が送られてこないので、結果を文字列の配列に格納している。
----------------------------------------

送信済み画面 EnqueteSave.jsp
----------------------------------------
<%@ page contentType="text/html; charset=Windows-31J"%>
<%@ page import="java.util.*,java.io.*"%>
<%
request.setCharacterEncoding("Windows-31J");
String strName=request.getParameter("name");
String strProduct=request.getParameter("product");
String strEval=request.getParameter("eval");
String[] aryOsValues=request.getParameterValues("os");
String strOsTemp = Arrays.toString(aryOsValues);
String strOs = strOsTemp.substring(1,strOsTemp.length()-1);
String strRemark=request.getParameter("remark");
if(strRemark.equals("")){
 strRemark="記入なし";
}else{
 strRemark=strRemark.replaceAll("<","<").replaceAll(">",">")
  .replaceAll("¥r¥n","<BR>");
}
File dataFile = new File(application.getRealPath("/WEB-INF/enquete.txt"));
dataFile.createNewFile();
FileOutputStream fos = new FileOutputStream(dataFile,true);
OutputStreamWriter writer = new OutputStreamWriter(fos,"Windows-31J");
BufferedWriter bw = new BufferedWriter(writer);
bw.write(strName+"¥t"+strProduct+"¥t"+strEval+"¥t"+strOs+"¥t"+strRemark);
bw.newLine();
bw.close();
fos.close();
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
  "http://www.w3.org/TR/html4/strict.dtd">
<HTML><HEAD>
<TITLE>JSPサンプル</TITLE>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=Windows-31J">
<LINK REL="stylesheet" TYPE="text/css" HREF="style.css">
</HEAD><BODY>
<DIV CLASS="page">
 <H1>アンケートを受け付けました</H1>
 <DIV CLASS="section">
  <H2>ご協力ありがとうございました</H2>
 </DIV>
</DIV>
</BODY></HTML>



↓↓↓解説↓↓↓

strRemark.replaceAll("<","<").replaceAll(">",">").replaceAll("¥r¥n","<BR>");
ブラウザ上で表示されない文字を置き換える。第1引数から第2引数に変更("<"→"<")

========================================
クッキー(P.366)
========================================

CookieLoginForm.jsp(P.366)
----------------------------------------
<%@ page contentType="text/html; charset=Windows-31J"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
  "http://www.w3.org/TR/html4/strict.dtd">
<HTML><HEAD>
<TITLE>JSPサンプル</TITLE>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=Windows-31J">
<LINK REL="stylesheet" TYPE="text/css" HREF="style.css">
</HEAD><BODY>
<DIV CLASS="page">
<H1>ログイン</H1>
<FORM ACTION="CookieLoginProcess.jsp" METHOD="post">
<DIV CLASS="section">
<TABLE>
<TR><TD>ユーザ名</TD><TD><INPUT TYPE="text" NAME="user"></TD></TR>
<TR><TD>パスワード</TD><TD><INPUT TYPE="password" NAME="password"></TD></TR>
</TABLE>
<INPUT TYPE="checkbox" NAME="use_cookie">次回から自動ログインする
</DIV>
<INPUT TYPE="submit" VALUE="送信">
</FORM>
</DIV>
</BODY></HTML>







CookieLoginProcess.jsp(P.368)
----------------------------------------
<%@ page contentType="text/html; charset=Windows-31J"%>
<%@ page import="java.util.*,java.io.*"%>
<%
String strUser=request.getParameter("user");
String strPassword=request.getParameter("password");
String strUseCookie=request.getParameter("use_cookie");

File file = new File(application.getRealPath("/WEB-INF/user.txt"));
FileInputStream fis = new FileInputStream(file);
InputStreamReader reader = new InputStreamReader(fis,"Shift_JIS");
BufferedReader br = new BufferedReader(reader);
String strLine;
String strRealName="";
int intUserId=0;
String strAutoLoginKey="";
boolean blResult=false;

while((strLine = br.readLine())!=null){
 if(strLine.charAt(0)!='#'){
  String[] aryUser = strLine.split(",");
  
  if(aryUser[1].equals(strUser)
   && aryUser[2].equals(strPassword)){
   intUserId=Integer.parseInt(aryUser[0]);
   strRealName=aryUser[3];
   strAutoLoginKey=aryUser[4];
   blResult=true;
   break;
  }
 }
}
br.close();
fis.close();
if(strUseCookie!=null&&blResult){
 Cookie cooAutoLoginKey = new Cookie("auto",strAutoLoginKey);
 cooAutoLoginKey.setMaxAge(60*60*24*30);
 response.addCookie(cooAutoLoginKey);
}else{
 Cookie cooAutoLoginKey = new Cookie("auto","");
 cooAutoLoginKey.setMaxAge(0);
 response.addCookie(cooAutoLoginKey);
}
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
  "http://www.w3.org/TR/html4/strict.dtd">
<HTML><HEAD>
<TITLE>JSPサンプル</TITLE>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=Windows-31J">
<LINK REL="stylesheet" TYPE="text/css" HREF="style.css">
</HEAD><BODY>
<DIV CLASS="page">
 <H1>ログイン</H1>
 <DIV CLASS="section">
 <%if(blResult){%>
  こんにちは <%=strRealName%> さん<BR>
  あなたのユーザIDは[ <%=intUserId%> ]です<BR>
  <A HREF="CookieTest.jsp">クッキーのテスト</A>
 <%}else{%>
  ユーザ名またはパスワードが違います。<BR>
  <A HREF="javascript:history.back()">戻る</A>
 <%}%>
 </DIV>
</DIV>
</BODY></HTML>

<img src="http://img-cdn.jg.jugem.jp/473/148474/20061206_223033.GIF" style="float:left;">
<br clear="left">
<img src="http://img-cdn.jg.jugem.jp/473/148474/20061206_223034.GIF" style="float:left;">
<br clear="left">
↓↓↓解説↓↓↓
#id    ,user   ,password   ,氏名  ,Aoutologin_key
 1    ,natsume  ,soseki   ,夏目漱石 ,3A3K5bp86
arryUser[0],arryUser[1],arryUser[2],arryUser[3],arryUser[4]

↓1行が一度に読み込まれる
br.readLine()

1.Cookieクラスのコンストラクタにクッキー名と値を指定してオブジェクト作成。
Cookie クッキー名= new Cookie("変数名",値);

2.クッキーの有効期限を設定
クッキー名.setMaxAge(有効期限 秒単位);
cooAutoLoginKey.setMaxAge(60*60*24*30);←30日間

3.setPathメソッドでクッキーの有効範囲を設定する。(必要に応じ→ログインページがルートフォルダでない場合)
クッキー名.setPath(有効範囲);

4.responseオブジェクトのaddCookieメソッドでクッキーを送信。
response.addCookie(クッキー名);
response.addCookie(cooAutoLoginKey);


CookieLoginTest.jsp(P.370)
----------------------------------------
<%@ page contentType="text/html; charset=Windows-31J"%>
<%
Cookie[] aryCookies = request.getCookies();
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
  "http://www.w3.org/TR/html4/strict.dtd">
<HTML><HEAD>
<TITLE>JSPサンプル</TITLE>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=Windows-31J">
<LINK REL="stylesheet" TYPE="text/css" HREF="style.css">
</HEAD><BODY>
<DIV CLASS="page">
 <H1>クッキーのテスト</H1>
 <DIV CLASS="section">
  <TABLE>
  <%for(int i=0;i<aryCookies.length;i++){%>
   <TR><TD><%=aryCookies[i].getName()%></TD>
   <TD><%=aryCookies[i].getValue()%></TD></TR>
  <%}%>
  </TABLE>
 </DIV>
</DIV>
</BODY></HTML>





| Java(win&Unix:Mac) | 17:32 | comments(0) | trackbacks(0) |  
Java 22日目 memo
========================================
Tomcat カレンダーの表示(P.347)
========================================

.cssファイル
----------------------------------------
BODY{
  background-color:FFFFFF;
  margin:0;
}
H1{
  text-align:center;
  color:#eeffee;
  background-color:#99bb99;
  border-color:#7d9f7d #557755 #557755 #7d9f7d;
  border-width:10px;
  border-style:solid;
  font-family:Arial Black;
  padding:2px 20px 2px 20px;
}
DIV.head{
  text-align:center;
  margin:15px auto 15px auto;
}
SPAN.title{
  color:#EEEEEE;
  background-color:#6699cc;
  border-style:solid;
  border-width:5px;
  border-color:#5588bb #447799 #447799 #5588bb;
  padding:2px 50px 2px 50px;
  font-size:17pt;
}
A{
  text-decoration:none;
  font-size:17pt;
  color:#666666;
  background-color:#CCCCCC;
  border-style:solid;
  border-width:5px;
  border-color:#DDDDDD #BBBBBB #BBBBBB #DDDDDD;
  padding:2px 10px 2px 10px;
}
A:link{
  color:#666666;
}
A:visited{
  color:#666666;
}
A:hover{
  background-color:#BBBBBB;
}
TABLE{
  margin:0px auto 0px auto;
  border-spacing:0px;
}
TH{
  width:70px;
  border-style:solid;
  border-width:8px;
}
TD{
  font-family:Arial Black;
  text-align:left;
  vertical-align:top;
  width:70px;
  height:50px;
  border-style:solid;
  border-width:8px;
}
.holiday{
  color:#AA1111;
  background-color:#DDAAAA;
  border-color:#EEBBBB #BB9999 #BB9999 #EEBBBB;
}
.saturday{
  color:#1122CC;
  background-color:#CCDDFF;
  border-color:#BBCFDF #AABFCF #AABFCF #BBCFDF;
}
.weekday{
  color:#777777;
  background-color:#F8F8F8;
  border-color:#FFFFFF #DDDDDD #DDDDDD #FFFFFF;
}

----------------------------------------

<%@ page contentType="text/html; charset=Windows-31J"%>
<%@ page import="java.util.*"%>

<%
Calendar cal = Calendar.getInstance();
int intYear=cal.get(Calendar.YEAR);
int intMonth=cal.get(Calendar.MONTH)+1;
cal.set(Calendar.DATE,1);
int k=cal.get(Calendar.DAY_OF_WEEK)-1;
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
  "http://www.w3.org/TR/html4/strict.dtd">
<HTML><HEAD>
<TITLE>JSPサンプル</TITLE>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=Windows-31J">
<LINK REL="stylesheet" TYPE="text/css" HREF="style.css">
</HEAD><BODY>
<H1>CALENDAR</H1>
<DIV CLASS="head">
<SPAN CLASS="title"><%=intYear%>年<%=intMonth%>月</span>
</DIV>
<TABLE>
<TR><TH CLASS="holiday">日</TH><TH CLASS="weekday">月</TH>
<TH CLASS="weekday">火</TH><TH CLASS="weekday">水</TH><TH CLASS="weekday">木</TH>
<TH CLASS="weekday">金</TH><TH CLASS="saturday">土</TH></TR>
<%
int d=1;
while(cal.get(Calendar.MONTH)==intMonth-1){%>
 <TR>
 <%for(int j=0;j<7;j++){%>
  <%if(j==0){%>
   <TD CLASS="holiday">
  <%}else if(j==6){%>
   <TD CLASS="saturday">
  <%}else{%>
   <TD CLASS="weekday">
  <%}%>
  <%if(k!=0){
   k--;
  }else if(cal.get(Calendar.MONTH)==intMonth-1){%>
   <%=d++%>
  <%
   cal.add(Calendar.DATE,1);
  }%>
  </TD>
 <%}%>
 </TR>
<%}%>
</TABLE>
</BODY></HTML>




↓↓↓解説↓↓↓
<%=と%>で表す式を囲むことにより、その値を表示することができる。

<%@ page import="java.util.*"%>
java.utilパッケージのCalendarクラスを使用する宣言

▼Calendar.getInstance()
Calendarクラスはabstractクラスのため、直接new演算子でオブジェクトを作成することは出来ないが、getInstanceメソッドを使うことでオブジェクト作成することが出来るようになっている。デフォルトのタイムゾーンとロケールを使用してカレンダを取得。返された Calendar は、デフォルトロケールを持つデフォルトタイムゾーンの現在時刻に基づく。
▼get(Calendar.YEAR)
日時の「年」に関する値を変数intYearに取得

▼get(Calendar.MONTH)+1
日時の「月」に関する値を変数intMonthに取得。MONTHに関しては最初の値(つまり1月)は「0」から開始されるので、+1が設定される。

▼cal.set(Calendar.DATE,1)
Calendarクラスのオブジェクトが持っている日時に関する値を変更。メソッドは、カレンダーフィールドを指定して、そのフィールドに対する値を設定

▼get(Calendar.DAY_OF_WEEK)-1
その週の何日目かを示す。このフィールドの値は1から7で、SUNDAY(1)からはじまる。-1で、処理時、SUNDAYが[0]となる。





========================================
Tomcat パラメータの受け渡し(P.352)
========================================

.cssファイルは前項と同じ
----------------------------------------
<%@ page contentType="text/html; charset=Windows-31J"%>
<%@ page import="java.util.*"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
  "http://www.w3.org/TR/html4/strict.dtd">
 
<HTML>
 <HEAD>
  <TITLE>JSPサンプル</TITLE>
  <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=Windows-31J">
  <LINK REL="stylesheet" TYPE="text/css" HREF="style.css">
 </HEAD>
 
<BODY>

<%
Calendar cal = Calendar.getInstance();

String strYear=request.getParameter("year");
String strMonth=request.getParameter("month");

int intYear;
int intMonth;

if(strYear!=null && strMonth!=null){
 int intMonthTemp=Integer.parseInt(strMonth);
 intMonth=intMonthTemp%12;
 intYear=Integer.parseInt(strYear)+intMonthTemp/12;
 if(intMonth==0){
  intMonth=12;
  intYear--;
 }
 cal.set(Calendar.YEAR,intYear);
 cal.set(Calendar.MONTH,intMonth-1);
}
intYear=cal.get(Calendar.YEAR);
intMonth=cal.get(Calendar.MONTH)+1;
cal.set(Calendar.DATE,1);
int k=cal.get(Calendar.DAY_OF_WEEK)-1;
%>

<H1>CALENDAR</H1>
<DIV CLASS="head">
<A HREF="ShowCalendar2.jsp?year=<%=intYear%>&month=<%=intMonth-1%>">Last</A>
<SPAN CLASS="title"><%=intYear%>年<%=intMonth%>月</span>
<A HREF="ShowCalendar2.jsp?year=<%=intYear%>&month=<%=intMonth+1%>">Next</A>
</DIV>
<TABLE>
<TR><TH CLASS="holiday">日</TH><TH CLASS="weekday">月</TH>
<TH CLASS="weekday">火</TH><TH CLASS="weekday">水</TH><TH CLASS="weekday">木</TH>
<TH CLASS="weekday">金</TH><TH CLASS="saturday">土</TH></TR>
<%
int d=1;
while(cal.get(Calendar.MONTH)==intMonth-1){%>
 <TR>
 <%for(int j=0;j<7;j++){%>
  <%if(j==0){%>
   <TD CLASS="holiday">
  <%}else if(j==6){%>
   <TD CLASS="saturday">
  <%}else{%>
   <TD CLASS="weekday">
  <%}%>
  <%if(k!=0){
   k--;
  }else if(cal.get(Calendar.MONTH)==intMonth-1){%>
   <%=d++%>
  <%
   cal.add(Calendar.DATE,1);
  }%>
  </TD>
 <%}%>
 </TR>
<%}%>
</TABLE>
</BODY></HTML>




↓↓↓解説↓↓↓




----------------------------------------
ブラウザのアドレスにパラメータを持たせる。
String strYear=request.getParameter("year");
String strMonth=request.getParameter("month");
  ↓
 URLを表示
http://localhost/jamyto/ShowCalendar2.jsp
「Last」をクリック(前月を表示)
http://localhost/jamyto/ShowCalendar2.jsp?year=2006&month=11
「NEXT」をクリック(当月に戻るがパラメータを持っている)
http://localhost/jamyto/ShowCalendar2.jsp?year=2006&month=12
「NEXT」をクリック(1月を表示、パラメータは13?)
http://localhost/jamyto/ShowCalendar2.jsp?year=2006&month=13
「NEXT」をクリック(2月を表示)
http://localhost/jamyto/ShowCalendar2.jsp?year=2007&month=2

パラメータがなければnullが設定される
strYear   strMonth
 null    null
----------------------------------------
if(strYear!=null && strMonth!=null){
 int intMonthTemp=Integer.parseInt(strMonth);
 intMonth=intMonthTemp%12;
 
 intYear=Integer.parseInt(strYear)+intMonthTemp/12;
  ↓
 12月を越える場合、12で割った値1を+してintYearに代入
 
 if(intMonth==0){ 
  intMonth=12;
  intYear--;
 }
 
 cal.set(Calendar.YEAR,intYear);
 cal.set(Calendar.MONTH,intMonth-1);
  ↓
 intYearはそのまま、intMonth-1
}
intYear=cal.get(Calendar.YEAR);
intMonth=cal.get(Calendar.MONTH)+1;
  ↓
 YEARはそのまま、MONTHは+1
| Java(win&Unix:Mac) | 18:58 | comments(0) | trackbacks(0) |  
Java 21日目 memo
========================================
TOMCAT(P.333〜341)
インストールと設定は省略
アプリケーションフォルダの設定
========================================
Apache Tomcat5.5 → JRE1.5.0 or Later
使用していたJava1.4.? → JRE1.4.xでは動かない
----------------------------------------
動作確認
コントロールパネル>管理ツール>サービス



右クリックでプロパティを開き、



http://localhost/で、以下画面がでれば正しく動作している。




----------------------------------------
Tomcatとは、
Apache software Foundation(ASF)によってオープンソース方式で開発されているサーブレットコンテナ。




----------------------------------------
アプリケーションフォルダの設定
デフォルトでは、
C:¥Program Files¥Apache Software Foundation¥Tomcat 5.5¥conf¥Catalina¥localhost
の位置に、以下の設定ファイルを作る
c:¥jamyto¥JSPが、jamytoのアプリケーションフォルダとなり、
http://localhost/jamyto/でアクセス可能になる。
jamyto.xml------------------------------
<?xml version='1.0' encoding='utf-8'?>
<Context docBase="C:¥jamyto¥JSP" path="/jamyto"/>
----------------------------------------

========================================
HTMLファイルへの組み込み(P.346)
========================================
<%@ page contentType="text/html; charset=Windows-31J"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
  "http://www.w3.org/TR/html4/strict.dtd">
<HTML><HEAD>
<TITLE>JSPサンプル</TITLE>
<META http-equiv="content-type" content="text/html; charset=Windows-31J">
<STYLE TYPE="text/css">
TABLE{
 border-collapse:collapse;
}
TD{
 width:80px;
 text-align:center;
 border-style:solid;
 border-width:1px;
}
</STYLE>
</HEAD><BODY>
<TABLE>
<%for(int i=1;i<=9;i++){%>
 <TR>
 <%for(int j=1;j<=9;j++){%>
  <TD><%=i*j%></TD>
 <%}%>
 </TR>
<%}%>
</TABLE>
</BODY></HTML>





HTMLの組み込みは22日目に移行
| Java(win&Unix:Mac) | 17:56 | comments(0) | trackbacks(0) |  
Java 20日目 memo
========================================
XML DOM
========================================
XML文書をプログラミング言語で扱うには、XMLパーサのAPIを利用する。これには、DOM(ドム)とSAX(サックス)がある。処理の手順に違いがあり、目的によって使い分ける必要がある。

▼DOMの仕組み(Document Object Model)
XMLパーサがXML文書の中のデータをすべて読み込み、それをもとに「DOMツリー」をメモリ上に生成し、DOMでは、これに対して操作を行う。要素を参照したり、追加、削除してツリー構造を変更することができる。
メモリ上にすべてのデータを展開するため、データが巨大な場合は、それに応じたメモリの容量が必要になる。



----------------------------------------




<機材>

 <機材データ>
  1004
  <名前>TELECASTER
  <種類>GUITER
  <メーカー>FENDER JAPAN
  <材質>アッシュ
  <購入年>2002
  <備考>
 
 
 <機材データ>
  1005
  <名前>SG-jr
  <種類>GUITER
  <メーカー>GIBSON
  <材質>マホガニー
  <購入年>2005
  <備考>ロック式ペグ、アーム搭載
 



----------------------------------------

import java.io.*;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import javax.xml.parsers.*;

public class NodeSample {
 public static void main(String args[]) throws Exception {
 
  Document document = DocumentBuilderFactory
   .newInstance()
   .newDocumentBuilder()
   .parse(new File("FUKUDA_DATA2.xml"));
   
  Node node=document.getDocumentElement();
  System.out.println("ルート要素名は" + node.getNodeName() + "です。");

  Node node2 = node.getFirstChild();
  Node node3 = node2.getNextSibling();
  
  Node childNode=node3.getFirstChild();
  
  int i =1;
  
  while(childNode != null) {
   short type = childNode.getNodeType();
   String typeStr="";
   
   switch( type){
   
   case Node.ATTRIBUTE_NODE:
    typeStr +="属性";
    break;
   case Node.CDATA_SECTION_NODE:
    typeStr +="CDATAセクション";
    break;
   case Node.COMMENT_NODE:
    typeStr +="コメント";
    break;
   case Node.DOCUMENT_FRAGMENT_NODE:
    typeStr +="最小の文書のオブジェクト";
    break;
   case Node.DOCUMENT_NODE:
    typeStr +="文書";
    break;
   case Node.DOCUMENT_TYPE_NODE:
    typeStr +="文書型";
    break;
   case Node.ELEMENT_NODE:
    typeStr +="要素";
    System.out.println("要素名は" + childNode.getNodeName() + "です。");
    break;
   case Node.ENTITY_NODE:
    typeStr +="実体";
    break;
   case Node.ENTITY_REFERENCE_NODE:
    typeStr +="実体参照";
    break;
   case Node.NOTATION_NODE:
    typeStr +="記法";
    break;
   case Node.PROCESSING_INSTRUCTION_NODE:
    typeStr +="処理命令";
    break;
    
   //改行はここを見る
   case Node.TEXT_NODE:
    typeStr +="テキスト";
    break;
   }
   
   System.out.println((i++) + "番目の子ノードは" + typeStr + "です。");
   childNode = childNode.getNextSibling();
  }
 }
}


----------------------------------------



↓↓↓解説↓↓↓




========================================
XML DOM 2
========================================
ループを使わないで、
↓ルート
↓機材データ
↓メーカー名
を表示する。
----------------------------------------
public class NodeSample2 {
 public static void main(String args[]) throws Exception {
 
  Document document = DocumentBuilderFactory
   .newInstance()
   .newDocumentBuilder()
   .parse(new File("FUKUDA_DATA2.xml"));
   
  Node node=document.getDocumentElement();
  System.out.println("ルート要素名は" + node.getNodeName() + "です。");

  Node node2 = node.getFirstChild();  //(移動)
  Node node3 = node2.getNextSibling(); //機材データ
  
  Node childNode=node3.getFirstChild(); //(移動)
  Node node4 = childNode.getNextSibling(); //ID
  Node node5 = node4.getNextSibling();  //(改行)
  Node node6 = node5.getNextSibling();  //名前
  Node node7 = node6.getNextSibling();  //(改行)
  Node node8 = node7.getNextSibling();  //種類
  Node node9 = node8.getNextSibling();  //(改行)
  Node node10 = node9.getNextSibling();  //メーカー
  
  System.out.println(" " + node10.getNodeName() + "です。");
 }
}

----------------------------------------




↓↓↓解説↓↓↓
コード内のコメントアウト参照

========================================
XML DOM 3
========================================
ループを使わないで、
↓ルート
↓機材データ
↓材質名とそのデータ
を表示する。
----------------------------------------
import java.io.*;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import javax.xml.parsers.*;

public class NodeSample3 {
 public static void main(String args[]) throws Exception {
 
  Document document = DocumentBuilderFactory
   .newInstance()
   .newDocumentBuilder()
   .parse(new File("FUKUDA_DATA2.xml"));
   
  Node node=document.getDocumentElement();
  System.out.println("ルート要素名は" + node.getNodeName() + "です。");

  Node node2 = node.getFirstChild();  //(移動)
  Node node3 = node2.getNextSibling(); //機材データ
  
  Node childNode=node3.getFirstChild(); //(移動)
  Node node4 = childNode.getNextSibling(); //ID
  Node node5 = node4.getNextSibling();  //(改行)
  Node node6 = node5.getNextSibling();  //名前
  Node node7 = node6.getNextSibling();  //(改行)
  Node node8 = node7.getNextSibling();  //種類
  Node node9 = node8.getNextSibling();  //(改行)
  Node node10 = node9.getNextSibling();  //メーカー
  Node node11 = node10.getNextSibling();  //(改行)
  Node node12 = node11.getNextSibling();  //材質
  
  System.out.println( node3.getNodeName() + "です。");
  
  //ノード(材質)の値をnode12.getFirstChild().getNodeValue()で取得
  System.out.println( node12.getNodeName() + "は" + node12.getFirstChild().getNodeValue() + "です");
 }
}
----------------------------------------




↓↓↓解説↓↓↓
コード内のコメントアウト参照

========================================
XML DOM 4
========================================
ループを使って、
全タグ名と内容データ
を表示する。
----------------------------------------
| Java(win&Unix:Mac) | 17:11 | comments(0) | trackbacks(0) |  
Java 19日目 memo
========================================
イベントリスナ(P.447)
addMouseListener()メソッド
========================================
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;


/*
 <applet code = "MouseEvents" width = 300 height=300>
 </applet>
*/


public class MouseEvents extends Applet
implements MouseListener{

 //スタート→addMouseListener
 public void init(){
  addMouseListener(this);
 }
 
 //クリックするとブルーになる
 public void mouseClicked(MouseEvent me){
  setBackground(Color.blue);
  repaint();
 }

 //アプレットビューア上にポインタが乗るとグリーン
 public void mouseEntered(MouseEvent me){
  setBackground(Color.green);
  repaint();
 }
 
 //アプレットビューアからポインタが出るとレッド
 public void mouseExited(MouseEvent me){
  setBackground(Color.red);
  repaint();
 }

 //マウスをクリックしたままの状態はホワイト
 public void mousePressed(MouseEvent me){
  setBackground(Color.white);
  repaint();
 }

 //マウスのクリックを外した時にイエロー
 public void mouseReleased(MouseEvent me){
  setBackground(Color.yellow);
  repaint();
 }
}

----------------------------------------





↓↓↓解説↓↓↓
addMouseListenerインターフェイスは、マウスイベントを受け取るメソッドを定義する。
・void mouseClicked()
・void mouseEntered()
・void mouseExited()
・void mousePreseed()
・void mouseReleased()

========================================
イベントリスナ(P.449)
addMouseMotionListener()メソッド
========================================
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;


/*
 <applet code = "MouseMotionEvents" width = 300 height=300>
 </applet>
*/


public class MouseMotionEvents extends Applet
implements MouseListener,MouseMotionListener{

 Point p;
 
 public void init(){
  addMouseListener(this);
  addMouseMotionListener(this);
 }
 
 public void mouseClicked(MouseEvent me){
 }

 public void mouseEntered(MouseEvent me){
 }
 
 public void mouseExited(MouseEvent me){
 }

 //クリック時、getPoint()で座標を取り、pに代入し、repaint()
 public void mousePressed(MouseEvent me){
  p = me.getPoint();
  repaint();
 }

 //null(無し)を、pに代入し、repaint()
 public void mouseReleased(MouseEvent me){
  p = null;
  repaint();
 }

 //ドラック時、getPoint()で座標を取り、pに代入し、repaint()
 public void mouseDragged(MouseEvent me){
  p = me.getPoint();
  repaint();
 }

 public void mouseMoved(MouseEvent me){
 }

 public void paint(Graphics g){
 
  //pがnull以外の時、
  if (p != null) {    
   Dimension d = getSize(); //アプレットのサイズをget
   int xc =d.width / 2;  //幅サイズ÷2=横の中心
   int yc = d.height / 2;  //高サイズ÷2=縦の中心
   
   //中心点から、マウスの位置までの直線を描く
   g.drawLine(xc, yc, p.x, p.y);
  }
 }
}

----------------------------------------







↓↓↓解説↓↓↓
アプレットタグについて・・・
javacは、アプレットタグを認識できないので、
コメントアウトしておかなければエラーになる。
appletviewerはアプレットタグのみを見る。

addMouseMotionListenerインターフェイスは、マウスイベントを受け取るメソッドを定義する。
・void mouseDragged()
・void mouseMoved()

MouseListenerの中での定義がアブストラクトされている
addMouseMotionListenerの中での定義がアブストラクトされている。
作業のないマウスイベントでも書かなければならない。

repaint()
paintメソッドを動かすメソッド

========================================
ボタン(P.470)
========================================
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;


/*
 <applet code = "ButtonEvents" width = 400 height=60>
 </applet>
*/


public class ButtonEvents extends Applet
implements ActionListener{

 Label label;
 
 public void init(){
  Button b1 = new Button("Apple");
  b1.addActionListener(this);
  add(b1);
  
  Button b2 = new Button("Banana");
  b2.addActionListener(this);
  add(b2);
  
  Button b3 = new Button("Orange");
  b3.addActionListener(this);
  add(b3);
  
  label = new Label("        ");
  add(label);
 }
 
 public void actionPerformed(ActionEvent ae){
  label.setText(ae.getActionCommand());
 }
}

----------------------------------------







↓↓↓解説↓↓↓
| Java(win&Unix:Mac) | 13:31 | comments(0) | trackbacks(0) |  
| 1/6pages | >>