2010年8月31日火曜日

JFreeChartにapplication.getRealPath("")を渡す方法

page5.jspでグラフクラスを呼び出す
//==========================================================================================
//¥(円マーク)を¥¥(円円)に置き換える
BarChart2 chart = new BarChart2(application.getRealPath("").replace("\\", "\\\\"));
chart.setAppPath(application.getRealPath("").replace("\\", "\\\\"));
chart.setGraphData(gb1.graphData);
chart.DrawGraph();
//==========================================================================================



//==========================================================================================
//グラフ作成クラス本体
//==========================================================================================
package chart;

import java.awt.*;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
import java.io.*;
import java.nio.channels.FileChannel;
import javax.imageio.ImageIO;

import org.jfree.chart.*;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.servlet.ServletUtilities;
//import org.jfree.chart.title.*;
import org.jfree.data.category.DefaultCategoryDataset;

/**
* 棒グラフのサンプル
*/
public class BarChart2 {
String x;
String appPath;
//データ作成
public String[][] graphData;

public static void main(String[] args) {
//new BarChart2();
}

public BarChart2(String aPath){
appPath = aPath;
}

public void DrawGraph(){
// 表示するデータの作成
String series1 = "第一";
String series2 = "第二";
String series3 = "第三";
// カテゴリーの設定
String category1 = "カテゴリー 1";
String category2 = "カテゴリー 2";
String category3 = "カテゴリー 3";

//レガシーテーマを設定する
ChartFactory.setChartTheme(StandardChartTheme.createLegacyTheme());

DefaultCategoryDataset dataset = new DefaultCategoryDataset();
for(int i=0;i<31;i++){
if((!graphData[0][i].equals("")) && (!graphData[1][i].equals(""))){
dataset.addValue(Integer.parseInt(graphData[0][i]), graphData[1][i], category1);
}
}
// JFreeChartオブジェクトの生成(タイトル、項目名など)
JFreeChart chart = ChartFactory.createBarChart("日付別売上状況",
null, ".", dataset, PlotOrientation.VERTICAL, true, true, false);


try {
x = ServletUtilities.saveChartAsJPEG(chart, 500, 500,null);
String sFile = System.getProperty("java.io.tmpdir") + "\\" + x;
String dFile = this.appPath + "\\" + x;
copyTransfer(sFile,dFile);
} catch (Exception e) {
//e.printStackTrace();
}
}

public void setGraphData(String[][] values){
graphData = new String[100][100];
graphData = values;
}

public String getName(){
return x;
}

public void setAppPath(String value_path){
this.appPath = value_path;
}

/**
* コピー元のパス[srcPath]から、コピー先のパス[destPath]へ
* ファイルのコピーを行います。
* コピー処理にはFileChannel#transferToメソッドを利用します。
* 尚、コピー処理終了後、入力・出力のチャネルをクローズします。
* @param srcPath コピー元のパス
* @param destPath コピー先のパス
* @throws IOException 何らかの入出力処理例外が発生した場合
*/
public static void copyTransfer(String srcPath, String destPath)
throws IOException {

FileChannel srcChannel = new
FileInputStream(srcPath).getChannel();
FileChannel destChannel = new
FileOutputStream(destPath).getChannel();
try {
srcChannel.transferTo(0, srcChannel.size(), destChannel);
} finally {
srcChannel.close();
destChannel.close();
}

}


public BarChart2(){
// 表示するデータの作成
String series1 = "第一";
String series2 = "第二";
String series3 = "第三";
// カテゴリーの設定
String category1 = "カテゴリー 1";
String category2 = "カテゴリー 2";
String category3 = "カテゴリー 3";
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(1.0, series1, category1);
dataset.addValue(4.0, series1, category2);
dataset.addValue(5.0, series1, category3);

dataset.addValue(5.0, series2, category1);
dataset.addValue(7.0, series2, category2);
dataset.addValue(7.0, series2, category3);

dataset.addValue(6.0, series3, category1);
dataset.addValue(8.0, series3, category2);
dataset.addValue(8.0, series3, category3);

// JFreeChartオブジェクトの生成(タイトル、項目名など)
JFreeChart chart = ChartFactory.createBarChart("棒グラフのサンプル",
null, "値", dataset, PlotOrientation.VERTICAL, true, true, false);



FileOutputStream jpg = null;


try {
//x = ".\\test.jpg";
//jpg = new FileOutputStream(x);
x = ServletUtilities.saveChartAsJPEG(chart, 500, 500,null);
String sFile = System.getProperty("java.io.tmpdir") + "\\" + x;
String dFile = this.appPath + "\\" + x;
copyTransfer(sFile,dFile);
//dFile = "C:\\MyWork\\pgUriage011\\Upp011\\build\\web" + "\\" + x;
//copyTransfer(sFile,dFile);
//dFile = "C:\\MyWork\\pgUriage011\\Upp011\\web" + "\\" + x;
//copyTransfer(sFile,dFile);
//ChartUtilities.writeChartAsJPEG(jpg,chart, 500, 500,null);
} catch (Exception e) {
//e.printStackTrace();
}
// グラフの出力(png,jpgで出力できます)
//File outputFile = new File("e:/temp/SampleBarChart.png");
//try {
// ChartUtilities.saveChartAsPNG(outputFile, chart, 500, 500);
//} catch (IOException ioEx) {
// //ioEx.printStackTrace();
//}
// バイナリ出力ストリームにJPEG形式で画像を出力
}
}

2010年8月30日月曜日

JFreeChart一般概論 ファイル保存

JFreeChartと格闘中ですが以下の3つの操作で表示させます。

JSP側の処理
⇒application.getRealPath()によりWEB-INFのパスをドライブからのパスに変換する
(例 mychart.setRealPath(application.getRealPath);)                                  //build/web

JavaBeans側の処理
⇒tempにコピーされた*****.jpgを以下のコピー関数でJSPカレントフォルダへコピー
(例 copyTransfer(tempFolder, realPath);)

JSP側でカレントフォルダの画像を見に行く

/**
* コピー元のパス[srcPath]から、コピー先のパス[destPath]へ
* ファイルのコピーを行います。
* コピー処理にはFileChannel#transferToメソッドを利用します。
* 尚、コピー処理終了後、入力・出力のチャネルをクローズします。
* @param srcPath コピー元のパス
* @param destPath コピー先のパス
* @throws IOException 何らかの入出力処理例外が発生した場合
*/
public static void copyTransfer(String srcPath, String destPath)
throws IOException {

FileChannel srcChannel = new
FileInputStream(srcPath).getChannel();
FileChannel destChannel = new
FileOutputStream(destPath).getChannel();
try {
srcChannel.transferTo(0, srcChannel.size(), destChannel);
} finally {
srcChannel.close();
destChannel.close();
}

}

JSP/Servletでグラフを描画『jfreechart』

JSP/Servletでグラフを描画『jfreechart』

WEB上にあるサンプルどおりに作成したら、
グラフは作成できたもののTmcat5\tempフォルダに出力されてしまうため
JSPから表示できませんでした。

そこで暫定的に以下の方法で逃げることに
1、ファイルをjsp/imgフォルダにコピー
2、JSPからimgにコピーしたファイルを表示させる

とりあえず動きますがコピー処理が無駄ですね
直接出力フォルダの設定はできないものか・・・・

グラフ画像コピー関数(参考)
/**
* コピー元のパス[srcPath]から、コピー先のパス[destPath]へ
* ファイルのコピーを行います。
* コピー処理にはFileChannel#transferToメソッドを利用します。
* 尚、コピー処理終了後、入力・出力のチャネルをクローズします。
* @param srcPath コピー元のパス
* @param destPath コピー先のパス
* @throws IOException 何らかの入出力処理例外が発生した場合
*/
public static void copyTransfer(String srcPath, String destPath)
throws IOException {

FileChannel srcChannel = new
FileInputStream(srcPath).getChannel();
FileChannel destChannel = new
FileOutputStream(destPath).getChannel();
try {
srcChannel.transferTo(0, srcChannel.size(), destChannel);
} finally {
srcChannel.close();
destChannel.close();
}

}

2010年8月27日金曜日

属性valueはどんな式も受け付けません

タグライブラリの<c:out value="${data}"></c:out>などのように
valueに式を入れたい時に、
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core"%>
を使用すると「」

属性valueはどんな式も受け付けません
according to tld or attribute directive in tag file, attribute value does not accept any expressions

【原因】
タグライブラリが古い

【解決方法】
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
まず上のタグに変更します。(uriが多少異なります)

すると
the absolute uri: http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml or the jar files deployed with this application
な感じのエラーが発生するので
最新のタグライブラリの
jstl.jar
standard.jar
をプロジェクトのライブラリに追加しておきます。

javax.servlet.ServletException: org.postgresql.Driver 解決方法

javax.servlet.ServletException: org.postgresql.Driver
というエラーが発生したらpostgreSQLのDriverにパスが通っていないのが原因です。
pg73jdbc3.jarをライブラリに追加すればOKです。

JSP/ServletでCONTEXT-PARAM(コンテキスト-パラメータ)を使用

JSP/ServletでCONTEXT-PARAM(コンテキスト-パラメータ)を使用する方法です。

web.xmlの<web-app>内に以下を記述
<!-- -->
<context-param>
<param-name>dbdriver</param-name>
<param-value>org.postgresql.Driver</param-value>
</context-param> <context-param>
<param-name>dburl</param-name>
<param-value>jdbc:postgresql://localhost:5432/dbsv</param-value>
</context-param> <context-param>
<param-name>dbuser</param-name>
<param-value>postgres</param-value>
</context-param> <context-param>
<param-name>dbpassword</param-name>
<param-value>zxcvvcxz</param-value>
</context-param>
<!-- -->

値の取得はJSPファイルまたはサーブレット内で
application.getInitParameter("dbdriver");
application.getInitParameter("dburl");
application.getInitParameter("dbuser");
application.getInitParameter("dbpassword");

2010年8月26日木曜日

自宅サーバ公開方法(Tomcat:8080)

自宅サーバ公開方法

今回の接続方法
■パソコン=ルータ(モデム)=外部■

上記の接続でいきたいと思います。

つまり自宅のパソコンをWEBサーバにして、
ルータのポートを開放するという方法で行きます。

【手順】
1、パソコンにWEBサーバソフトをインストール
今回はTomcatにします。(本来はApacheサーバが良い)
8080ポートを開放します。(詳しい方は80ポートを開放してください)
2、ルータの8080(80)ポートを開放します。

以上で設定は完了です。簡単ですね。


実際に動かすのはHTMLソースにします。
後日JSP/Servletへ移行します。

2010年8月25日水曜日

keiba

私の必勝法の基本的考え方

1)競馬もギャンブルなので、絶対という事ははあり得ません。
  つまり、私の必勝法でも100%はありません。
 
2)具体的には、96年上半期(1月ー6月)中央競馬は、各地で144日
  開催されましたが、全ての日に馬券を購入したとして、
  負けるのは5日だけです、残りの139日は全て勝ちます。 
  つまり、私の必勝法の勝率は96.5%です。
  「私は、自分の必勝法を94年位にほぼ完成させました、95年より
  実際に試してみて、これはいけると確信いたしました。」
 
3)私の必勝法は、1万円が当日に20万円や30万円になるものでは
  ありませんしかし、馬券購入当日は確実に勝ちます(96.5%)。
  現実的には、1ヶ月(8日間)で8万円から20万円位のプラス
  と考えて下さい。
 
4)競馬をやっている人は感じないと思いますが、
ゴールの瞬間の鼻差や首差のVIDEOを見て、
こんなのが当てられるハズがないと、
  普通の人は感じます。
  事実、皆様の廻りで1ヶ月(8日間)全日馬券を購入して、全日プラス
  の人はいないと思います。
  つまり、これは、基本的考え方に間違いがあると思われます。
 
5)パチンコのプロはいますが、競馬のプロはいません。
  これは、騎手・血統・馬場状況・距離などを基にした従来の方法に、
  大きな問題があると思われます。
                 
6)皆様の中には、パチンコをしている人もいらっしゃるでしょう。
 パチンコをしている人は、
 パチンコの必勝法をほとんどの人が知っています。
 つまり、 パチンコで勝つためには、
 朝1からパチンコをしなくてはなりません。
 夕方、会社が終わって6時頃から2-4時間打って毎日勝つ事は
 不可能です。
  たまには勝つかも知れませんが、ほとんど負けます。
  この事を知っているのに、何故皆様は気づかないのでしょう、
そうです! 
  競馬も勝つためには、朝1からしなくてはなりません、
  メインレースだけしていても勝てないのです。
 
7)スポーツ新聞等では、大穴や万馬券をどれだけ当てたかを
大々的に宣伝していますが、万馬券を当てようとして馬券を購入することは、
勝つ確率がかなり低いということです。
  確率が低いのは低いのではなく、負ける事だと気づいて下さい。
  負けるという事は、お金が無くなる事なのです。
  馬券は、宝くじ感覚で買うものではありません。

 ◆競馬が飯より好きな方に一言◆
  再三さいし注意してますが、皆さんは、予想や攻略法を買っても絶対に
  自分の考えや買い目を入れてしまいます、こうすると、その予想や必勝法が
  どの程度有効性のあるモノかが、分からなくなってしまいます、お金を出して
  商品を買ってるのを忘れてはいけません。
  こんな場合は、商品と自分の買い目の2本立てで馬券を買って下さい。
   

*ほとんどの皆様が、給料の他に1ヶ月で5万円から15万円位の
 収入があれば、 生活が大変楽になると思います。
 地道な必勝法ですが、現実的なものを開発いたしました。
 よくお考え下さい。
   ゆとりのある生活・・・  
 
                       

*申し訳ありませんが、無料で提供できる情報は以上です。
  私の必勝法を商品化しましたので、是非購入をお勧めします。

*商品は予想ではありません、必勝本ですので無期限で使えます。

*必勝本販売が本職ではありませんので、下記の価格にしましたが
 価値としては、金額に代えられないものと思います。

 そこで、
1)私の必勝法は、誰でも納得でき女性の方でも安心してご利用頂けます。
2)96年上半期、JRA競馬開催144日の全レースを徹底分析致しました。
3)その上で、負けるのは5日だけと言いきれます。
4)投資金額のガイドラインも参考として提案してあります。
5)膨大なデータを基にある法則を発見し、さらに99%負けないように、
   細かな点までフルサポートした競馬必勝法としての作品です。
6)手前味噌ですが、この作品の8000円は本当に安いと思います。

 さあ、皆様もどうですか、私と同じく仕事を趣味として、
 競馬で生活費を稼ぐ人生の仲間入りをしてみたいと思いませんか。

2010年8月24日火曜日

モバゲーでお小遣い稼ぎ【怪盗ロワイヤル編】

モバゲーを利用してお小遣い稼ぎが出来ることを
皆さんご存知でしょうか、以下の簡単な方法で月数万円程度は稼ぐことが可能です。
是非チャレンジしてみて下さいね

ちなみに出費は一切無いので安心して取り組むことが可能です。

ただし携帯電話のパケホーダイに入っておく事。
今から無職でも自宅に居ながらお金が稼げる方法を説明する。  
難しい事があったら遠慮なく質問してくださいね。

まず、誰もが一度は聞いたことがあるであろう、携帯最大のサイト、モバゲータウンにアクセスする
モバゲータウン
今や2chやミクシィ以上にメジャーになったインターネットコミュニケーションサイト
40代50代のオッサンと小学生女児が出会える、まさに夢のようなサイト 『モバゲータウン
日本最大規模の携帯サイトで、登録ユーザーは今年、男女合わせて1500万人を突破した
“200種類以上のゲームが無料で出来る”ことを歌い文句に宣伝しているが実情は援交や性交渉だらけの合法風俗と化している
全国の小学生~女子高生~OL~熟女 といったあらゆる年代の女を揃えている、まさに奇跡のようなサイト

↓まだ登録してない奴はこちらから登録(完全無料、個人情報いらない、いつでも退会可能)
怪盗ロワイヤル

モバゲータウンを利用した金儲けの方法】

①まずモバゲーを始める(プロフィールは適当で良い)
②モバゲー内にある「怪盗ロワイヤル」というゲームを始める(テレビでもよくCM流れてる)
③怪盗ロワイヤルをやっている人は、全国70万人以上なので、この人口の多さを利用する
④怪盗ロワイヤルは、世界中のお宝を集めるゲームなのだが、お宝を集めるために必要なのが【武器】と【ワナ】
⑤いかに【武器】と【ワナ】を沢山持つかがこのゲームの攻略方法で、みんな必死に【武器】と【ワナ】を求めてる
⑥武器は強さによって値段が変わるのだが、ワナは3個100円で取り引きされている
⑦このワナを使用せず、集めるだけで、金儲けが出来る
⑧ワナを100個集めて取り引きに出せば、一気に3300円以上手に入る
⑨武器と一緒に取り引きすれば1万円以上手に入る
⑩毎日のように武器やワナを集めていけば、1ヶ月で10万円以上の収入が得られる

怪盗ロワイヤル

入金後、落札者様のIDとニックネームをお知らせください。


↓↓

こちらのニックネームをお知らせ後、友達希望いたしますので、申請を許可して下さい。

↓↓

受渡完了しましたら、こちらで仮退会致しますので、落札者様より仲間外しを行ってください。

2010年8月21日土曜日

FireFoxをJavaScripで閉じる方法【window.close()有効化】

ウェブブラウザのFireFoxはJavaScriptからは閉じられないというのが定説ですが、
厳密にいうとこれは間違いです。
FireFoxがJavaScriptのWindow.close()で閉じられないのはセキュリティの設定が
高すぎることに起因しています。

そこでFireFoxをJavaScriptで閉じたいとお考えの方や
プログラム上で悩みを抱えていらっしゃるという方にお勧めしたいのが
ウェブブラウザFireFoxのセキュリティ設定を下げるという方法です。

やり方はいたって簡単で、すでにご存じの方もいらっしゃるとは思いますが、
FireForxのロケーションバーと呼ばれる通常URLを入力する場所に「about:config」と入力してください。
FireFoxの設定画面は特集でURLで移動することになっています。
about:configと入力すると警告メッセージが表示されますが、設定を変更する場合は
「最新の注意を払って使用する」というボタンをクリックしてください。

これはセキュリティ上のトラブルを避けるために表示されるものですが、
特別な操作をする以外の時は特に気にする必要はないと思います。

さて、次に表示される画面で様々な設定項目が表示されていることと思います、
一個一個説明していると時間がとても足りませんので、
ウィンドウを閉じる項目について説明をしたいと思います。

まずフィルタに「close」と入力して閉じる系の設定のみを表示させます。
すると
「allow_scripts_to_close_windows」という文字が含まれた項目が見つかると思います。
(あるいはdom.allow_scripts_to_close_windows)
英語が多少わかる方ならもう大丈夫ですね。
allow:許可する
scripts:スクリプト
close:閉じる
window:ウィンドウ
よってこの値をTrueと設定すればJavaScriptからWindowを閉じることが可能となります。
是非ご利用になられてみてはいかがでしょうか

2010年8月18日水曜日

posgreSQL テーブルサンプル

-- Table: k_kind

-- DROP TABLE k_kind;

CREATE TABLE k_kind
(
"kindID" integer NOT NULL DEFAULT nextval('public."k_kind_kindID_seq"'::text),
"kNO" character(10),
"kindName" character varying(100),
CONSTRAINT kind_key PRIMARY KEY ("kindID")
)
WITHOUT OIDS;
ALTER TABLE k_kind OWNER TO postgres;


-- Table: kokyaku

-- DROP TABLE kokyaku;

CREATE TABLE kokyaku
(
"kID" integer NOT NULL DEFAULT nextval('public."kokyaku_kID_seq"'::text),
"name" character varying(255),
yubin character varying(100),
address character varying(255),
tel character varying(100),
kname character varying(255),
kind character(10),
CONSTRAINT kokyaku_key PRIMARY KEY ("kID")
)
WITHOUT OIDS;
ALTER TABLE kokyaku OWNER TO postgres;

JSPページ処理サンプル

String sql = "";
//ページ始★★★★★★★★★★★★★★★★★★★★★★★★★★
sql = "SELECT count(*) AS cnt FROM kokyaku";
ResultSet rc = dbab.getResultSet(sql);
int recMax = 5;
int cntAll = 0;//総レコード数
while (rc.next()) {
cntAll = rc.getInt("cnt");
}
cntAll += recMax;
int PageCnt = 0;//総ページ数
PageCnt = (cntAll / recMax);
String sNo = request.getParameter("pNo");
sNo = dbab.isNull(sNo, "0");
int PageNo = Integer.parseInt(sNo);
int iStart = recMax * PageNo;
int iEnd = recMax * (PageNo + 1);
/* 使用例 */
//int recCnt = 0;
//データ表示部
//while (rs.next()) {
// if((iStart <= recCnt) && (iEnd > recCnt)){
// }
// recCnt++;
//}
//リンク作成部
//for(int i = 1; i <= PageCnt; i++){ // out.print("" + i + "" + " /");
//}
//ページ終★★★★★★★★★★★★★★★★★★★★★★★★★★

2010年8月17日火曜日

2010年8月16日月曜日

javax.servlet.jsp.JspException: Bean actionform.Page6ActionForm のプロパティ value1 に対するゲッターメソッドがありません【解決方法】

Strutsの開発を行っていると、
javax.servlet.jsp.JspException: Bean actionform.Page6ActionForm のプロパティ p1 に対するゲッターメソッドがありません
というようなエラーが発生することがあります。

エラーメッセージの中に「ActionForm」と「p1に対するゲッターメソッド」という単語とが出ているため、
ActionFormクラスだけをみて解決しようとする方が多いようですが、
意外とJSP側にエラーの原因がある場合があります。

例えばhtml:textタグにvalue値を設定しておかないと発生します。
<html:text property="p1"></html:text>

これを以下のように修正すると発生しなくなります。
<html:text property="p1" value=""></html:text>

2010年8月15日日曜日

室内ゴルフ場【自宅の自室】


そこで自室を改造して室内ゴルフ練習場を作成することに。
とりあえずフルスイングはしないことが前提です、
まずは簡単にネットを天井からぶら下げる方法でいきたいと思います。

発電機を自作してみよう【準備編】

発電機を自作してみようと思い立ったので
とりあえず道具をそろえてみましょう。

1、充電に使用するバッテリー
2、充電を行うチャージコントローラー
3、100V電気を取り出すインバーター

「動力を何にするか」は検討中です。
例)ソーラーパネル、ダイエット器具などなど

部品はすべて格安で揃えないといけないので、
新品で買うわけにはいきません。
時間がかかりますがオークションをメインに集める予定です。

部品がそろい次第、作成に取り掛かります。

人気のわんわん日記: JSP/サーブレットで値の受け渡し【Struts】

人気のわんわん日記: JSP/サーブレットで値の受け渡し【Struts】: "今回はStrutsを利用してJSP/Servletによる値の受け渡し方法を説明します。 page5.jspからpage6.jspへの遷移をStrutsを用いて実施しています。 いつものように最後にstruts-config.xmlの追記を忘れないようにしましょう!! 1、pag..."

JSP/サーブレットで値の受け渡し【Struts】

今回はStrutsを利用してJSP/Servletによる値の受け渡し方法を説明します。
page5.jspからpage6.jspへの遷移をStrutsを用いて実施しています。
いつものように最後にstruts-config.xmlの追記を忘れないようにしましょう!!

1、page5.jspの作成
以前作成したpage5.jspに以下を追記
<html:form action="/page6" method="POST">
<html:text property="value1" name="value1" value=""></html:text>
<html:submit value="送信"></html:submit>
</html:form>

2、page6.jspの作成
ただ値を受け取るだけのページです。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<%= request.getParameter("value1") %>
<h1>page5.jspから送信された値</h1>
</body>
</html>

3、ActionFormクラスの作成
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/


package actionform;


import javax.servlet.http.HttpServletRequest;


import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;


/**
*
* @author x300
*/
public class Page6ActionForm extends org.apache.struts.action.ActionForm {


private String name;


private int number;


/**
* @return
*/
public String getName() {
return name;
}


/**
* @param string
*/
public void setName(String string) {
name = string;
}


/**
* @return
*/
public int getNumber() {
return number;
}


/**
* @param i
*/
public void setNumber(int i) {
number = i;
}


/**
*
*/
public Page6ActionForm() {
super();
// TODO Auto-generated constructor stub
}


/**
* This is the action called from the Struts framework.
* @param mapping The ActionMapping used to select this instance.
* @param request The HTTP Request we are processing.
* @return
*/
public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
ActionErrors errors = new ActionErrors();
if (getName() == null || getName().length() < 1) {
errors.add("name", new ActionMessage("error.name.required"));
// TODO: add 'error.name.required' key to your resources
}
return errors;
}
}

4、Actionクラスの作成
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/


package action;


import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;


/**
*
* @author x300
*/
public class Page6Action extends org.apache.struts.action.Action {


/* forward name="success" path="" */
private static final String SUCCESS = "success";


/**
* This is the action called from the Struts framework.
* @param mapping The ActionMapping used to select this instance.
* @param form The optional ActionForm bean for this request.
* @param request The HTTP Request we are processing.
* @param response The HTTP Response we are processing.
* @throws java.lang.Exception
* @return
*/
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {


return mapping.findForward(SUCCESS);
}
}

5、suturuts-config.xmlに登録
ACTION-MAPPINGタグに追加するもの
<action input="/page6.jsp" name="Page6ActionForm" path="/page6" scope="session" type="action.Page6Action"/>
FORM-BEANSタグに追加するもの
<form-bean name="Page6ActionForm" type="actionform.Page6ActionForm"/>

2010年8月14日土曜日

人気のわんわん日記: JSP/サーブレットでファイルをアップロードするには?

人気のわんわん日記: JSP/サーブレットでファイルをアップロードするには?: "JSP/サーブレットでファイルをアップロードするには、 従来は非常に煩雑なコーディングが必要となっていました。 そこで簡単にできるパッケージとしてJakarta Commons のサブプロジェクトにある upload.zip というjarファイルをlibに登録することで手軽に行う..."

JSP/サーブレットでファイルをアップロードするには?

JSP/サーブレットでファイルをアップロードするには、
従来は非常に煩雑なコーディングが必要となっていました。
そこで簡単にできるパッケージとしてJakarta Commons のサブプロジェクトにある
upload.zip というjarファイルをlibに登録することで手軽に行うことができるようになります。

動きとしてはJSPでファイルを選択してもらい、
サーブレットでWEB-INFのdataフォルダに保存するという処理になります。

1、JSPの作成
<%@ page contentType="text/html;charset=Windows-31J" %>
<html>
<head>
<title>ファイルのアップロード</title>
</head>
<body>
<form method="POST" enctype="multipart/form-data"
action="UploadServlet">
ファイルパス:
<input type="file" name="fl" size="75" />
<input type="submit" value="アップロード" />
</form>
</body>
</html>

2、Servletの作成
package to.msn.wings.javatips;

import java.io.File;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.DiskFileUpload;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;

public class UploadServlet extends HttpServlet {
public void doPost(HttpServletRequest request
, HttpServletResponse response)
throws ServletException, IOException {
String path=getServletContext().getRealPath("WEB-INF/data");
DiskFileUpload objDfu=new DiskFileUpload();
// アップロードファイルの最大サイズ(-1は無限)
objDfu.setSizeMax(-1);
// バッファサイズ
objDfu.setSizeThreshold(1024);
// 一時ファイルの保存先フォルダ
objDfu.setRepositoryPath(path);
// ヘッダの文字エンコーディング
objDfu.setHeaderEncoding("Windows-31J");
try {
// アップロードされたファイル情報を
// FileItemオブジェクトのリストとして取得
List objLst=objDfu.parseRequest(request);
Iterator objItr=objLst.iterator();
// リストから順にファイルデータを取り出し、
// 「/WEB-INF/data/元のファイル名」の形式で
// アップロードファイルを保存
while(objItr.hasNext()){
FileItem objFi=(FileItem)objItr.next();
if(!objFi.isFormField()){
// アップロードファイルの元ファイル名を取得
String strNam=objFi.getName();
if(strNam!=null && !strNam.equals("")){
strNam=(new File(strNam)).getName();
objFi.write(new File(path + "/" + strNam));
}
}
}
} catch (FileUploadException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
// 処理後は元のupload.jspにリダイレクト
response.sendRedirect("upload.jsp");
}

人気のわんわん日記: データベース接続用JavaBeans

人気のわんわん日記: データベース接続用JavaBeans: "最終的にはコネクションをプールするデータソースクラスを目指します。 まずは接続とResultSetの返却用クラスを作成しました。 これを徐々に改良していきJSPからJavaBeansとして利用します。 /* * To change this template, choose ..."

データベース接続用JavaBeans

最終的にはコネクションをプールするデータソースクラスを目指します。

まずは接続とResultSetの返却用クラスを作成しました。
これを徐々に改良していきJSPからJavaBeansとして利用します。

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

package datasource;

import java.sql.*;

public class DBAccessBean {

private String driver;
private String url;
private String user;
private String password;
private Connection connection;
private Statement statement;
private ResultSet resultset;

/**
* コンストラクタ
* @param driver ドライバー
* @param url URL
* @param user ユーザー名
* @param password パスワード
*/
public DBAccessBean(String driver, String url, String user, String password) {
this.driver = driver;
this.url = url;
this.user = user;
this.password = password;
}

/**
* 引数なしのコンストラクタ
* 既定値を使用する
*/
public DBAccessBean() {
driver = "org.postgresql.Driver";
url = "jdbc:postgresql:karte";
user = "postgres";
password = "momoco";
}

/**
* データベースへの接続を行う
*/
public synchronized void open() throws Exception {
Class.forName(driver);
connection = DriverManager.getConnection(url, user, password);
statement = connection.createStatement();
}

/**
* SQL 文を実行した結果の ResultSet を返す
* @param sql SQL 文
*/
public ResultSet getResultSet(String sql) throws Exception {
if ( statement.execute(sql) ) {
return statement.getResultSet();
}
return null;
}

/**
* SQL 文の実行
* @param sql SQL 文
*/
public void execute(String sql) throws Exception {
statement.execute(sql);
}

/**
* データベースへのコネクションのクローズ
*/
public synchronized void close() throws Exception {
if ( resultset != null ) resultset.close();
if ( statement != null ) statement.close();
if ( connection != null ) connection.close();
}
}

人気のわんわん日記: 【基本情報処理試験】アルゴリズムとプログラミング

人気のわんわん日記: 【基本情報処理試験】アルゴリズムとプログラミング: "JavaVMが稼働している環境だけあれば、 WebブラウザやWebサーバーが無くても動作するプログラムはどれか? ア:JavaScript イ:Javaアプリケーション ウ:Javaアプレット エ:Javaサーブレット 【解説】 ア:JavaScriptはJavaという文字が..."

【基本情報処理試験】アルゴリズムとプログラミング

JavaVMが稼働している環境だけあれば、
WebブラウザやWebサーバーが無くても動作するプログラムはどれか?

ア:JavaScript
イ:Javaアプリケーション
ウ:Javaアプレット
エ:Javaサーブレット

【解説】
ア:JavaScriptはJavaという文字が入っているが、
 Java言語とは異なるものであります。
イ:Javaアプリケーション
 これはJavaで作成されたアプリでJavaVMで稼働します。正解
ウ:Javaアプレット
 Webブラウザや専用閲覧アプリで見られる
エ:Javaサーブレット
 WebアプリでWebブラウザやWebサーバーが必要

人気のわんわん日記: JSP(データベースPostgreSQ)サンプル

人気のわんわん日記: JSP(データベースPostgreSQ)サンプル: "<%@ page contentType='text/html; charset=Shift_JIS' %> <%@ page import='java.sql.*' %> <% Connection con = null; Statement stmt = null; try ..."

JSP(データベースPostgreSQ)サンプル

<%@ page contentType="text/html; charset=Shift_JIS" %>
<%@ page import="java.sql.*" %>
<%
Connection con = null;
Statement stmt = null;
try {
// ドライバクラスをロード
//Class.forName("org.gjt.mm.mysql.Driver");
Class.forName("org.postgresql.Driver"); // PostgreSQLの場合

// データベースへ接続
//String url = "jdbc:mysql:///hellodb?useUnicode=true&characterEncoding=SJIS";
con =
DriverManager.getConnection("jdbc:postgresql:db001",
"postgres",
"zxcvvcxz"); // PostgreSQLの場合

//con = DriverManager.getConnection(url);
// ステートメントオブジェクトを生成
stmt = con.createStatement();
// 全ての行を検索するSQL文を作成
String sql = "SELECT * FROM tbl001";
// クエリーを実行して結果セットを取得
ResultSet rs = stmt.executeQuery(sql);


session.setAttribute("AAAA","FF");
%>
<html>
<head>
<title>JSPでDB接続</title>
</head>
<body>
<table border="1">
<tr>
<th>NO</th>
<th>言語</th>
<th>メッセージ</th>
</tr>
<%
// 検索された行数分ループ
while(rs.next()){
%>
<tr>
<td><%=rs.getInt("rid") %></td>
<td><%=rs.getString("username") %></td>
<td><%=rs.getString("username") %></td>
</tr>
<%
} // end while
%>
</table>
</body>
</html>
<%
} catch (Exception e) {
out.println("<font color=red><h3>エラー!</h3></font>" + e);
e.printStackTrace();
} finally {
// データベースへの接続をクローズします
try {
if (stmt!=null) {
stmt.close();
}
if (con!=null) {
con.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
%>

人気のわんわん日記: org.apache.struts.Globals.DATA_SOURCE_KEYエラー

人気のわんわん日記: org.apache.struts.Globals.DATA_SOURCE_KEYエラー: "Strutsからデータベースを使用してみようと org.apache.struts.Globals.DATA_SOURCE_KEY をクラス内に記述したところ「Globals.DATA_SOURCE_KEY が 解決できません。」という エラーが発生するようになってしまいました。..."

org.apache.struts.Globals.DATA_SOURCE_KEYエラー

Strutsからデータベースを使用してみようと
org.apache.struts.Globals.DATA_SOURCE_KEY
をクラス内に記述したところ「Globals.DATA_SOURCE_KEY が 解決できません。」という
エラーが発生するようになってしまいました。

Strutsからデータベースへ接続する場合、
struts-config.xmlにデータソースを定義する方法がありますが、
実はこれ、推奨されてない方法らしく今では使えなくなっているとのこと。

となると、自前でデータソースを定義するのがベストかな。

人気のわんわん日記: Struts Apache2.2 Tomcat5.5 連携基礎

人気のわんわん日記: Struts Apache2.2 Tomcat5.5 連携基礎: "Strutsを利用してURLが*.doで次ページに戻るアプリです。 とりあえず動くものをアップしておきます。 ------------------------------------------------------------------------------------..."

Struts Apache2.2 Tomcat5.5 連携基礎

Strutsを利用してURLが*.doで次ページに戻るアプリです。
とりあえず動くものをアップしておきます。

-----------------------------------------------------------------------------------------
■JSPページ作成
page4.jsp
-----------------------------------------------------------------------------------------
<%--
Document : page4
Created on : 2010/08/14
Author : springjoe2
--%>

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<!-- タグライブラリ設定 -->
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Test4JSP</title>
</head>
<body>
<h1>テスト4JSP</h1>
<html:link action="/page4action">自分に戻る</html:link>
</body>
</html>
---------------------------------------------------------------------------------------
■アクションクラス作成
Page4Action.java
---------------------------------------------------------------------------------------
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

package action;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

/**
*
* @author x300
*/
public class Page4Action extends org.apache.struts.action.Action {

/* forward name="success" path="" */
private static final String SUCCESS = "success";

/**
* This is the action called from the Struts framework.
* @param mapping The ActionMapping used to select this instance.
* @param form The optional ActionForm bean for this request.
* @param request The HTTP Request we are processing.
* @param response The HTTP Response we are processing.
* @throws java.lang.Exception
* @return
*/
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {

return mapping.findForward(SUCCESS);
}
}

---------------------------------------------------------------------------------------
■アクションフォームクラス作成
Page4ActionForm.java
---------------------------------------------------------------------------------------
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

package actionform;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;

/**
*
* @author x300
*/
public class Page4ActionForm extends org.apache.struts.action.ActionForm {

private String name;

private int number;

/**
* @return
*/
public String getName() {
return name;
}

/**
* @param string
*/
public void setName(String string) {
name = string;
}

/**
* @return
*/
public int getNumber() {
return number;
}

/**
* @param i
*/
public void setNumber(int i) {
number = i;
}

/**
*
*/
public Page4ActionForm() {
super();
// TODO Auto-generated constructor stub
}

/**
* This is the action called from the Struts framework.
* @param mapping The ActionMapping used to select this instance.
* @param request The HTTP Request we are processing.
* @return
*/
public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
ActionErrors errors = new ActionErrors();
if (getName() == null || getName().length() < 1) {
errors.add("name", new ActionMessage("error.name.required"));
// TODO: add 'error.name.required' key to your resources
}
return errors;
}
}
-----------------------------------------------------------------------------------------
■いつものように最後にstruts-config.xmlを変更
<action-mappings>の<action path="/Welcome" forward="/page4.jsp"/>ウェルカムページ
1、forward4のkeyでpage4.jspへ飛ぶ
<global-forwards>の<forward name="forward4" path="/page4.jsp"/>
2、アクションマッピングpage4.jspへ飛ぶというアクション
<action input="/page4.jsp" name="Page4ActionForm" path="/page4action" scope="session" type="action.Page4Action"/>

人気のわんわん日記: 【エラー対策】Tomcat の起動に失敗しました。サーバーポート 8080 はすでに使用されています...

人気のわんわん日記: 【エラー対策】Tomcat の起動に失敗しました。サーバーポート 8080 はすでに使用されています...: "Apache2.2をインストール時にEnterpriseDB ApachePHPが入ったことに起因します、 EnterpriseDB ApachePHPの起動を止めることで回避することが出来ます。 -----------------------------------------..."

【エラー対策】Tomcat の起動に失敗しました。サーバーポート 8080 はすでに使用されています。

Apache2.2をインストール時にEnterpriseDB ApachePHPが入ったことに起因します、
EnterpriseDB ApachePHPの起動を止めることで回避することが出来ます。
-----------------------------------------------------------------------------------------
Tomcat の起動に失敗しました。サーバーポート 8080 はすでに使用されています。
build-impl.xml:688: 配備エラー:
Tomcat の起動に失敗しました。サーバーポート 8080 はすでに使用されています。
詳細は、サーバーのログファイルを参照してください。
-----------------------------------------------------------------------------------------

人気のわんわん日記: Tomcat5.5とApache2.2をmod_proxyを利用して連携するには?

人気のわんわん日記: Tomcat5.5とApache2.2をmod_proxyを利用して連携するには?: "mod_proxy.soとmod_proxy_ajp.soはApache2.2インストール時に含まれています。 1、Apache2.2\conf\httpd.confのコメントアウトを外します。 2、Locationタグを設定します。 3、Tomcatを先に起動し、次にApa..."

Tomcat5.5とApache2.2をmod_proxyを利用して連携するには?

mod_proxy.soとmod_proxy_ajp.soはApache2.2インストール時に含まれています。

1、Apache2.2\conf\httpd.confのコメントアウトを外します。
2、Locationタグを設定します。

3、Tomcatを先に起動し、次にApacheを起動します。

これで終了です、以前と比べると非常に簡単になりましたね。

2010年8月13日金曜日

人気のわんわん日記: StrutsのActionFormサンプル

人気のわんわん日記: StrutsのActionFormサンプル: "初めて作成したPage3ActionFormのひな型です。 /* * 初めてのActionForm For Struts * サンプル */ package actionform; import javax.servlet.http.HttpServletRequest..."

StrutsのActionFormサンプル

初めて作成したPage3ActionFormのひな型です。

/*
* 初めてのActionForm For Struts
* サンプル
*/


package actionform;


import javax.servlet.http.HttpServletRequest;


import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;


/**
*
*
*/
public class Page3ActionForm extends org.apache.struts.action.ActionForm {


private String name;


private int number;


/**
* @return
*/
public String getName() {
return name;
}


/**
* @param string
*/
public void setName(String string) {
name = string;
}


/**
* @return
*/
public int getNumber() {
return number;
}


/**
* @param i
*/
public void setNumber(int i) {
number = i;
}


/**
*
*/
public Page3ActionForm() {
super();
// TODO Auto-generated constructor stub
}


/**
* This is the action called from the Struts framework.
* @param mapping The ActionMapping used to select this instance.
* @param request The HTTP Request we are processing.
* @return
*/
public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
ActionErrors errors = new ActionErrors();
if (getName() == null || getName().length() < 1) {
errors.add("name", new ActionMessage("error.name.required"));
// TODO: add 'error.name.required' key to your resources
}
return errors;
}
}

人気のわんわん日記: struts-config.xmlの設定例

人気のわんわん日記: struts-config.xmlの設定例: "1、FORM-BEANSタグの設定      <form-bean name='page2form' ..."

struts-config.xmlの設定例

1、FORM-BEANSタグの設定
<form-beans>
  <form-bean name="page1form" type="org.apache.struts.action.DynaActionForm"/>
  <form-bean name="page2form" type="org.apache.struts.action.DynaActionForm"/>
  <form-bean name="■■■■■■" type="org.apache.struts.action.DynaActionForm"/>  
</form-beans>

2、GLOBAL-FORWARDSタグ設定
<global-forwards>
  <forward name="forward2" path="/page2.jsp"/>
      <forward name="アクションクラスで使用する名前" path="/送信先.jsp"/>
</global-forwards>

3、ACTION-MAPPING設定
<action-mappings>
  <action path="/page1action" name="page1form" type="strutstest.Page1Action" input="/page1.jsp" />
  <action path="/page2action" name="page2form" type="strutstest.Page2Action" input="/page2.jsp" />
  <action path="/アクションクラス小文字" name="■■■■■■" type="パッケージ名.アクションクラス" input="/送信元.jsp" />
</action-mappings>

1と3の■■■■■■が一致していることが重要です

人気のわんわん日記: Tomcat Apache 連携ができない

人気のわんわん日記: Tomcat Apache 連携ができない: "Tomcat Apache 連携で以下のようなエラー(logs\error.log)が吐き出されると 悩まれている方が多いようなので解決方法を説明しておきます。 -----------------------------------------------------------..."

人気のわんわん日記: Apache2.2との連携で最適なTomcatリスト

人気のわんわん日記: Apache2.2との連携で最適なTomcatリスト: "▼ダウンロード▼ [Tomcat5.0] [Tomcat5.5] [Tomcat6.0] ※注:以下のモジュールを利用する連携です。 ※注:過去のmod_jk.soやmod_jk2.soなど利用する連携とは異なります。 LoadModule proxy_module mod..."

人気のわんわん日記: Tomcat JSP で java.lang.ClassNotFoundException: org...

人気のわんわん日記: Tomcat JSP で java.lang.ClassNotFoundException: org...: "Tomcat環境でJSPからpostgreSQLに接続しようとすると、 「java.lang.ClassNotFoundException: org.postgresql.Driver」 という感じのエラーが表示されます。 こんなときは、以下のいずれかを試してください。 【C..."

人気のわんわん日記: Crystal Reports for Visual Studio 2010 Beta版は日本語環境...

人気のわんわん日記: Crystal Reports for Visual Studio 2010 Beta版は日本語環境...: "ダウンロード画面が表示されて使用することができません。 【現状の解決策】 英語版のVS2010なら起動可能。 Crystal Reports for Visual Studio 2010 Beta版は英語版なら起動する"

人気のわんわん日記: 平均値を算出する式

人気のわんわん日記: 平均値を算出する式: "平均値を算出する式   N 個の観測値の平均値を算出する式はどれか。 S は N 個の観測値の和(ただし, S >0)とし, [ X ] は X 以下で最大の整数とするとまた, 平均値は,小数第1位を四捨五入して整数値として求める。 ア[S/N-0.4] イ[S/N-0.5..."

人気のわんわん日記: VB.NETでODBC接続

人気のわんわん日記: VB.NETでODBC接続: "Imports System.Data.Odbc Public Class Form1 '------------------------ Dim CON1 As OdbcConnection '------------------------ Dim ..."

人気のわんわん日記: 逆ポーランド表記法

人気のわんわん日記: 逆ポーランド表記法: "逆ポーランド表記法 A=1,B=3,C=5,D=4,E=2 のとき, 逆ポーランド表記法で表現された式 AB+CDE/-* の演算結果はどれか。 ア -12         イ 2         ウ 12         エ 14 【解説】 まずは逆ポーラン..."

人気のわんわん日記: 論理演算の真理値表

人気のわんわん日記: 論理演算の真理値表: "論理演算の真理値表 X、Yはそれぞれ0または1の値を取る変数です。 X□YをXとYの論理演算としたとき、次の真理値表が得られました。 X□Yの真理値表はどれか。 X=0,Y=0の時、Xand(X□Y)=0、Xor(X□Y)=1 X=0,Y=1の時、Xand(X□Y)=0..."

人気のわんわん日記: Tomcat5.5 と Apache2.2 で 連携する方法

人気のわんわん日記: Tomcat5.5 と Apache2.2 で 連携する方法: "1、Apache2.2のインストール(ミラーサイトから実施) 2、Tomcat5.5のインストール(こちらのバージョンが最適)       ワンクリインストーラーは使用してはいけない!! 3、Apache2.2の設定   ┣conf\httpd.confをエディタで開く   ┣..."

人気のわんわん日記: TomcatとApache連携の注意点

人気のわんわん日記: TomcatとApache連携の注意点: "Tomcatの起動方法ですが、 Tomcat5.5内にTomcat5.exeとTomcat5w.exeの2つがあると思います。 ここで、 Tomcat5w.exeはUIで利用しやすいのですが連携がうまくいかないという不具合がありあます、 そこでTomcat5.exeを使用するよう..."

人気のわんわん日記: 【web.xml】【配下ディレクトリ隠匿】【セキュリティ】

人気のわんわん日記: 【web.xml】【配下ディレクトリ隠匿】【セキュリティ】: "WEBアプリケーションのディレクトリ配置が ユーザーから見れるのはセキュリティー上問題があるため、 以下の設定をweb.xml内で行い隠匿しておきましょう。 1: ~略~ 2: 3: ~略~ 4: 5: <web-..."

人気のわんわん日記: strutsフレームワークの利用方法【データベース、DB】

人気のわんわん日記: strutsフレームワークの利用方法【データベース、DB】: "ここではstrutsからpostgreSQLへの接続方法を 説明したいと思います。 まずWEB-INFに配置された[struts-config.xml]に以下の タグを追記してください。 =============================================..."

人気のわんわん日記: Strutsを利用してデータベースへ接続する方法「DBCP Component」

人気のわんわん日記: Strutsを利用してデータベースへ接続する方法「DBCP Component」: "Strutsを利用してデータベースに接続するには、 DBCP Componentを利用するのがお勧めです。 1、DBCP ComponentをJakarta Projectからダウンロードします。commons-dbcp-1.4.zip 2、解凍するとcommons-dbcp-..."

人気のわんわん日記: Struts Hello World 【その1】文字表示

人気のわんわん日記: Struts Hello World 【その1】文字表示: "1、Strutsのページ表示です 2、page1.jspを作成 <%@ page contentType='text/html;charset=Shift_JIS' %>    ..."

人気のわんわん日記: Struts ファイル構築 手順

人気のわんわん日記: Struts ファイル構築 手順: "Strutsの環境構築も終わりテストプログラムの作成に入っています。 いつも手順がばらばらなのでここで統一しておこうと思います。 1、JSPファイルの作成 2、アクションクラスの作成 3、struts-config.xml   ┣form-beansタグにform-bean ..."

Struts ファイル構築 手順

Strutsの環境構築も終わりテストプログラムの作成に入っています。
いつも手順がばらばらなのでここで統一しておこうと思います。
1、JSPファイルの作成

2、アクションクラスの作成

3、struts-config.xml
  ┣form-beansタグにform-bean nameとtypeを記述(コピペ)
  ┣grobal-forwardsタグにgrobal-forword name pathを指定
  ┗action-mappingタグにpath name type inputを指定(コピペ)

以上の手順がやりやすいですね、この辺はやりやすい方法で
各自決めていくのが良いかもしれませんね

Struts Hello World 【その1】文字表示

1、Strutsのページ表示です
2、page1.jspを作成
<%@ page contentType="text/html;charset=Shift_JIS" %>
<html:html>
<head><title>ページ1</title></head>
  <body>
  ページ1:動くかな?
  <html:form method="POST" action="/page1action">
  <html:submit value="次へ"/>
  </html:form>
  </body>
</html:html>
3、struts-config.xmlの中のaction-mappingの初期表示を指定する箇所にpage1.jspを指定
<action-mappings>
<action path="/Welcome" forward="/page1.jsp"/>
</action-mappings>

4、なんとか表示されたのでOKです。

Strutsを利用してデータベースへ接続する方法「DBCP Component」

Strutsを利用してデータベースに接続するには、
DBCP Componentを利用するのがお勧めです。

1、DBCP ComponentをJakarta Projectからダウンロードします。commons-dbcp-1.4.zip
2、解凍するとcommons-dbcp-1.4.jarが中にあるのでこれが本体となります。
※バージョンはお好きなものを選んで落としてください

3、取得したcommons-dbcp-1.4.jarファイルはWEB-INFのlibフォルダに入れました。

【web.xml】【配下ディレクトリ隠匿】【セキュリティ】

WEBアプリケーションのディレクトリ配置が
ユーザーから見れるのはセキュリティー上問題があるため、
以下の設定をweb.xml内で行い隠匿しておきましょう。

1: ~略~
2: <web-app>
3: ~略~
4: <security-constraint>
5: <web-resource-collection>
6: <web-resource-name>disableaccess</WEB-RESOURCE-NAME>
7: <url-pattern>/pages/*</url-pattern>
8: </web-resource-collection>
9: <auth-constraint>
10: </auth-constraint>
11: </security-constraint>
12: ~略~
13: </web-app>

strutsフレームワークの利用方法【データベース、DB】

ここではstrutsからpostgreSQLへの接続方法を
説明したいと思います。

まずWEB-INFに配置された[struts-config.xml]に以下の
タグを追記してください。
==================================================
説明:
DBサーバ:localhost
ユーザー名:user
パスワード:pass001
==================================================

<struts-config>
 <data-sources>
  <data-source
   autoCommit="false"
   description="Example Data Source Description"
   driverClass="org.postgresql.Driver"
   maxCount="4"
   minCount="2"
   password="pass001"
   url="jdbc:postgresql://localhost/karte"
   user="user"/>
  </data-sources>
</struts-config>

※いつものように<>のタグを半角に戻してください。

初級シスアド 過去問 解説 【稼働率】

 図で示されるシステム構成全体のアベイラビリティとして、
 最も近いものはどれか。ここで A, B, C, D は装置を示し、
 個々のアベイラビリティは,A と C は 0.9,B と D は 0.8 とする。
 また、並列接続部分については、いずれか一方が稼働しているとき、
 当該並列部分は稼働しているものとする。

      ┌───┐    ┌───┐
     ┌┤ A ├┐  ┌┤ B ├┐
     │└───┘│  │└───┘│
    ─┤     ├──┤     ├─
     │┌───┐│  │┌───┐│
     └┤ C ├┘  └┤ D ├┘
      └───┘    └───┘

 ア 0.72

 イ 0.92

 ウ 0.93

 エ 0.95

【解説】
稼働率を求める問題の解き方は2点に注意します。
■直列の場合は掛ける
    ┌───┐ ┌───┐
   ─┤ R1 ├─┤ R2 ├─
    └───┘ └───┘
  R = R1 × R2

■並列の場合は全体(1)-稼働していない部分を掛ける
      ┌───┐
     ┌┤ R1 ├┐
     │└───┘│ 
   ──┤     ├──
     │┌───┐│
     └┤ R2 ├┘
      └───┘
  R = 1 - ( 1 - R1 )( 1 - R2 )

■以上をまとめると今回の問題は
 この問題は、このような並列部分が

     ┌───┐
    ┌┤   ├┐
    │└───┘│ 
   ─┤     ├─
    │┌───┐│
    └┤   ├┘
     └───┘

 2つ直列につながっていると考えることができます。

よって
 全体の稼働率 = 並列につながれたシステムが直列につながっている

        =(並列部分の稼働率)×(並列部分の稼働率)

        = { 1-(1-0.9)(1-0.9) } × { 1-(1-0.8)(1-0.8) }

        = { 1-(0.1×0.1) } × { 1-(0.2×0.2) }

        = { 1-0.01 } × { 1-0.04 }

        = 0.99×0.96

        = 0.9504 ∴エ

2010年8月12日木曜日

Tomcat5.5 Apache2.2 連携 For Windows Vista 【完成版】

Apache2.2からはTomcatとの連携方法が変更になっています

1、Apache2.2のインストール (うまくいかない場合はfrom a mirrorリンクを数回クリックしミラーへ)
2、Tomcat5.5 - 6.0のインストール

3、Apache2.2の設定
  ┣Apache2.2\conf\httpd.confをエディタで開く
  ┣LoadModuleのコメントを外す(ProxyAJP)
  ┗LocationタグにTomcat転送用URLを指定

4、Tomcat5.5の設定
 8080ポートをふさぐ(server.xml内をコメントアウト)
 ※これは必ずしも実施しなくても良い

5、Tomcat→Apacheの順番で起動
 ※Tomcatの起動はTomcat5.exeから実施(Tomcat5W.exeではないことに注意)

Apache2.2との連携で最適なTomcatリスト

▼ダウンロード▼
[Tomcat5.0]

[Tomcat5.5]

[Tomcat6.0]

※注:以下のモジュールを利用する連携です。
※注:過去のmod_jk.soやmod_jk2.soなど利用する連携とは異なります。
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so

ハッシュ表探索

ハッシュ表探索

ハッシュ表探索において、同一のハッシュ値となる確率が最も低くなるのは、
ハッシュ値がどの分布で近似されるときか。

ア:2項分布
イ:一様分布
ウ:正規分布
エ:ポアソン分布

【解説】
ハッシュ表探索とはある関数を利用してデータを格納する位置を決定する仕組みです、
その時の格納位置を示す値がハッシュ値と呼ばれる為にハッシュ表探索と呼ばれます。

この時に出来る限りハッシュ値が同一の値にならないようにしなければいけません、
その同一の値になる確率が最も低い関数はどれか選ぶという問題です。

■2項分布
これは成功か失敗かという2つのうち一つを選ぶ場合に利用するもので、
ハッシュ値生成にはてきしていません。

■正規分布
平均値を中心に盛り上がった釣鐘のような形です、
これも真中に集中してしまう為に値に偏りが生じてしまいます。

■ポアソン分布
一定時間内にごく稀に発生する事象の確立分布です
これも偏りのある分布となることがあり適していません

以上のような内容を知らなくても
言葉の意味合いから「一様分布」で決まりで良いでしょう。

∴イ

Tomcat5.5 と Apache2.2 で 連携する方法

1、Apache2.2のインストール(ミラーサイトから実施)
2、Tomcat5.5のインストール(こちらのバージョンが最適
      ワンクリインストーラーは使用してはいけない!!

3、Apache2.2の設定
  ┣conf\httpd.confをエディタで開く
  ┣LoadModuleのコメントを外す(ProxyAJP)
  ┗LocationタグにTomcat転送用URLを指定

4、Tomcat5.5の設定
 8080ポートをふさぐ(server.xml内をコメントアウト)
 ※しなくても良い

5、Tomcat→Apacheの順番で起動
 ※Tomcatの起動はTomcat5.exeから実施(Tomcat5W.exeではないことに注意

TomcatとApache連携の注意点

Tomcatの起動方法ですが、
Tomcat5.5内にTomcat5.exeとTomcat5w.exeの2つがあると思います。
ここで、
Tomcat5w.exeはUIで利用しやすいのですが連携がうまくいかないという不具合がありあます
そこでTomcat5.exeを使用するようにしてください。

Tomcat5.exeはコンソール画面ですがクリックするだけで起動できるので、
それほど不便でもないかと思います。

Tomcat Apacheの連携ができない原因

Tomcat5.5以降、Apache2.2以降で連携を行う場合は、
mod_proxy.so
mod_proxy_ajp.so
によって連携処理を行うのが主流のようです。
(詳細は過去の記事に記載してありますので参考に)

しかし様々なエラーが出ることもあるようです。
(こちらも詳細が過去にまとめてありますので参考に)

その際の解決の方法として必要になってくるのが
Tomcat5.5のstartup.bat,shutdown.batが含まれた完全版ですが、
こちらからダウンロードが可能となっております。
階層などを是非参考にしてみてください。

Tomcat Apache 連携ができない

Tomcat Apache 連携で以下のようなエラー(logs\error.log)が吐き出されると
悩まれている方が多いようなので解決方法を説明しておきます。
------------------------------------------------------------------------------------------------
[Thu Aug 12 07:20:02 2010] [error] (OS 10061)対象のコンピュータによって拒否されたため、接続できませんでした。 : proxy: AJP: attempt to connect to 127.0.0.1:8009 (localhost) failed
[Thu Aug 12 07:20:02 2010] [error] ap_proxy_connect_backend disabling worker for (localhost)
[Thu Aug 12 07:20:02 2010] [error] proxy: AJP: failed to make connection to backend: localhost
-------------------------------------------------------------------------------------------------

これはTomcatをワンクリックインストーラーでインストールしたために、
発生することが原因とわかっています。
例えば、Tomcat5.5をインストールしたフォルダ内(Tomcat5.5\bin)の
中に本来であればstartup.batやshutdown.batなど多くのファイルがあるはずですが、
ワンクリックインストールをしてしまうとそうしたファイルも無い状態になってしまいます。
よって本家Tomcatダウンロードサイトへ行き完全版のTomcatを入手して
再度インストールすれば解決致します。

Tomcat完全版が見つからないという人はEclipse(All-In-One Eclipse)などを
インストールすれば付属してくるので「All-In-One Eclipse Tomcat」で検索してみてください。

Tomcat Apache 連携 方法 Apache2.2

ここではTomcat5.5以降Apache2.2以降の連携方法を説明致します。

まずApache2.2をダウンロードしインストールします。
(ダウンロードはミラーサイトがお勧めですhttpd-2.2.16-win32-x86-no_ssl.msi

次にTomcatをダウンロード、インストールします。
http://tomcat.apache.org/
お好きなバージョンを選んでください。
(私はver5.5を選択しました)
---------------------------------------------------------------------------------
ここまではワンクリックインストールなので特に特別な設定はいりません。
---------------------------------------------------------------------------------

ここからが重要でApache2.2以降の場合は非常に連携が楽になっており、
httpd.confの内容を変更するだけで連携ができるようになっています。

まず、Apache2.2をインストールしたフォルダをさがして、
Apache2.2\conf\httpd.confファイルをエディタで開きます。
するとモジュールロードの下の2か所がコメントアウトされていますので、
「#」を外して有効化させます。
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
その下に以下を追記してください。
<Location /jsp-examples/>
ProxyPass ajp://localhost:8009/jsp-examples/
</Location>
(※タグ「<」「>」が全角なので半角に戻してください!)

これはTomcatと連携させるURLで、
servlet-example」というWEBアプリを作成したら以下のように追記
<Location /servlets-examples/>
ProxyPass ajp://localhost:8009/servlets-examples/
</Location>

WebApplication1」というWEBアプリを作成したら以下のように追記
<Location /WebApplication1/>
ProxyPass ajp://localhost:8009/WebApplication1/
</Location>

ここでTomcat→Apacheの順番で起動すると完成です。
順番を逆にすると設定が反映されません、
これはApacheがTomcatの設定を読み込む際の挙動に関連しています。

サーバーが起動したら
http://localhost/jsp-examples/
http://localhost/servlets-examples/
http://localhost/WebApplication1/
などに接続して動作確認を行いましょう!!

双方向のポインタをもつリスト構造

双方向のポインタをもつリスト構造



























アドレス

社員名

次ポインタ

前ポインタ

100

社員A

300

0

200

社員T

0

300

300

社員K

200

100


上記の場合、前ポインタがゼロである社員Aが先頭だとわかります。
また、次ポインタがゼロの社員Tが最終となります。
よって社員Kが真ん中に挟まれることがわかります。(社員Kのポインタから推測してもOK!)

双方向のポインタをもつリスト構造

双方向のポインタをもつリスト構造


A

2010年8月11日水曜日

Tomcat5.5とApache2.2の連携をするには?

Apache2.2からはTomcatとの連携方法が非常に簡単になりました。
変更する箇所は

Apache2.2/conf/httpd.conf内の
#LoadModule proxy_module modules/mod_proxy.so
#LoadModule proxy_ajp_module modules/mod_proxy_ajp.so

上記の部分が#でコメントアウトされているので、
コメントアウトを外します。
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so


次に以下を追記します。
<Location /jsp-examples/>
ProxyPass ajp://localhost:8009/jsp-examples/
</Location>
<Location /servlets-examples/>
ProxyPass ajp://localhost:8009/servlets-examples/
</Location>

※タグが全角になっているので半角に直してね♪
エディタの機能でタグの半角入力ができないのよね;;

さて次はTomcat側の設定です。
こちらは以前のバージョンと同じく8080ポートをコメントアウトするだけです。

最後にTomcat、Apacheの順で起動すれば完成です。

しかーーし!なかなかうまくいかないのが現状だと思います、
設定があっていてもApacheのバグがあったり、
あるいは設定が間違っているかもしれません。

まぁどうしても必要だという場合以外は、
別にTomcatだけでも良いような気がするんですけど。
なんで環境で使えたり使えなかったりする技術が、話題になるのか・・・

フィードバック制御の説明

フィードバック制御の説明として、
適切なものはどれか

ア 外乱による影響を検知してから修正動作を行う。
イ 外乱に弱く,それらの影響を増幅させてしまう。
ウ 外乱を検知して,その影響が出ないように修正動作を行う。
エ 外乱を予測して修正動作を行う。



【解説】
フィードバック制御は、目的の値によって入力値を修正させる制御方法であるため、
外乱⇒影響⇒検知⇒修正
の動きとなる。
∴ア

TomcatとApache連携方法

1:Apacheの設定を実施
 ■C:\Apache2.2\conf\フォルダに「workers2.properties 」というファイルを作成
 ■「workers2.properties」の内容は以下
####################################################
[status:]
[uri:/jkstatus/*]
group=status:
[shm:]
disabled=1
[channel.socket:]
[ajp13:]
[uri:/servlets-examples/*]
####################################################
 
■C:\Apache2.2\conf\フォルダ内の「httpd.conf」ファイルを開く
 ■最終行に以下の内容を追記
####################################################
LoadModule jk2_module modules/mod_jk2.so
<IfModule mod_jk2.c>
#-----------------------------------------------
# Where to find the workers2.properties file
#-----------------------------------------------
#
#JkSet config.file /usr/local/etc/apache2/workers2.properties
JkSet config.file "C:/Program Files/Apache Software Foundation/Apache2.2/conf/workers2.properties"
</IfModule>
####################################################

Apacheサーバーを再起動して完了です



ApacheとTomcatの連携【それ1】

TomcatとApacheがインストールできましたら
次にTomcat-Apache連携の処理をしておきましょう。

※このメリットはTomcatはJSPエンジンとしてのみ働かせ
 サーバーの機能はApacheにまかせるということで、そのほうがなんか良いらしいです。

ここにコネクターがあるのでダウンロードしてください。
http://tomcat.apache.org/
少々探しにくいかも(左側のメニューから)
Download
┗Tomcat Connectors
  ┗Tomcat Connectors JK1.2
     ┗Brows Archive(←ここでリンクを間違えると迷路;;)
        ┗JK2
           ┗Binaries
              ┗win32
                 ┗お好きなものをどうぞ(zip形式ファイルがいいかも)

Apacheのダウンロード インストール

ソースも公開されていますが、
インストーラー形式のものをダウンロードするのが簡単です。
Apacheダウンロードサイトからお好きなバージョンをダウンロードしてきてください。

MSI Installer
■現状の最新版は以下のものになります。
httpd-2.2.16-win32-x86-no_ssl.msi

Tomcat ダウンロード インストール

JSP/Servet 開発環境構築のために
Tomcatをインストールします。

【Tomcatインストーラーダウンロード】
http://tomcat.apache.org/

最近はワンクリックインストールになっているので
インストールも簡単です。
特別な設定は必要ありません。

2010年8月10日火曜日

Tomcat Manager 承認されてない

C:\user\tomcat5.5\conf
【tomcat-users.xml】

■以下の文を追加
<user username="root" password="root" roles="tomcat,manager,admin"/>

※タグを半角に変換して利用してください!!

JSPサンプル

<%@ page contentType="text/html; charset=Shift_JIS" %>
<%@ page import="java.sql.*" %>
<%
Connection con = null;
Statement stmt = null;
try {
// ドライバクラスをロード
//Class.forName("org.gjt.mm.mysql.Driver");
Class.forName("org.postgresql.Driver"); // PostgreSQLの場合

// データベースへ接続
//String url = "jdbc:mysql:///hellodb?useUnicode=true&characterEncoding=SJIS";
con =
DriverManager.getConnection("jdbc:postgresql:db001",
"postgres",
"zxcvvcxz"); // PostgreSQLの場合

//con = DriverManager.getConnection(url);
// ステートメントオブジェクトを生成
stmt = con.createStatement();
// 全ての行を検索するSQL文を作成
String sql = "SELECT * FROM tbl001";
// クエリーを実行して結果セットを取得
ResultSet rs = stmt.executeQuery(sql);


session.setAttribute("AAAA","FF");
%>
<html>
<head>
<title>JSPでDB接続</title>
</head>
<body>
<table border="1">
<tr>
<th>NO</th>
<th>言語</th>
<th>メッセージ</th>
</tr>
<%
// 検索された行数分ループ
while(rs.next()){
%>
<tr>
<td><%=rs.getInt("rid") %></td>
<td><%=rs.getString("username") %></td>
<td><%=rs.getString("username") %></td>
</tr>
<%
} // end while
%>
</table>
</body>
</html>
<%
} catch (Exception e) {
out.println("<font color=red><h3>エラー!</h3></font>" + e);
e.printStackTrace();
} finally {
// データベースへの接続をクローズします
try {
if (stmt!=null) {
stmt.close();
}
if (con!=null) {
con.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
%>

サーブレットWEB-INF(web.xml)設定箇所

servlet
 servlet-name
 servlet-class

servlet-mapping
 servlet-name
 url-pattern

JSP-postgreSQL部分

Connection con = null;
Statement stmt = null;
try {
// ドライバクラスをロード
//Class.forName("org.gjt.mm.mysql.Driver");
Class.forName("org.postgresql.Driver"); // PostgreSQLの場合

// データベースへ接続
//String url = "jdbc:mysql:///hellodb?useUnicode=true&characterEncoding=SJIS";
con =
DriverManager.getConnection("jdbc:postgresql:db001",
"postgres",
"zxcvvcxz"); // PostgreSQLの場合

//con = DriverManager.getConnection(url);
// ステートメントオブジェクトを生成
stmt = con.createStatement();
// 全ての行を検索するSQL文を作成
String sql = "SELECT * FROM tbl001";
// クエリーを実行して結果セットを取得
ResultSet rs = stmt.executeQuery(sql);

Tomcat JSP で java.lang.ClassNotFoundException: org.postgresql.Driver 解決方法

Tomcat環境でJSPからpostgreSQLに接続しようとすると、
java.lang.ClassNotFoundException: org.postgresql.Driver
という感じのエラーが表示されます。

こんなときは、以下のいずれかを試してください。

【CLASSPATHの設定】
C:\Program Files\PostgreSQL\pgJDBC\pg73jdbc3.jar

【JARファイルのコピー】
以下のファイルのどれかを
WEB-INFのlib内に配置しTomcatを再起動する。
pg73jdbc3.jar
postgresql-8.4-701.jdbc4.jar
postgresql-8.4-701.jdbc3.jar

2010年8月6日金曜日

浮動小数点表示に関する記述

浮動小数点表示に関する記述

実数aをa=f*r^eとあらわす浮動小数点表示に関する記述として,適切なものはどれか。

ア  f を仮数, e を指数, r を基数という。
イ  f を基数, e を仮数, r を指数という。
ウ  f を基数, e を指数, r を仮数という。
エ  f を指数, e を基数, r を仮数という。



【解説】
 少数の表し方には固定少数点表示と浮動小数点表示がある。
固定小数点表示とは、指数を持たず、小数点の場所が決まってる。例えば 0.000009 である。
 浮動小数点表示とは、指数を持ち、広い範囲を表せる。例えば 0.9 × 10^-5 である。
 ちなみに 0.000009 = 0.9 × 10^-5 となる。
 0.9 × 10^-5 において、 0.9 =仮数、 10 =基数、-5=指数という。
よって、a=f×reにおいては、f =仮数、r =基数、e =指数 となる。

【平成16年春 問03】

平均値を算出する式

平均値を算出する式

  N 個の観測値の平均値を算出する式はどれか。
S は N 個の観測値の和(ただし, S >0)とし,
[ X ] は X 以下で最大の整数とするとまた,
平均値は,小数第1位を四捨五入して整数値として求める。

ア[S/N-0.4]

イ[S/N-0.5]

ウ[S/N+0.4]

エ[S/N+0.5]


【解説】
観測値の和(S)を
観測地の個数(N)で割ると平均が求められます。

また平均値を小数第1位を四捨五入して整数値として
求めたいので0.5を加算しておきます。

2010年8月4日水曜日

論理演算の真理値表

論理演算の真理値表

X、Yはそれぞれ0または1の値を取る変数です。

X□YをXとYの論理演算としたとき、次の真理値表が得られました。

X□Yの真理値表はどれか。

X=0,Y=0の時、Xand(X□Y)=0、Xor(X□Y)=1

X=0,Y=1の時、Xand(X□Y)=0、Xor(X□Y)=1

X=1,Y=0の時、Xand(X□Y)=0、Xor(X□Y)=1

X=1,Y=1の時、Xand(X□Y)=1、Xor(X□Y)=1



X=0,Y=0の時、X□Y=0

X=0,Y=1の時、X□Y=0

X=1,Y=0の時、X□Y=0

X=1,Y=1の時、X□Y=1



X=0,Y=0の時、X□Y=0

X=0,Y=1の時、X□Y=1

X=1,Y=0の時、X□Y=0

X=1,Y=1の時、X□Y=1



X=0,Y=0の時、X□Y=1

X=0,Y=1の時、X□Y=1

X=1,Y=0の時、X□Y=0

X=1,Y=1の時、X□Y=1



X=0,Y=0の時、X□Y=1

X=0,Y=1の時、X□Y=1

X=1,Y=0の時、X□Y=1

X=1,Y=1の時、X□Y=0



【解説】

各パターンにおいて、

Xand(X□Y)の値とXor(X□Y)の値を見比べることで解答を導きだします。

まず

■X=0,Y=0の時

Xand(X□Y)=0⇒0and(X□Y)=0なので(X□Y)は0,1

Xor(X□Y)=1⇒0or(X□Y)=1なので(X□Y)は1ということが分かります。

■X=0,Y=1の時

Xand(X□Y)=0⇒0and(X□Y)=0なので(X□Y)は0,1

Xor(X□Y)=1⇒0or(X□Y)=1なので(X□Y)は1ということが分かります。

■X=1,Y=0の時

Xand(X□Y)=0⇒1and(X□Y)=0なので(X□Y)は0

Xor(X□Y)=1⇒1or(X□Y)=1なので(X□Y)は0,1ということが分かります。

よって(X□Y)は0

■X=1,Y=1の時

Xand(X□Y)=1⇒1and(X□Y)=1なので(X□Y)は1

Xor(X□Y)=1⇒1or(X□Y)=1なので(X□Y)は0,1ということが分かります。

よって(X□Y)は1

以上から答えは【ウ】になります。

逆ポーランド表記法

逆ポーランド表記法

A=1,B=3,C=5,D=4,E=2 のとき,

逆ポーランド表記法で表現された式 AB+CDE/-* の演算結果はどれか。

ア -12        

イ 2        

ウ 12        

エ 14



【解説】

まずは逆ポーランド記法の説明です。

A+Bは逆ポーランド記法ではAB+になります。

これをもとに戻すには以下の手順を行います。

①Aをスタックに入れる

②Bをスタックに入れる

③+(演算子)があるのでBを取りだし、

 さらにAを取り出して(A+B)にしてスタックに入れます。

これを今回のパターンに当てはめると、

AB+CDE/-* なので、

①Aをスタックに入れる

②Bをスタックに入れる

③+があるのでB、Aを取り出しA+Bを入れる

④Cをスタックに入れる

⑤Dをスタックに入れる

⑥Eをスタックに入れる

⑦/があるのでE、Dを取り出しE/Dを入れる

⑧-があるので(E/D)、Cを取り出しC-(E/D)を入れる

⑨*があるのでC-(E/D)と(A+B)を取り出し

 (A+B)*C-(E/D)を入れる

よって(A+B)*C-(E/D)に、A=1,B=3,C=5,D=4,E=2を

代入すると12になります。

∴12

2010年8月1日日曜日

8月1日のわんわん牧場

今日も暑いですね。
散歩のときも注意が必要です、
アスファルトからの輻射熱には気をつけたいものです。