Javaのサーブレット・JavaBeans・jspが連携するサンプルです。
(確認環境:Windows10,Eclipse4.6 (JavaEE),apache-tomcat-8.0.39)
目次
サンプル | サンプルの環境 |
サーブレットのファイル(Test1.java) | |
JavaBeansのファイル(Color1.java) | |
jspのファイル (EL式を使用)(test1.jsp) | |
jspのファイル (EL式を使用しない)(test1.jsp) |
サンプルの環境
3つファイルがあります。
・Test1.java・・・サーブレットのファイル
・Color1.java・・・JavaBeansのファイル
・test1.jsp・・・jspファイル
ページ表示時のアクセスの順番は、Test1.java → Color1.java → test1.jspです。
URL
アクセスするURLは以下です。
http://localhost:8080/test2/testjava
URLの意味は、localhost:Tomcatのポート番号/プロジェクト名/ソースコードの中に記述した@Webservletの値です。
Webコンテナ
サーブレットやJSPを動かすためには、Web用のプロジェクトとTomcatなどのWebコンテナが必要です。
Eclipseで動的Webプロジェクトを作成する手順
EclipseにTomcatを登録する手順
サーブレットのファイル(Test1.java)
package test1;
import java.io.IOException;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/testjava")
public class Test1 extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
Color1 cr1 = new Color1();
cr1.setColor("赤黄青");
request.setAttribute("cr1", cr1);
ServletContext sc = getServletContext();
sc.getRequestDispatcher("/WEB-INF/test1.jsp")
.forward(request, response);
}
}
18,19行目は、JavaBeansを生成し値をセットしています。
21行目は、JavaBeansをリクエストにセットしています。
25,26行目は、jspファイルにフォワードしています。
11行目の/testjavaは、URLでアクセスする時に使用します。
JavaBeansのファイル(Color1.java)
package test1;
import java.io.Serializable;
public class Color1 implements Serializable{
private static final long serialVersionUID = 1L;
private String color;
public Color1(){
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
}
以下はJavaBeansの仕様です。
・Serializableインターフェースを実装します。(5行目)
・メンバ変数はprivateをつけ、クラスの外部からアクセスできないようにします。(8行目)
・publicで引数のないコンストラクタを持ちます。(10行目)
・ゲッター/セッターでprivateにしたメンバ変数の値を取得、設定します。(13,16行目)
jspのファイル (EL式を使用)(test1.jsp)
<%@ page contentType="text/html; charset=UTF-8"%>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
</head>
<body>
<%-- コメント --%>
<p>EL式です=${cr1.color}</p>
</body>
</html>
jspのコメント : <%-- 文字列 --%> |
9行目は、jspのコメントです。Javaのコメントなのでブラウザには表示されません。
htmlのコメントは、「<!-- 文字列 -->」です。
EL式 : ${ 式 } |
10行目の${cr1.color}はEL式です。値にアクセスできます。
画面には、EL式です=赤黄青 と表示されます。
EL式とは
EL式は、簡易に書ける構文です。
従来のスクリプトレット(<%・・・%>)に代わります。JSP 2.0で導入されました。
EL式は、式言語ともいいます。
jspのファイル (EL式を使用しない)(test1.jsp
<%@ page contentType="text/html; charset=UTF-8"%>
<%@ page import="test1.Color1" %>
<%
Color1 cr0 = (Color1)request.getAttribute("cr1");
%>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
</head>
<body>
<p>テスト=<%=cr0.getColor() %></p>
</body>
</html>
ディレクティブタブ : <%@ ~ %> |
1,2行目は、pageディレクティブです。ディレクティブタブは設定を記述します。
スクリプトレット : <% Javaのコード %> |
4行目は、requestオブジェクトとgetAttributeメソッドでオブジェクトを取得しています。
スクリプトレットと呼ばれます。
式タグ : <%= ~ %> |
13行目は、getColorメソッドで値にアクセスしています。式タグと呼ばれます。
末尾はセミコロンなしです。
画面には、テスト=赤黄青 と表示されます。
暗黙オブジェクト
4行目のrequestは、暗黙オブジェクトです。
JSPで用意されているオブジェクトです。そのまま使用できます。
関連の記事
Java サーブレットのセッションのサンプル(getSession)
Java JSTLのカスタムタグの導入と使用例のサンプル(core,i18n)