Java サーブレット・JavaBeans・jspが連携するサンプル

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)

△上に戻る