[java: note] java8 knowledge note. #java
https://paiza.jp/works/java/primer
型 変数名 = "hoge";
Integer age = 20;
/ int age = 20;
String name = "yamada";
""
を利用
''
は CHAR のリテラル宣言なので String にならないことに注意public class Main {
public static void main(String[] args) throws Exception {
int price = 100;
String item = "Apple";
// 標準出力 - Eclipse のコンソールとかで軽くプリントデバッグ
System.out.println("This " + item + " is " + price + " yen");
}
}
//①お決まりのインポート文(Eclipseでサーブレットクラスを作成すると自動で書いてくれる)
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
//②サーブレットクラスを作るにはサーブレットクラスの元になるHttpServletクラスを継承する必要がある。
public class Sample extends HttpServlet{
//③サーブレットクラスがGETで呼ばれた場合のdoGetメソッドをオーバーライドする。書き方は基本このお決まりの書き方になる。
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException{
//処理を書く
// TODO Auto-generated method stub
response.setContentType("text/html; charset=UTF-8");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head>");
out.println("</head>");
out.println("<body>");
out.println("<p>Hellooooo!</p>");
out.println("</body>");
out.println("</html>");
}
//④サーブレットクラスがPOSTで呼ばれた場合のdoPostメソッドをオーバーライドする。書き方は基本このお決まりの書き方になる。
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException{
//処理を書く
}
}
WriteOnce,RunAnywhereなサーバサイド制定型付け純粋オブジェクト指向言語。コンパイル・ビルド→Java中間コード生成→Java実行用VMにて実行な流れを辿るみたい。
JSP(Java Server Pages)と言って、PHPなどと同じようにタグを使ってhtml内にそのまま記述出来るもの。いってしまえばJavaのビューヘルパー・HTMLテンプレートエンジン的な感じ。XMLで定義した独自タグを使ったりCakePHPのHTMLヘルパーみたいなJava Beans というものが扱える。
サーブレットは、Javaを使ってサーバサイドプログラムを作るための技術。WEBサービスなどをJavaで作る場合には、必須。サーブレットおよびJSPを使うには、JavaEE環境が必要。
サーブレットはブラウザからリクエストがあるとアプリケーション・サーバーがサーブレットクラスのインスタンスを生成する。CakePHPなどのMVCFWのControllerのようなイメージで、このクラスに処理を実装しビューとしてJSPを呼び出すような設計にする。(当然、JavaMVCフレームワークではModelも別途用意する)
ちなみに、サーブレットからJSP、または他サーブレットへのフォワードをする際のHTTPリクエストのパラメータ値などの値の受け渡しは、リクエストスコープという「リクエストを受けてサーバがレスポンスをするまでの間だけサーバが値をメモリ保持する」仕組みでなりたっている。
毎回リクエストの度にインスタンスを生成するのはサーバーに負荷がかかるため、一回目作ったインスタンスをリクエスト応答後も破棄せずに次のリクエストでも再利用する。(サーバーが終了するなどの時にインスタンスがサーバーによって破棄される)
JSPはJavaサーバーがJSPのコードを読み込み、それをサーブレットのソースコードに変換。HTMLのタグなど、すべてprintlnで書きだすように変換される。そして、生成されたサーブレットのソースコードからJavaクラスファイルを生成してそれを呼び出す。
JSPファイル ⇒ サーブレットファイル ⇒ クラスファイル ⇒ 実行
ブラウザからのリクエストを受け取る役割(サーブレット)
レスポンスとして返すファイル(JSPファイル)
実際の処理を行う役割(普通のjavaクラス)
サーブレットを呼び出す際のURLは以下の仕組みになっている。
http://サーバー名/アプリ名/URLパターン
URLパターンというのはサーブレットクラスでつけるエイリアス。サーブレットクラスでURLパターンを設定しておくことで、それをURLとして呼び出すことができる。このURLをhtmlのaタグのhref属性やformのaction属性に設定すれば、サーブレットへ飛ばせる。
Javaにはリダイレクトの他にフォワードという別ファイル処理へのGoToみたいなものを使う。
Gulpとかのフロントエンド系のビルドツールは使えません。AntとかのJavaビルドツールがあり、これがEclipseなどのIDEと対応しているので、Eclipse+Antでビルドしながら開発するのがベター。
以上3点を基本概念としてSun社が開発→MSがパクッてもめる→GoogleがAndroidで採用し独自VMやらプラットフォームとか作る→Sun社がOracleに買収される→OracleがGoogleのJavaに文句つけてる←いまここ。
基本サーバ上で動かします。WEBサーバで動かす場合はJavaサーブレット(WEBサーバでJava?俺が仲介して動かしてやんよ!的なアプリケーションサーバさん、Tomcatとか)で駆動させる。昔JavaアプレットとかいうクライアントサイドJava動かすVMがあったが今は死に絶え非推奨となりました。あと、機能セット/プラットフォーム/実行環境/仕様的な意味でのフレームワークが大きく4つあったんだけど...大体全部JavaSEに統合される流れらしい。
ApacheのStrutsが発端ぽい(今は古すぎて微妙)。今はSpringやPlayFrameworkとかが今風で、堅いのはJSF。 ※AndroidはGoogleが提供するAndroidプラットフォーム(Andorid SDK)がJavaSEとAndroidAPI群との橋渡しをしてくれる。その間に緩衝材として入るようなMVCフレームワークで有力なものはいまのところない。
http://techfun.cc/java/windows-eclipse-install.html