約 3,237,757 件
https://w.atwiki.jp/limixp/pages/11.html
エディション JDKのバージョンについて JDKのダウンロード JDKのインストール 環境変数の設定 JDKインストールの確認 Javaでプログラミングを行うためにはJava開発環境(JDK)をインストールする必要があります。 JDKをインストールするとJava実行環境(JRE)も同時にインストールされます. エディション Java PlatformのエディションはJava SE, Java EE, JavaMEの3つがありました.今回は一般のクライアントPC向けとしてJava SE(Standard Edition)をインストールします。 JDKのバージョンについて 現在(2008年4月),出回っているのは主に1.4, 1.5, 1.6の3つのバージョンです.最新のバージョンは1.6です.JDKのバージョンが異なると,若干の仕様の違いが出てきます.例えば,バージョン1.4ではエラーもなくコンパイルできていたJavaのソースを,バージョン1.5の環境に持ってきてコンパイルするとエラーになったりすることがあります. またJDKバージョン1.6でコンパイルしたバイトコード(classファイル)を,Java実行環境(JRE)バージョン1.4や1.5などの古いバージョンで実行しようとするとエラーとなります.逆に古いバージョンのJDK1.4, 1.5でコンパイルしたバイトコードは,新しいバージョンのJRE1.6で実行することができます. つまり,JDKのバージョンとJREのバージョンには注意する必要があります.安全にJavaプログラムを動作させたい場合は,JREのバージョンを最新にし,JDKのバージョンは古いものを使っていれば良いと思います. 当wikiサイトではJDKのバージョンを1.5, JREのバージョンを1.6とします. JDKのダウンロード 最新のJDK(Java SE)はSun Developer Networkからダウンロードすることができます.(Sun Microsystems社のページからはJREしかダウンロードできないので注意してください.) JDK 1.5 ダウンロード 上記のリンク先へ飛んだときダウンロードできるものがたくさんあるため,どれをダウンロードしていいか迷ってしまった経験は誰しも最初はあったと思います.そこで簡単に整理しておきます. JDK 5.0 Update 15 これだけあればJava開発環境が整います.まさに求めているJ2SE 1.5のJDKです. JDK 5.0 Update 9 with Java EE これはJ2EEです.サーバで使う機能も一緒にダウンロードできます.ここでは必要ありません. JDK 5.0 Update 15 with NetBeans IDE 6.0.1 これはJ2SE 1.5と一緒に統合開発環境NetBeansもダウンロードできます.NetBeansは無償で利用可能なIDEで,Eclipseと同じようなものです.Eclipseと違い,プラグインを必要としない完全日本語対応のツールです.NetBeansは使ったことがないので詳しいことはよくわかりません. Java Runtime Environment(JRE) 5.0 Update 15 これは実行環境だけです.Javaを実行できるようにはなりますが,開発することはできません. J2SE 5.0 JDK ソースコード Javaはオープンソースなのでソースが公開されています. J2SE 5.0 ドキュメント APIドキュメントです. ということで,JDK 5.0 Update 15のダウンロードページにいきます. まずはプラットフォームと言語を選択します.x64とかは64ビットマイクロプロセッサを指します.高性能なサーバ用のCPUのことなので,一般的なPCを使用している場合はx64がついてないプラットフォームを選択します. 言語はmulti-languageでいいと思います(選択できない).そしてライセンス契約書に同意のチェックを付けてContinueをクリックします. するとインストーラのダウンロードページに遷移します. オフラインインストール(インストーラをダウンロードする)とオンラインインストール(インストーラをダウンロードしない)を選択できます.オフラインインストールの場合はデスクトップにでもインストーラをダウンロードしましょう. JDKのインストール 環境変数の設定 JDKインストールの確認 トップページ
https://w.atwiki.jp/nikoava/pages/81.html
1.目的 このレポートは,AVAODL2014 Season1についての報告である。 2.概要 AVAODLの詳細はこちらに省略する。 この大会でリーグ優勝を目指す。 3.結果 最初に1日目の試合結果を載せる。 YouTubeに試合動画を掲載しているので,参考にしてほしい。 AVAODL2014 Season1 ビギナーEリーグ ニコ動ava隊 VS Fairy_doll - YouTube AVAODL2014 Season1 ビギナーEリーグ ニコ動ava隊 VS InnocenceP - YouTube AVAODL2014 Season1 ビギナーEリーグ ニコ動ava隊 VS Magnolia - YouTube AVAODL2014 Season1 ビギナーEリーグ ニコ動ava隊 VS DigitaL - YouTube 表1は一日目終了時の試合結果である。 表1 一日目終了時のビギナーEリーグ リーグ表 途中考察 このビギナーEリーグの優勝・準優勝枠はほぼ決定しているであろう。 axion vs DigitaL の試合がこのリーグの優勝決定戦と言っても過言では無いと思う。 次に2日目の各試合結果である。 AVAODL2014 Season1 ビギナーEリーグ ニコ動ava隊 VS axion - YouTube AVAODL2014 Season1 ビギナーEリーグ ニコ動ava隊 VS Z武命Z - YouTube AVAODL2014 Season1 ビギナーEリーグ ニコ動ava隊 VS BONDS - YouTube AVAODL2014 Season1 ビギナーEリーグ ニコ動ava隊 VS レッドドラゴン - YouTube 表2は2日間を通しての最終結果である。 表2 AVAODL2014 Season1 ビギナーリーグ Eリーグ 最終結果 4.考察 DigitaL VS axionはDigitaLの勝利で,優勝決定した。 あの2クランの強さは異常だった。てか,君達ビギナーじゃないでしょ。チャレンジリーグ行ってよ・・・ ニコ動ava隊は7位という結果だった。勝てそうな試合もあったが,負けは負けなので認めざるを得ない。 これからも個々の能力開発および,クラン戦での連携を高める必要がある。 しかし,ニコ動ava隊はガチでも微ガチでもないゆるゆるクランなので,極端に能力を求める必要性は無いだろう。 絶対に勝てないと諦めていた試合でも,1ラウンドは取れていることから,方法によっては強いクラン相手にも勝てる可能性を示している。 最後に,今大会では出場メンバー(metasequo,珈琲豆sp,もりさまー,戦犯たいちゃんsp,naoya1008)同士の連携(仮),大会という負けられない場でのプレッシャー,勝てそうでないときの対応などを学ぶことが出来たため,収穫が多い有意義な大会だった。 5.謝辞 ビギナーリーグ Eリーグの皆さん(DigitaL,axion,InnocenceP,レッドドラゴン,Magnolia,BONDS,Fairy_doll,Z武命Z)(敬称略),試合をしてくださりありがとうございました。 今後,野良部屋やマッチなどで出会ったらよろしくお願いします。 ※すでにラウンドでBONDSの方と何ゲームか遊んだmetaです。
https://w.atwiki.jp/nicocachenlwiki/pages/37.html
.javaファイルの実体は普通のテキストファイルと同じです。Java言語で書かれたプログラミングコードの羅列となっています。(Java ソースファイル ) コンパイル することで JVM (Java Virtual Machine、Java仮想マシン)上で実行可能な .classファイル ( Javaバイトコード ファイル)になります。 .jarファイルは多くの場合、複数のclassファイルと画像ファイル、テキストファイル、メタデータをZIP圧縮したアーカイブです。 JVMが バイトコード を ネイティブコード(機械語) に変換することで初めてコンピュータ上で実行可能になります。 コンピュータが直接解釈可能なのは機械語のみです。 JVMがWindows、Linux、SolarisといったOS間の差異を直接吸収します。 一つのJavaソースで多くの実行環境で動作させることが出来、環境ごとにプログラムを書き直す手間がありません。 JDKはJava Development Kitの略で、.javaファイルをコンパイルするツールを含んでいます。JREはJava Runtime Environmentの略で、Javaを実行させる為だけのキットです。 JDKはJREを内包しており、JDKをインストールすれば、JREと同等以上の効果を得られます。 NicoCache_nlではコンパイル前のJavaソースファイルが配布されるという性質上JDKが必要になります。 名前 コメント
https://w.atwiki.jp/kodan/pages/21.html
[java] JDKインストール [java] 用語 [java] リフレクション [java] javadoc作成 [java] スレッド名取得 [java] スレッド名取得2 [java] 型、キャスト [java] LOBファイル操作方法 [java] content-type設定 [java] Servlet [java] session [java] DataHandler [java] アノテーション [java] ファイルロック [java] Set [java] PostMethodのリダイレクト [java] InputStream⇒String
https://w.atwiki.jp/tamorintech/pages/14.html
別ページにまとめてるもの。 Javaのプリミティブラッパークラスはすべて不変である。 サーブレットのセッション管理(2012/3/18 旧ブログから移行) サーブレット・JSPのライフサイクル(2012/3/18 旧ブログから移行) 集約とコンポジション(2012/3/18 旧ブログから移行) サーブレットコンテナ(2012/3/18 旧ブログから移行) JNDIってどんなものなのか。(2012/3/7)何となくの理解。 Java -- DBでの日付・日時のデータについて。(2012/2/5 Evernoteから移行)DB側の話。 Java側の話。 上記からわかったこと! PATH環境変数とCLASSPATH環境変数は全く関係ないものなんですよ。(2012/2/4 旧wikiから移行) サーブレットの認証方式。(2012/2/4 旧wikiから移行) サーブレットはスレッドセーフに。(2012/2/4 旧wikiから移行) スレッドローカルとは。(ThreadLocal)(2012/2/4 旧wikiから移行) アノテーションとは。(2012/2/4 旧wikiから移行) 別ページにまとめてるもの。 log4j Android Javaのプリミティブラッパークラスはすべて不変である。 よって、ラッパークラスオブジェクトを参照値渡ししてメソッド内で計算しても、メソッド呼び出し側のオブジェクトには結果が反映されない。 private void exec() { Integer value = new Integer(5); System.out.println("メソッド実行前のint値 " + value.toString()); increment(value); System.out.println("メソッド実行後のint値 " + value.toString()); } private void increment(Integer integer) { // 内部的には // integer = new Integer( integer.intValue() + 1 ); // のようなことが行われている。つまりメソッド内のinteger は別の新しいオブジェクトを参照することになる。 integer++; System.out.println("メソッド内での計算結果 " + integer.toString()); } メソッド実行前のint値 5 メソッド内での計算結果 6 メソッド実行後のint値 5 サーブレットのセッション管理(2012/3/18 旧ブログから移行) 今日はホントにメモだけ!(時間ないからね!) サーブレット・JSPのライフサイクル(2012/3/18 旧ブログから移行) とりあえずメモだけアップしておく。まだ目的は達成してないけど・・・。 知りたいことは以下のこと。Tomcat(サーブレットコンテナ)がクラスをロードしたり、サーブレットのinit / service / destroy の呼び出しを行っている部分の詳細な動きが知りたい。 JSPリソースへのリクエストを受け取ったとき、それをJSPから変換したサーブレットへのリクエストへと切替えている部分の詳細な動き。 Tomcatはサーブレットのインスタンスをどのようにしてシングルトンで管理しているのか。 やっぱりTomcatのソースをじっくり読みたい・・・。 集約とコンポジション(2012/3/18 旧ブログから移行) 新人の後輩から質問されて答えられず。そもそも明確な違いは定義しにくく、「曖昧」らしい。 集約とコンポジション、Javaのコードに落とせばどちらも同じ。「全体」のメンバ変数に「部分」のオブジェクトが定義されていることになる。 上記は車クラスが「全体」であるのに対し、車体・エンジン・タイヤクラスが「部分」にあたる。ひし形の色は白なので集約の関連があることを表している。 車クラスをJavaコードにすると以下のようになる。 public class Car { private Body body; private Engine engine; private Tyre tyre; ・・・ } クラス図のひし形の部分が黒で塗りつぶされていて、コンポジションをあらわしていたとしても車クラスは上記と同じコードとなる(のはず)。 他の技術系の記事を参考にすると、コンポジションは両オブジェクト間のライフサイクルが同じ、もしくは強い依存の関係にある場合に使用する。 ということは、集約とコンポジションでJavaコードに違いが出てくるところと言えばオブジェクトの生成の仕方とかだろうか? 車クラスと車体・エンジン・タイヤクラスがコンポジションの関連にある場合、車クラスのコンストラクタで車体・エンジン・タイヤクラスのオブジェクトを必ずnewするとか。もしくはメンバ変数の宣言部でnewしちゃうとか。 public class Car { private Body body = new Body(); private Engine engine = new Engine(); private Tyre tyre = new Tyre(); ・・・ } まぁその辺りも想定するシナリオとかで変わってくる気がする…。 とにかく、集約とコンポジションの違いについて深く悩むことにあまり価値はないと自分に言い聞かせる。(笑) サーブレットコンテナ(2012/3/18 旧ブログから移行) サーブレットコンテナというキーワードで少し勉強した。一番知りたかったのは、「Webサーバ」と「サーブレットコンテナ」の機能の切り分け。 サーブレットコンテナについては前よりイメージがわいてきた。Servlet API / JSP API の参照実装(RI)であること。HttpServletの実装をTomcat等のサーブレットコンテナは持っている。 サーブレットのインスタンス化や破棄など、ライフサイクルの管理を行っていること。 3つの動作形態の種類があること。スタンドアロン型-サーブレットコンテナ自身がWebサーバを内蔵している。Tomcatはこれにあたるので、単体でサーブレットアプリケーションを動かせる。 内部プロセス型 外部プロセス型 Tomcatの設定ファイルを覗いてみるとなんとなく仕組みがわかってくる。なんとなくだが・・・ Connector がWebサーバ機能を担う定義なんじゃなかろうか。 他のWebサーバを使用するため、TomcatのWebサーバの機能をOFFにするにはserver.xmlの Connector 要素を削除するって書いてあったし。 ここでの機能は、クライアントからのリクエストをサーブレットコンテナ(エンジン)に渡すこと。 結局、Webサーバの詳細な機能ははっきりとわからなかった。サーブレットコンテナというキーワードを絡めずに、Webサーバそのものについて今後調べないと! ところで、サーブレットアプリケーションのメインプログラムは何なのか?Javaプログラムはmainメソッドの起動から始まる、と教えてもらったはず。ちょっと調べてみたところ、Tomcatの場合、Bootstrapクラスがそれに当たる模様。 確かにBootstrapクラスにはmainメソッドがあり、Tomcatの起動用スクリプトを見てみてもBootstrapクラスをjavaコマンドにより実行しているようだ。 ただこのBootstrap.classがbootstrap.jarとcatalina.jarという二つのjarファイルに存在する。 これは同じクラス(全く同じモジュール)と考えてよいのか? あ、ちなみにここまで、Tomcat 6についての話。。 5.5のディレクトリ中身を見てみたらまたちょっと違うようだ。あまり気にしなくても大丈夫かな…? JNDIってどんなものなのか。(2012/3/7) JNDIとはJava Naming and Directory Interfaceの頭文字を取ったもので、Javaから •ネーミング・サービス •ディレクトリー・サービス を扱うためのインターフェイスを規定した仕様です。 だそう。こういう定義は他でもいくつか目にするんだが、いまいちイメージがわかない。 何となくの理解。 本質ではなくwebアプリ(サーブレット)に限定した理解だが、DB接続をJNDIで行う場合は以下な感じ。DB接続情報(=DataSource)をサーバーの設定ファイル(Tomcatの場合はcontext.xml)に定義する。その実態はjava.sql.DataSourceクラス(のオブジェクト?)である。 Javaプログラムでは、java.naming.InitialContext#lookupメソッドで、定義したDataSourceを取得する。 DataSource#getConnectionメソッドでjava.sql.Connectionを取得し、DB接続が開始できる。 以下を読むと上記の実装例があり、どんなものかが少しわかった。ありがたい。http //www.javaroad.jp/opensource/js_tomcat8.htm http //blogs.yahoo.co.jp/kensinisnek/11707751.html Java -- DBでの日付・日時のデータについて。(2012/2/5 Evernoteから移行) DB側の話。 標準のSQL(?)では、日付・時刻のデータを持つカラムの型は以下のとおりとなっているようだ。DATA日付のみのデータを持つ。 TIME時刻のみのデータを持つ。精度(桁数?)は指定できる。 TIMESTAMP日付+時刻のデータを持つ。精度は指定できる。 Java側の話。 ここで扱う日付・日時に関するクラスの継承関係は以下のとおり。java.util.Datejava.sql.Date java.sql.Time java.sql.Timestamp java.util.Date日付と日時の両方のデータを持つ。時刻はミリ秒まで。 java.sql.Date日付のデータのみ持つ。基底クラス(java.util.Date)の時・分・秒・ミリ秒には0が設定される。 java.sql.Time時刻のデータのみ持つ。基底クラス(java.util.Date)の年・月・日には1970年1月1日が設定される。 java.sql.Timestamp日付と時刻のデータを持つ。時刻はナノ秒まで。 java.sql.ResultSetインターフェースについて。getDateメソッド:java.sql.Dateを返す。 getTimeメソッド:java.sql.Timeを返す。 getTimestampメソッド:java.sql.Timestampを返す。 上記からわかったこと! テーブルに対応するデータオブジェクト(エンティティクラス)を設計するとき、DBのDATE、TIME、TIMESTAMPのカラムに対応するプロパティは、java.sqlパッケージのクラスを使えってことだね。 PATH環境変数とCLASSPATH環境変数は全く関係ないものなんですよ。(2012/2/4 旧wikiから移行) PATH環境変数は、OSがプロンプトから入力されたコマンドに対するプログラムを検索する際の検索先である。 CLASSPATH環境変数はJavaソースのコンパイル時、プログラム実行時に必要となるクラスファイルを検索する際の検索先である。 よって2つはなんら関係ないものである。 サーブレットの認証方式。(2012/2/4 旧wikiから移行) サーブレットにおける認証方式の種類は以下のものがある。Basic認証:HTTPのBasic認証を使った方式。 Digest認証:HTTPのBasic認証を使うが、パスワードをダイジェストエンコードして暗号化する。 Form認証:HTMLのformを使ってユーザーIDとパスワードを入力する。 Client-Cert認証:クライアント証明書を使って認証を行う方式。 Tomcat標準のレルムレルムとは、ユーザーIDとパスワードをサーバー側でどのように管理するかの設定方法である。XMLベースのテキストファイルやデータベース等がある。 UserDatabaseRealmTomcatでデフォルトで設定されている方式。 ID、パスワード、ロールをtomcat-user.xmlファイルに記載する。 UserDatabaseに対して行った変更が変更情報としてtomcat-user.xmlファイルに書き込まれる? JDBCRealmID、パスワード、ロールをデータベースに格納し、JDBC経由で認証を行う。 JNDIRealmNIS、ActiveDirectory等のディレクトリサービスにID、パスワード、ロールを格納しJNDI経由で認証を行う。 DataSourceRealmJDBC経由で認証を行うが、JDBCへの接続にJNDIルックアップを使用する。 サーブレットはスレッドセーフに。(2012/2/4 旧wikiから移行) サーブレットのインスタンスは(基本的に)1つのみサーブレットコンテナにより作成される。 クライアントからの要求は複数同時に処理される。1リクエスト=1スレッドと考えてよい。 スレッドに関して、サーブレットコンテナは以下の特徴がある。サーブレットコンテナはスレッドプールを持っており、そこに複数のスレッドを蓄えている。 サーブレットコンテナはクライアントからリクエストを受け付けると空きスレッドを割り当て、サーブレットに渡して処理を移譲する。サーブレットのインスタンス数は1つである。 スレッドローカルとは。(ThreadLocal)(2012/2/4 旧wikiから移行) ThreadLocalは、スレッド毎の値を保持する為のクラス。 あるクラス(のインスタンス)がマルチスレッドで呼ばれる際に、スレッド毎に異なる値(インスタンス)を使いたい場合に使用する。 自分でThread(やRunnable)を使ってマルチスレッド化しているならスレッド毎の値が保持できるので、ThreadLocalを使用しても意味がない。 しかし、Webアプリケーション(サーブレット)は1つのインスタンスがマルチスレッドで呼ばれるので、そのスレッド毎に別のインスタンスを保持したいときはとても便利である。 アノテーションとは。(2012/2/4 旧wikiから移行) アノテーションとは、プログラムの動作に影響を与えない注釈、メタデータ。クラスやメソッド、パッケージ等に付与する。 コメントとの主な違いは以下のとおり。プログラムでアノテーションを読み取って処理できる。 アノテーションはコンパイラの動作に影響を与える。 標準アノテーションとして以下のようなものが定義されている。(J2SE 5.0)Override Deprecatedそのメソッドの使用が推奨されないことを示す。(Javadocの@deprecatedと同じ意味を持つ。) そのメソッドを使用するとコンパイル時に警告が出る。 SuppressWarningコンパイル時の警告を抑制する。 抑制する警告の種別はアノテーションの文字列配列の引数を渡すことにより指定が可能。 アノテーションの定義の仕方。「@interface」でアノテーションが定義できる。 以下のように型定義の本体が空のアノテーションをマーカーアノテーションという。 public @inteface Myannotation{ } 同じアノテーションをクラス、メンバ変数、メソッド、それぞれに適用できるようだ。 @Myannotation() public class TestMain { @Myannotation() private String var; @Myannotation() public static void main(String[] args) { } }
https://w.atwiki.jp/cz8686/pages/18.html
[Java]eclipseセットアップ ①フォントの設定 Windows ⇒Preferrence ⇒Fonts でText Fontを変更する。 ②JDKの設定 デフォルトでは、 JREのjava.exeが設定されているので JDKのjava.exeに変更する。 Windows ⇒Preference ⇒Java ⇒Installed JREs で Standard VMにJREがデフォルトチェックが 入っている これに インストールしてあるJDK1.4.XのJDKを設定する。 ●TOMCATプラグイン動作方法 ②のJDK設定の後、 Windows ⇒Preference ⇒Tomcat ⇒TOMCATの設定 でJREを変更したJDK1.4.xのものを指定する。 ●JSP.XMLの色分けプラグインの設定 (Solar Eclipse Web) Windows ⇒Preference ⇒Solar Eclipse Web で Add To List に xml を追加 [Java]HTTPでHTMLをゲット ■実行方法 以下の内容の.batファイルを作成、第一引数のURLのHTMLファイルを標準出力する。 java -Dhttp.proxyHost=proxy1.wwww.abc.co.jp -Dhttp.proxyPort=8080 DisplayURL2 %1 import java.io.*; import java.net.*; public class DisplayURL2{ public static void main(String[] args){ for(int i=0; i args.length;i++){ System.out.println("URL= "+ args[i]); try{ URL url = new URL(args[i]); BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream(),"Shift_JIS")); String line=""; while((line =reader.readLine()) != null){ System.out.println(line); } reader.close(); }catch(MalformedURLException e){ System.out.println("URLの形式が間違っています " + e); }catch(IOException e){ System.out.println("I/Oエラーです " +e); } } } }} [Java]JUnit使用例 ■JUnitのテスト画面起動 java junit.ui.TestRunner ■サンプルコード ●テスト対象クラス public final class Sample{ public int value = 0; Sample(int v){ this.value = v; } public int twice(){ this.value *= 3; //this.value *=2; return(this.value); } public int add1(){ this.value+=1; return(this.value); } } ●Sampleクラスに対するテスト実行クラス import junit.framework.*; public final class SampleTester extends TestCase{ public SampleTester(String name){ super(name); } protected void setUp(){ //ここで設定する } public static TestSuite suite(){ TestSuite suite = new TestSuite(); //テストケースを加える suite.addTest(new SampleTester("testAdd1")); suite.addTest(new SampleTester("testTwice")); return suite; } //テスト用メソッドの記述 public void testAdd1(){ Sample s1 = new Sample(10); s1.add1(); assert(s1.value == 11); } public void testTwice(){ Sample s1 = new Sample(10); Sample s2 = new Sample(5); assert(s1.value != s2.value); s2.twice(); assert(s1.value == s2.value); } } //end of SampleTester 使用法: SampleTester.classのあるフォルダから java junit.ui.TestRunner でGUIを起動し、 testclassnameに SampleTester と入力しRUNボタンを押す。 その結果が表示される。 [Java]MyDBAccess.java //package myjdbc; //import myjdbc.*; import java.sql.*; public class MyDBAccess { private String driver; private String url; private String user; private String password; private Connection conn; private Statement stmt; private ResultSet resultset; /** * コンストラクタ * @param driver ドライバー * @param url URL * @param user ユーザ名 * @param password パスワード * */ public MyDBAccess( String driver, String url, String user, String password) { this.driver = driver; this.url = url; this.user = user; this.password = password; } /*引数なしのコンストラクタ * 既定値の利用 * */ public MyDBAccess() { this.driver = "oracle.jdbc.driver.OracleDriver"; this.url = "jdbc oracle thin @192.168.1.1 1521 DB01"; this.user = "test"; this.password = "test"; // this.driver = "com.mysql.jdbc.Driver"; // this.url = "jdbc mysql //192.168.1.1/test"; // this.user = "root"; // this.password = ""; } /** * データベースへの接続を行う */ public synchronized void open() throws Exception { // Class.forName(driver); Class.forName(driver).newInstance(); conn = DriverManager.getConnection(url, user, password); stmt = conn.createStatement(); } /** * SQL 文を実行した結果の ResultSet を返す * @param sql SQL 文 */ public ResultSet getResultSet(String sql) throws Exception { if (stmt.execute(sql)) { return stmt.getResultSet(); } return null; } /** * SQL 文の実行 * @param sql SQL 文 */ public void execute(String sql) throws Exception { stmt.execute(sql); } /** * データベースへのコネクションのクローズ */ public synchronized void close() throws Exception { if (resultset != null) resultset.close(); if (stmt != null) stmt.close(); if (conn != null) conn.close(); } public static void main(String[] args) { MyDBAccess db = new MyDBAccess(); try { db.open(); ResultSet rs = db.getResultSet("SELECT * FROM LOGIN_TBL"); int i=0; while (rs.next()) { i++; String _user_id = rs.getString("USER_ID"); String _password = rs.getString("PASSWORD"); System.out.println(i + " "+ _user_id + "," + _password); } db.close(); } catch (Exception e) { e.printStackTrace(); } } } [Java]OracleJdbcTest1.java import java.sql.*; //import jdbc.sql.*; public class OracleJdbcTest1 { public static void main (String args []) throws SQLException, ClassNotFoundException { // Connectionの作成 Class.forName ("oracle.jdbc.driver.OracleDriver"); Connection conn = DriverManager.getConnection ("jdbc oracle thin @192.168.1.1 1521 DB01","scott", "tiger"); // OCIの場合 // DriverManager.getConnection ("jdbc oracle oci8 @TNSname","scott", "tiger"); // Statement の作成 Statement stmt = conn.createStatement (); // Resultset の作成 ResultSet rset = stmt.executeQuery ("select ENAME from EMP"); // データの表示 while (rset.next ()) System.out.println (rset.getString (1)); } } [Java]TripleDES DECODE import java.io.IOException; import java.io.PrintWriter; import java.net.URLEncoder; import java.net.URLDecoder; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; import java.text.SimpleDateFormat; import java.util.Date; import java.io.*; import javax.crypto.BadPaddingException; import javax.crypto.Cipher; import javax.crypto.IllegalBlockSizeException; import javax.crypto.NoSuchPaddingException; import javax.crypto.spec.SecretKeySpec; public class ANGO_DECODE { byte[] keyMaterial ={ (byte)0x12,(byte)0x12,(byte)0x12,(byte)0x12,(byte)0x12,(byte)0x12,(byte)0x12,(byte)0x12, (byte)0x12,(byte)0x12,(byte)0x12,(byte)0x12,(byte)0x12,(byte)0x12,(byte)0x12,(byte)0x12, (byte)0xAB,(byte)0xCD,(byte)0xAB,(byte)0xCD,(byte)0xAB,(byte)0xCD,(byte)0xAB,(byte)0xCD }; //暗号文 //ファイル読み込み String line = null; String ciphertext = null; int count = 0; try{ BufferedReader reader = new BufferedReader( new FileReader(args[0])); while( ( line = reader.readLine()) != null){ count++; ciphertext = line; // URLデコード処理 String a1; String a2; a1 = URLDecoder.decode(ciphertext); // System.out.println("a1=" + a1); // BASE64デコード処理 byte[] cipherbytes = a1.getBytes(); Base64 base64obj = new Base64(); byte[] base64decbytes = base64obj.decode(cipherbytes); String base64decodeStr = new String(base64decbytes); //System.out.println("base64decodeStr=" + base64decodeStr); // TripleDES復号化処理 // TripleDES鍵の生成 SecretKeySpec tdeskey = new SecretKeySpec(keyMaterial,"DESede"); // Cipherインスタンスの生成 Cipher desCipher = Cipher.getInstance("DESede"); // 初期化 desCipher.init(Cipher.DECRYPT_MODE,tdeskey); byte[] plainbytes = desCipher.doFinal(base64decbytes); String plaintext = new String(plainbytes); // System.out.println("plaintext "+ plaintext ); System.out.println(count + "," + a1 + "," + plaintext); } //for end reader.close(); }catch(NoSuchAlgorithmException e){ e.printStackTrace(); }catch(NoSuchPaddingException e){ e.printStackTrace(); }catch(InvalidKeyException e){ e.printStackTrace(); }catch(IllegalBlockSizeException e){ e.printStackTrace(); }catch(BadPaddingException e){ e.printStackTrace(); }catch(FileNotFoundException e){ e.printStackTrace(); }catch(IOException e){ e.printStackTrace(); } } } [Java]war アーカイブ作成方法 Jarツールを使って、Webアプリケーション全体をアーカイブします。アーカイブしたいWebアプリケーションのルートディレクトリに移動して、以下のコマンドを実行してください。 jar cvf WARファイル名 ./* WARファイル名は当然「.war」の拡張子が必要です。testというディレクトリ配下のWebアプリケーションを test.warというファイル名でアーカイブしたい場合は、testディレクトリに移動して以下のコマンドで行います。 jar cvf test.war ./* [Java]時間取得 import java.util.*; import java.io.*; import java.text.*; public class Utils{ // getNow("yyyy.MM.dd at hh mm ss"); public static String getNow(String dateformat){ SimpleDateFormat formatter = new SimpleDateFormat(dateformat); Date currentTime = new Date(); String dateString = formatter.format(currentTime); return dateString; } } [Java]日本語パラメータ %! public String toUnicode(String s) throws java.io.UnsupportedEncodingException{ return (new String(s.getBytes("8859_1"),"JISAutoDetect")); } % html body % String name= toUnicode(request.getParameter("name") ); %
https://w.atwiki.jp/kurowal/pages/13.html
java関連のブックマーク java覚え書き入出力 条件分岐 キャスト 書式 時刻表示 java関連のブックマーク java Platform, Standard Edition 6 javaの関数を調べれる javaの勉強 現在勉強中のページ EclipseとCVSの連携 Eclipseを用いて開発を行う際のCVS利用方法 java覚え書き 入出力 キーボード入力 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); br.readLine; ファイル読み込み BufferedReader br = new BufferedReader(new FileReader(new File(fileNameIn))); ファイル書き込み BufferedWriter bw = new BufferedWriter(new FileWriter(new File(fileNameOut))); 書き込みの最後に bw.flush(); bw.close(); をしておくこと。 エラー出力 e.printStackTrace(new PrintWriter(new FileWriter("log.txt"))); 条件分岐 swich文 switch( dayOfWeek ){ case 月 System.out.println("Monday"); break; default System.out.println("そのような曜日はありません"); } キャスト String - int Integer.valueOf(str).intValue(); 継承関係にあるクラスのダウンキャスト(親のオブジェクトを子のクラスにする) if(親の参照変数 instanceof 子のクラス名){ 子のクラス名 参照変数 = (子のクラス名)親の参照変数; } 書式 配列の宣言 データ型[] 配列名 = new データ型名[要素数]; データ型[] 配列名 = {初期値, 初期値, ・・・, 初期値}; インターフェース(インターフェース側) 修飾子 intergace インターフェース名{ 定数の定義 抽象メソッドの定義 } (戻り値 メソッド名(データ型 変数名);//例) インターフェース(実装側) class クラス名 implements インターフェース名{ メソッドのオーバーライド } 抽象クラス(スーパークラス側) abstract class クラス名{ } 抽象メソッド(スーパークラス側) public abstract 戻り値の型 メソッド名(引数リスト); (メソッド定義の後が{}でなく、;になっているので注意) 時刻表示 表示フォーマットの変更 String dateStr = (new SimpleDateFormat("yyyy/MM/dd HH mm ss")).format(new Date());
https://w.atwiki.jp/jiyuujin/pages/30.html
Javaへようこそ Javaの情報を載せるサイトです。 このページは自由に編集することができます。 画像情報やら、文字情報やら、コーディングまでいろいろ残していきましょう。 Java Official Cite まずはこちらをご覧ください。 Javaについて ~座学編 Javaについて ~プログラミング編 Android Java .NETとの比較 (NULL) Java .NET Platform Java SE/Java EE/Java ME .NET Framework (CLRとアセンブリ) 開発言語 OOP Basic/C++/C#/F#/JScript/WPFのUI部分 Client-side Webブラウザにダウンロード・実行 Server-side機能を削除した軽量なサブセット Android Javaとの比較 (NULL) Java Android Java 動作 JRE (JVM)上 Dalvik仮想マシン上 バグ・不具合を見つけたら? 要望がある場合は? お手数ですが、メールでお問い合わせください。
https://w.atwiki.jp/honeybe/pages/24.html
Temp JavaからOracleのストアドプロシージャ、ストアドファンクション、パッケージを呼び出す際の注意点 SQLデータ型とJDBCタイプコード、Java型の対応 標準JDBC 1.0 型 SQL型 JDBCタイプ 標準Java型 Oracle 拡張機能Java 型 CHAR java.sql.Types.CHAR java.lang.String oracle.sql.CHAR VARCHAR2 java.sql.Types.VARCHAR java.lang.String oracle.sql.CHAR LONG java.sql.Types.LONGVARCHAR java.lang.String oracle.sql.CHAR NUMBER java.sql.Types.NUMERIC java.math.BigDecimal oracle.sql.NUMBER NUMBER java.sql.Types.DECIMAL java.math.BigDecimal oracle.sql.NUMBER NUMBER java.sql.Types.BIT boolean oracle.sql.NUMBER NUMBER java.sql.Types.TINYINT byte oracle.sql.NUMBER NUMBER java.sql.Types.SMALLINT short oracle.sql.NUMBER NUMBER java.sql.Types.INTEGER int oracle.sql.NUMBER NUMBER java.sql.Types.BIGINT long oracle.sql.NUMBER NUMBER java.sql.Types.REAL float oracle.sql.NUMBER NUMBER java.sql.Types.FLOAT double oracle.sql.NUMBER NUMBER java.sql.Types.DOUBLE double oracle.sql.NUMBER RAW java.sql.Types.BINARY byte[] oracle.sql.RAW RAW java.sql.Types.VARBINARY byte[] oracle.sql.RAW LONGRAW java.sql.Types.LONGVARBINARY byte[] oracle.sql.RAW DATE java.sql.Types.DATE java.sql.Date oracle.sql.DATE DATE java.sql.Types.TIME java.sql.Time oracle.sql.DATE DATE java.sql.Types.TIMESTAMP javal.sql.Timestamp oracle.sql.DATE 標準JDBC 2.0 型 SQL型 JDBCタイプ 標準Java型 Oracle 拡張機能Java 型 BLOB java.sql.Types.BLOB java.sql.Blob oracle.sql.BLOB CLOB java.sql.Types.CLOB java.sql.Clob oracle.sql.CLOB ユーザー定義オブジェクト java.sql.Types.STRUCT java.sql.Struct oracle.sql.STRUCT ユーザー定義参照 java.sql.Types.REF java.sql.Ref oracle.sql.REF ユーザー定義コレクション java.sql.Types.ARRAY java.sql.Array oracle.sql.ARRAY Oracle 拡張機能 SQL型 JDBCタイプ 標準Java型 Oracle 拡張機能Java 型 BFILE oracle.jdbc.OracleTypes.BFILE 利用不可 oracle.sql.BFILE ROWID oracle.jdbc.OracleTypes.ROWID 利用不可 oracle.sql.ROWID REF CURSOR 型 oracle.jdbc.OracleTypes.CURSOR java.sql.ResultSet oracle.jdbc.OracleResultSet 対応外のものは使用不可能? すくなくともBoolean型は使用不可能。 参考: JDBC 開発者ガイドおよびリファレンス第3章:基本機能データ型マッピング 第19章:コーディングのヒントおよびトラブルシューティングPL/SQLストアドプロシージャのブール型パラメータ
https://w.atwiki.jp/note4recurrent/pages/29.html
2022/08/24 動的web html:httpサーバー(Apacheなど)がファイル(htmlやimg)を送り返すだけ。今どきのページではJavascriptで埋め込んだコンテンツ(動画など)を同時に送り返すものも多いが。 JAVAの動的web:httpサーバーからアプリケーション・サーバー上で実行されているプログラム(JAVAなど)を呼び出して実行された結果をhtmlで受け取とる。 JAVAの場合、サーブレットとJSPで実装される。 サーブレットはクラスファイル:JAVAのクラスの一種。htmlを出力するメソッドを持っているイメージ。 JSPファイルで中身はhtmlに近い。htmlにjavascriptを埋め込んだようなイメージ。 サーブレット javaプログラムとhtmlの部分以外は、決り文句なのでコピペでOK。 doGet(),doPost() で受け取る doGet はブラウザのアドレスバーから呼び出されたような場合やgetメソッドで呼び出された時に実行されるメソッド。 doPost()は他のサーブレットやJSP、htmlのリンクから呼び出された時に実行される。 htmlを書き出すときは「PrintWriter out = response.getWriter()」 で宣言したインスタンス(この場合はout)のprintlnメソッドにhtml文字列を引数として渡す。このパターンで覚えておけばいい(前に書いたものからコピペすればいい)。 サーブレットの特徴 サーブレットはメソッドだが、「サーバー上で実行」されたときにインスタンス化されているので、どこかでnewすることはない。サーバー上に常駐し、リクエストを待っている状態と考えればよい。 サーブレットはクラスなので、htmlの書き出し部分でもjavaで作った変数をそのまま使える。 サーブレットはJAVAのクラスなので、src配下に置く。 URLパターン:サーブレットを呼び出すためのURLは、基本的にはサーバー/プロジェクト名/サーブレット名と考えれば良い。サーブレット名はサーブレット内の@WebServlet("/ExServlet") に書かれる。 2022/08/29 前先生 JSP JavaServletPage Eclipsの管理上はhtmlと同じフォルダに置く。(授業ではWebContent)サーブレットと異なることに注意。 htmlにJAVAのコードを埋め込むような感じなので、凝ったレイアウトのhtmlファイルを作りやすい。作り込んだhtmlをもらってJAVAを埋め込むといった使い方が主流。 JAVAのifやloopでhtmlの出力を動的に変えることが可能。 サーブレットと同様、htmlとJSPの決り文句はコピペでOK。 コメントの書き方が異なるので注意。間違えると、画面に表示されたりサーバーエラーになる。 if分やfor分のブロックを閉じる閉じのカッコ” %}% ”を忘れやすいので注意。インデントを勝手にやってくれないので見ずらい。 練習問題 通常のJAVAクラスを作って、JSPから呼び出す練習をした。 import する必要がある。それ以外は普通のクラスの呼び出しと一緒。 Form html 部分は通常のhtmlファイルと同様。 submit を post でするとURLに入力した値は表示されない。getだと表示される。 ラジオボタンとチェックボックスの取得方法は次回。 2022/08/31 フォーム StringBuilder sb = new StringBuilder(); sb.append(value); ストリング変数に+で追加するよりメモリ効率が良く速い。Stirngはオブジェクトで+すると新しくオブジェクトを作って値を入れる。 forward は同じプログラム内のサーブレット、JSPしか呼べない Redirect は制限がない。ネットでつながっているところならどこでも呼べる。 下の行はコメントアウトすること //response.getWriter().append("Served at ").append(request.getContextPath()); knowledge.length 配列の個数を調べるときは()がいらない。普通はhensu.length() 2022/09/07 10章 練習課題:7章の例題をコピペすればOK。来週の修了テストもほとんど同じなので、回答をもらって名前とLogicを触ればいい(はず)。 model DataType データをやり取りするためのjavabeans(クラス):input,input2,input3とそれぞれのgetter,setterを持つだけ。 Logic 入力された文字列をつないでDataTypeのinput3にsetするだけのクラス(Control.javaの中で呼び出される:引数はDataType) servlet Control.servlet postを受けてDataTypeをnewし、Logicで文字列をつないでリクエストスコープにDataTypeを保存して、 result.jspをforward WebContent index.jsp 入力フォーム:postでControlに文字列を2つ投げるだけ Web-INF(フォルダ)jsp(フォルダ) output.jsp Control.servlet からforward で呼び出される。リクエストスコープに入っている DataTypeを受け取って表示するだけ。 2022/09/08 import java.sql.*; mySQLの場合 public static void m01() throws Exception { System.out.println( "===== m01() Mysql Sys に接続" ); Class.forName("com.mysql.cj.jdbc.Driver"); String dburl = "jdbc mysql //localhost 3306/sys?characterEncoding=UTF-8 serverTimezone=Asia/Tokyo"; String sql = "SELECT * FROM version"; ----テーブル名 Connection conn = DriverManager.getConnection(dburl, "root", "root");---MySQLのログイン情報 Statement statement = conn.createStatement(); //statement.executeUpdate(sql); ---select 以外 ResultSet rs = statement.executeQuery(sql);---select の場合 //結果の表示 while( rs.next() ) { String sysVer = rs.getString("sys_version"); String mysqlVer = rs.getString("mysql_version"); System.out.println( sysVer + ", " + mysqlVer ); } //開いた順番と逆に閉じる事 rs.close(); statement.close(); conn.close(); } MySQL につなぐための準備 connector/j をダウンロード https //dev.mysql.com/downloads/connector/j/8.0.html https //dev.mysql.com/downloads/file/?id=513221 "C \pleiades\tomcat\9\lib\mysql-connector-java-8.0.30.jar" ビルドパスの構成が必要になるので注意。(外部JARを追加する) ビルドパス>ビルドパスの構成(ダイヤログ)>ライブラリータブ選択>モジュールパスを選択>外部JARの追加ボタン>ファイルダイヤログでダウンロードしたJARを選択>適用して閉じる 動的webプロジェクト作成手順 スッキリわかるサーブレット&JSP入門第2版に合わせるための設定 java11,tomcat9 を使うこと ファイルメニュー「新規」:動的webプロジェクト プロジェクト名入力 ターゲット・ランタイム確認: 構成ボタンを押す javaのバージョンが一致しているか確認(今は11)。必要があれば修正 次へボタン 表示されているフォルダを選んで「除去」ボタンを押し消す 「フォルダーの追加」ボタンを押し、 「src」 を作成:「次へ」ボタン コンテンツ・ディレクトリーを「WebContent」に変更し完了 (出来上がったプロジェクトをパッケージ・エクスプローラーで開く) srcフォルダを右クリックし「新規」フォルダー:model srcフォルダを右クリックし「新規」フォルダー:servlet WebContentの中のWEB-INFフォルダを右クリックし「新規」フォルダー:jsp 運用 javaのクラスファイルはmodelフォルダに入れる servlet はservlet フォルダに入れる jspファイルはWebContent/ENF-WEB/jsp に入れる。ここに置いたjspファイルはservletから(redirect,forward)で呼ばないと開かない。 外部からアクセスできるjspは WebContent 直下に入れる スコープ:共有みたいなところ スコープにはインスタンス(クラスからnewしたもの)しか置けない。 intやdoubleは置けないが String はおける(Stringはそれ自体がオブジェクトだから)。 添付ファイル:macのファイルなのでwindowsで関係ないファイルが見えることがあるかもしれません。削除しても放置しても構いません。 Chap99.zip 基本 Chap99 -remake.zip フッターを動的インクルードで入れたもの JAVApdf Chap99の説明 java2.pdf 入力チェックの説明 2022/09/14 正規表現 数値でマイナスと小数点を受け付ける:"^[+-]?([1-9]\\d*|0)(\\.\\d+)?$"