• 検索結果がありません。

第13回講義

N/A
N/A
Protected

Academic year: 2021

シェア "第13回講義"

Copied!
25
0
0

読み込み中.... (全文を見る)

全文

(1)

実装とサーバサイド

Java

13講

オブジェクト指向概論

立命館大学

情報理工学部

黄 宏軒

(2)

13.1 Javaによる実装

n

フォワードエンジニアリング

q

UMLによる表現をプログラミング言語による記述に変換

n

リバースエンジニアリング

q

プログラミング言語の情報を

UMLモデルに変換

User -name:String +getName():String

UML

public class User{ private String name; public String getName() {

return name; } }

Javaプログラム

User -name:String

UML

public class User{ private String name; public String getName() {

(3)

クラス定義の実装

UML

Java

クラス

class

パッケージ

package

汎化

extends

抽象クラス

abstract class

インタフェース

interface

実現

implements

package sample.domain; public class Cart {

}

public interface OrderService { }

public class OrderServiceSupport implements OrderService {

}

public class OrderServiceImpl extends OrderServiceSupport {

(4)

属性と関連の実装

1.

属性⇒インスタンス変数またはクラス変数へ

2.

多重度1の関連

public class OrderDetail {

private static int COUNT_MAX = 10; protected int qty;

private int totalPrice; }

public class CartItem {

protected item Item; }

(5)

3.

集約,コンポジション⇒(関連と同じように)

インスタンス変数へ

4.

多重度が*の関連⇒配列またはコレクションで

public class Class {

private Teacher teacher; private Student[ ] student; }

(6)

5.

多重度が*対*の双方向関連⇒

関連クラスにするのが良い

public class Write {

private Author author; private Book book; public class Author {

private Write[] write; }

(7)

n

オブジェクト図を描いているととわかりやすい

著者

書籍

執筆

1 1 0..* 1..*

Aさん:著者

Aさん:著者

Bさん:著者

Cさん:著者

ああ:書籍

いい:書籍

うう:書籍

ええ:書籍

おお:書籍

=執筆オブジェクト

(8)

操作の実装

n

UMLの操作⇒Javaのメソッド

public class Customer {

public static int ORDER_MAX = 10; private String customerID;

public void addOrder(Order order) { }

public Collection<Order> getOrders() { return this.orders;

(9)

n

シーケンス図のメッセージ送信⇒送信先のメソッド

public class OrderService {

public void order(String custID) {

Cart cart = cartDao.findByCustID(custID); Order order = cart.createOrder();

} }

(10)

13.2 Webアプリケーション

n

静的

Web

例:ホームページ

n

動的

Web

例:乗換え案内

ページの要求

ページの返却

HTMLファイル

処理の要求

結果の返却

乗車駅・下車駅取得

最短経路探索

結果表示ページ作成

(11)

CGI

Common Gateway Interface)

n

Webブラウザからの要求に応じて,対応するプログラムを

起動し,実行結果を

Webブラウザに返すしくみ

http://foo.com/

検索入力ページ

search.plプログラム

を起動

キーワード

検索

http://foo.com/cgi.bin/search.pl

検索結果

リスト

ページの枠に

検索結果を埋め込む

検索結果ページ

別プロセスとし

て起動される

利用者

PC

サーバー

(12)

13.3 Javaサーブレット

サーブレット

スレッドとして

起動される

サーブレットコンテナ

サーブレット

サーブレット

ページの枠に

検索結果を埋め込む

HTTP リクエスト

HTTP レスポンス

(13)

Webサーバソフト

n

Apache

q

Webサーバ(HTTPリクエストを処理する)ソフト

q

CGI機能を持つ

n

Apache Tomcat

q

JavaサーブレットやJSPを実行するための

サーブレットコンテナ(エンジン)

q

Apacheと連携させて動かすこともできる

n

IIS

q

Microsoftが提供するWindows用Webサーバソフト

q

ASPやASP.NETを実行することができる

(14)

Javaサーブレットの例

package jp.hattori.objectdev; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class SampleServlet extends HttpServlet{

private static final long serialVersionUID = 1L;

protected void doPost (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

response.setContentType("text/html; charset=Shift_jis"); request.setCharacterEncoding("Shift_JIS");

String str = request.getParameter("text1"); PrintWriter out = response.getWriter(); out.println("<html><body>"); out.println(str); out.println("<h3>あなたは,<blink>「" + str + "」</blink>と書きました.</h3>"); out.println("</body></html>");

HttpServletクラスを

継承してサーブレットを

作成

HTTPリクエスト(POST)

により起動されるメソッド

HTTPリクエストから

パラメータを取り出す

出力する

ページの作成

出力先の取得

(15)

doGet

( )と

doPost

( )

n

HTTPリクエストに対応して実行されるメソッド

半径=

4

送信

Public void doGet (request, response) {

// リクエストからデータを取り出す

request.getParameter(“radius”);

//HTML出力の生成

response.getWriter( );

半径=

4

面積=

50.24

HTTPリクエスト

HTTPレスポンス

(16)

デプロイメント記述子

web.xml

<servlet>

<description></description>

<display-name>SampleServlet</display-name>

<servlet-name>SampleServlet</servlet-name>

<servlet-class>jp.hattori.objectdev.SampleServlet</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>SampleServlet</servlet-name>

<url-pattern>/sample</url-pattern>

</servlet-mapping>

サーブレットクラス

サーブレット名

サーブレット名

対応する

URL

(17)

13.4 JSP

n

Javaサーブレット

q

Javaプログラムの中でHTMLを生成

n

JSP(Java Server Pages)

q

HTMLの中にJavaプログラムを埋め込む

(18)

JSPの例

<%@ page language="java" contentType="text/html; charset=windows-31j"

pageEncoding="windows-31j"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

"http://www.w3.org/TR/html4/loose.dtd">

<html>

<head><meta http-equiv="Content-Type" content="text/html; charset=windows-31j">

<title>JSP時計</title></head>

<body>

<h2>ようこそ,JSPの世界へ</h2>

ただいまの時刻は,

<% out.println(new java.util.Date()); %>

です.

</body>

(19)

JavaサーブレットとJSPの連携

n

Javaサーブレットで処理をして,結果をJSPで表示

// formview.jspに引き継ぐためAttributeにセット

request.setAttribute( “name”, janame );

// hello.jspに引き継ぐ

RequestDispatcher dispathcer =request.getRequestDispatcher( "hello.jsp" );

// フォワード

dispathcer.forward( request, response );

// パラメータの取得

String name = (String) request.getAttribute( “name” );

// データの表示

<dt>name</dt>

<dd><%= name %></dd>

サーブレット

(20)

13.5 JavaBeans

n

JavaBeans

とは

q

ある一定の命名規則と設計規則にしたがって作成された

Javaクラス

q

単体としては動作しないソフトウェア部品で,常に他の

プログラムから呼び出されて利用される

n

MVC (model, view, controller)モデルの実現

Javaサーブレット,JSPから

ビジネスロジックを

JavaBeansとして独立させる

(21)

MVCモデル

n

本講義で前提とするソフトウェアアーキテクチャの

モデル

ブラウザ Controller View Model DB

①クライアントからの

入力 (

http request)を

Controllerが受ける

②Controllerが入力を

解釈して,

Modelに

処理を依頼する

ControllerがViewを

呼び出し,

Webページの

生成を依頼する

ViewはModelの処理

結果を 参照する

Viewはクライアントに出力

(http response)を返す

クライアント

Javaサーブレット

サーバ

JavaBeans JSP

(22)

Javaサーブレット,JSP, JavaBeans

Public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

// JavaBeansを生成

HellowWorldBean samplBean = new HellowWorldBean();

ServletContext application = this.getServletConfig() .getServletContext();

// サーブレットコンテクストに格納

application.setAttribute(“HellowBean”, sampleBean);

<jsp:uawBean id=“HellowBean” class=”myBeans.HellowWorldBean”

scope=“application” />

// JavaBeansの使用宣言

<html><head><title>HelloWorldBean</tiutle></head> <body>

<jsp:getProperty name=“HellowBean” property=“greeting” />

// データの取得

サーブレット

(23)

13.7 Javaとデータベース

(24)

DAOパターンによるデータアクセス

n

DAO(Data Access Object)

q

システムのドメインロジックとデータ(ベース)の

アクセスを分離させる

q

データベースからオブジェクトを取得したり,データベース

へオブジェクトを格納する

q

DAOへの依頼にはSQLを使わない

q

DAOは一つのテーブルに対応させる

ロジック

データアクセスレイヤ

データベース

予約テーブル 予約テーブルDAO

SQL

(25)

JDBC

n

JDBC

Java DB Connectivity)

q

JavaからDBをアクセスするためのAPI

q

MySQLなどでは,DBは別プロセスとして動かすので,

プロセス間通信となる

DB

データベースサーバ

Webサーバ

“select * from customer_tbl”;

検索結果

doGet(…) {

….

String sql = “select * from customer_tbl”;

rs =

st.executeQuery(sql)

;

参照

関連したドキュメント

In this diagram, there are the following objects: myFrame of the Frame class, myVal of the Validator class, factory of the VerifierFactory class, out of the PrintStream class,

If the above mentioned goods, exempted from customs duty and internal tax, are offered for use other than the personal use of yourself or your family, within 2 years after the

[r]

This agreement is expected to promote greater freedom in movement of goods, services, and capital between Japan and Chile, and foster comprehensive economic cooperation,

A carnet is an international, unified Customs document under an international system based on “Customs Conventions on the Temporary Importation of Private Road Vehicles”

[r]

第7回 第8回 第9回 第10回

Should Buyer purchase or use SCILLC products for any such unintended or unauthorized application, Buyer shall indemnify and hold SCILLC and its officers, employees,