【サーブレット】
・サーバ上で動くJavaのプログラムのこと。
・プロトコル→HTTP:webサイトを見るときの規約
・アプリケーションサーバ → プログラムを実行するためのサーバ
・webサイトと連動して利用。
ユーザの入力内容を元に何か操作をさせる時活躍。
リクエスト情報の必要なものを適宜受け取り処理をする。
今回は「eclipse」の中に「tomcat」を利用。
・JSP(サーブレット) → HTMLの基本の書き方ができる。(一部違う)
1 2 3 4 5 |
//JSP式 <%= 1つの式のjavaのコードを記述 %> //スクリプトレット <% 複数行のJavaコード記述 %> |
【webアプリケーションではセットで使う↓】
サーブレット:画面上に見えない処理(*画面上に見せることも出来るが、書き方が複雑)
JSP:画面上に見える処理(サーブレットを利用しやすくしたもの)
【Java SE】基本的なjavaの開発環境
【Java EE】企業向けの開発環境(サーブレット実装可)
【Java ME】組み込み用の開発環境
【webアプリケーションの構成】
MVCモデル・・・アプリケーション(物)づくりの基本概念
Model・・・webアプリケーションの細かい具体的な処理を実行。(Java)
View・・・ブラウザに対して処理結果を表示(JSP, HTML)
Controller・・・クライアントからリクエストをうけとり、Modelやviewなどに必要な処理の命令をする。(サーブレット)
↑プログラム作成の3つの役割
【eclipse動的プロジェクトを利用】
1.動的プロジェクトを作成
2.サーバ接続先の追加、サーバ起動
3.ファイル作成
4.ブラウザ上で確認
1 |
http://localhost:ポート番号/コンテキスト名(アプリケーション名)/ファイルのパス |
*eclipseの場合、ファイルのパスは「WebContentフォルダー」から数える。
*WebContentはURLに記述しない!
【404エラー】リクエストしたファイルが見つからない。
【500エラー】プログラム上の何らかのエラーが発生。(例外処理をしていない場合も発生)
【ウェルカムファイル】
URL上でファイル名を記述しなくても表示されるもの。
例:index.html とか(サーバ上で設定されているもの)
*eclipseの場合・・・「WebContent」→「WEB-INF」→「web.xml」内に設定!
*見えるもの(HTML、JSP)に関するファイルは・・・「WebContent」に設置!!
1 2 3 4 5 6 7 8 |
<welcome-file-list> この中にファイル指定!下記例↓ <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> |
*web.xml を変更後は必ずサーバの再起動が必要!
【サーブレット作成・実行】
1.アプリケーション内にサーブレットのファイルを設置
*eclipseの場合・・・「Java Resources」→「src」に設置!
*作成時「サーブレット」を選択すると自動的に必要なコードを記述したものができる!
2.「web.xml」にサーブレット接続の記述をする。
*1で「サーブレット」を選択して作成した場合は不要
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<servlet> /*下記2つは省略可*/ <description></description> <display-name>HelloServlet</display-name> /*下記2つ必須!*/ <servlet-name>nemu_kye</servlet-name> //<servlet-mapping>の<servlet-name>と一致するものを検索!:任意 <servlet-class>HelloServlet</servlet-class> //実行するクラス名 </servlet> /*サーブレットを実行するてめのURL記述*/ <servlet-mapping> <servlet-name>nemu_kye</servlet-name> //<servlet>の<servlet-name>と一致!:任意 <url-pattern>/hello</url-pattern> //入力URL!:任意 </servlet-mapping> </web-app> |
3.サーバ再起動!
【<servlet>タグ内の書き方注意!!】
<servlet-class>サーブレットのファイル名</servlet-class>
↑デフォルトパッケージの中にある場合の書き方!
<servlet-class>パッケージ名.サーブレットのファイル名</servlet-class>
↑パッケージ内にある場合は「.」でつなぐ!!
【サーブレットクラス】
1.HttpServletクラスを継承
2.doGet()メソッドをオーバーライト(*doPost()メソッドの利用も可能!今回は省略。)
3.オーバーライトしたメソッド内のロジックを記述
*オーバーライト・・・クラスを継承した時、スーパークラスで定義されているメソッドをサブクラスにて同じメソッド名(と同じ引数)で書き換えること。(つまり上書きするということ)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
public class OracleServlet2 extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 例:処理内容 Oracle2 ora = new Oracle2(); String result = ora.getResult(); PrintWriter out = response.getWriter(); //文字の出力をする場合必須! out.println("your fontune is " + result); } } |
【HTMLを出力するサーブレット】
1 2 3 4 5 6 |
/*記入例以下のHTMLタグを認識する*/ response.setContentType("MIMEタイプ; charset=文字エンコーディング"); PrintWriter out = response.getWriter(); /*記入例↓*/ out.println("<HTML>"); //ブラウザ上に表示されない! |
《MIME(マイム)タイプ:一例》
1 2 3 |
テキスト・・・text/plain HTML・・・text/html |
《文字エンコーディング:一例》
1 2 |
UTF-8 Shift_JIS |
【web.xmlの基本】
1 |
XML(eXtensible Markup Language)・・・タブを使って構成。 |
【XML宣言】
1 2 3 |
<? バージョンなど宣言 ?> 例: <?xml version="1.0" encoding="UTF-8"?> |
<books> コードをまとめる </books>・・・ルート要素は1つのXML宣言に1つだけ記載!
<!– –> ・・・XMLコメント
・大文字、小文字を区別する!
【↓<web-app>要素で囲む】
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
記入例: <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <display-name>jsp_test</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <servlet> <servlet-name>test01</servlet-name> <servlet-class>HelloServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>test01</servlet-name> <url-pattern>/servlet/test01</url-pattern> </servlet-mapping> </web-app> |
【サーブレットのバージョン】
「2.5」なければ「2.4」を選択!
バージョンが古いとJSPの動作がうまくいかない場合がある!
関連記事
研修Servlet 03: JSP、入力パラメータ取得、フィルタ、ディスパッチ
研修Servlet 04: JSP、インクリード、スコープ、EL式、JSTL
ピンバック: 研修Servlet 04: JSP、インクリード、スコープ、EL式、JSTL – 原始人みかこのIT奮闘記