2022年04月18日

16805 ワード

MVCモデル1の制限


クライアント・デバイスの多様化->要求される応答データ・フォーマットの多様化.
PC、Android、iOSなど
デバイスの多様化->応答データフォーマットの多様化
PC -> HTML, CSS, JS
移動->XML,JSON
その他->Excel、PDF、JPEG
Web Browser → list.jsp → BoardService → BoardDao → MyBatis → JDBC Driver → DBMS
Androd/iOS → list_xml.jsp → BoardService → BoardDao → MyBatis → JDBC Driver → DBMS
その他→list json.jsp → BoardService → BoardDao → MyBatis → JDBC Driver → DBMS
•サービスオブジェクトを使用する前に入力データのコードを加工する
•出力データのコードの準備
•サービス・オブジェクトを呼び出すコード
繰り返し
重複コードを削除する必要があります!
モデル1の構造の改善
モデル1からモデル2へ進化

MVCモデル2が出現


モデル1の限界を克服する
「入力/出力データ加工、サービスオブジェクト呼び出しコード」の問題を繰り返す
BoardListController → BoardService → BoardDao → MyBatis → JDBC Driver → DBMS
Webページが必要な場合はlistを選択します.jspの実行
xmlが必要な場合はlist xmlです.jspの実行
JSONデータが必要な場合はlist json.jspの実行
PDFが必要な場合はlist pdfを使用します.jspの実行
真ん中でどのjspを実行するか
実行するビューの制御
🔹 コントローラの役割
•加工入力データ
•サービス・オブジェクトの実行
•出力データの準備
•ビュー
🔹 Viewロール
完全に出力するデータの加工に専念

MVCモデル2例-投稿リストの表示


BoardListControl:出力データの準備
forward
list.jsp:リストの作成と出力ページ
jspにはサービスオブジェクトへのリンクがありません
コントローラだけがそのことをします.
http://localhost:8080/board/list?pageNo=1&pageSize=5
同じurlを同時に指すことはできません
getAttributeの戻りタイプはオブジェクトなので、シェイプを変換する必要があります
Board board = (Board) request.getAttribute("board");
http://localhost:8080/board/list
jspリクエストではなくコントローラにリクエスト
MVCモデル2では、すべてのリクエストをコントローラが受信する必要があります
jspに受信させない
一貫性が重要
同じ方法でメンテナンスするのが便利です
http://localhost:8080/board/detail?no=62xxx
<jsp:useBean id="pageNo" type="java.lang.Integer" scope="request"></jsp:useBean>
<jsp:useBean id="pageSize" type="java.lang.Integer" scope="request"></jsp:useBean>
<jsp:useBean id="totalPageSize" type="java.lang.Integer" scope="request"></jsp:useBean>
<jsp:useBean id="list" type="java.util.List<Board>" scope="request"></jsp:useBean>
タグが属するパッケージ名はnamespace
jspアクションラベル
→javaコード(.java)
namespace:属するグループをマークします.Javaのパッケージと似たような概念です.
例1)
<jsp:include page="url"/>
→ 자바 코드 생성 →
request.getRequestDispatcher("url").include()
例2)
typeにはフルネームを記入する必要があります.上にimportはありません.
<jsp:useBean id="객체명" type="클래스" class="클래스" scope="보관소"/> 

→ 자바 코드 생성 →

java.util.List<Board> list = (java.util.List<Board>) request.getAttribute("list");
if (list == null) {
  list = (List<Board>) new ArrayList();
  request.setAttribute("list", list);
}
jspエンジン

特定のjavaコードの生成
<jsp:useBean id="board" type="com.eomcs.mylist.domain.Board" class="com.eomcs.mylist.domain.Board" scope="request"></jsp:useBean>
typeとclassが同じ場合はclassのみ入力できます
感嘆符は表示されません
https://search.maven.org/artifact/javax.servlet/jstl/1.2/jar
implementation 'javax.servlet:jstl:1.2'


「jstl使用法」の検索
以前
for (Board board : boards) {
%>
  <tr>
    <td><%=board.getNo()%></td>
    <td><a href='detail?no=<%=board.getNo()%>'><%=board.getTitle()%></a></td>
    <td><%=board.getWriter().getName()%></td>
    <td><%=board.getViewCount()%></td>
    <td><%=board.getCreatedDate()%></td>
  </tr>
<%
}
後.
<c:forEach var="board" items="${requestScope.list}">
  <tr>
    <td>${board.getNo()}</td>
    <td><a href='detail?no=${board.getNo()}'>${board.getTitle()}</a></td>
    <td>${board.getWriter().getName()}</td>
    <td>${board.getViewCount()}</td>
    <td>${board.getCreatedDate()}</td>
  </tr>
</c:forEach>

EL (Expression Language)


OGLLシンボルを使用してオブジェクトのgetterを呼び出す

ELと電子倉庫


/Users/nana/git/eomcs-java/eomcs-servlet/app
eomcs-java/eomcs-servlet/app