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>
タグが属するパッケージ名はnamespacejspアクションラベル
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
Reference
この問題について(2022年04月18日), 我々は、より多くの情報をここで見つけました https://velog.io/@banana/2022-04-18월テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol