[TIL] JSP & Servlet 01


開始前の基本概念


jspとservletの正式な学習を開始する前に
クライアントとサーバ間のWeb動作の理解

既存のユーザであるエンドユーザとサーバとの間の通信は、上記のようになっている.
ここでDBをマークしてフォーマットします.以下のようにします.

WEB通信



クライアントは画面のフロントエンドであり、主にhtml、css、jsを使用し、jsの使用と構造化を容易にするために応答する.js, vue.jsなどを使用します.
また,ここでは,ユーザとの可用性を考慮してコードを構造化し,サーバが応答するデータをAjaxを介してJSONファイルを受信して効率的に処理し,画面に表示される速度と効率を考慮した場所がフロントである.
サーバは、クライアントから要求されたデータをデータベースとともに処理して応答する画面のバックエンドである.トラフィックが大きくてサーバーが爆発したとき、そのサーバーはここです.
また,クライアント要求を迅速に処理するために論理を記述しコードを記述する場所がBeckAndである.
DBはデータを保存する場所であり,ここで大量のユーザデータを蓄積するとビッグデータとなる.
このように多くのデータを管理するには、ビッグデータアナリストと呼ばれる専門的な人材が必要です.

WAS通信


WASを理解するには,静的ページと動的ページの違いを理解する必要がある.

静的ページは、クライアントの要求に応じて、データベース内のデータを読み出してページに戻る方法です.だからあなたはいつも同じページを展示します.つまり、コンピュータに格納されているファイルを必要に応じてロードして表示することができます.
つまり、WEB SERVERのみを使ってhtmlで書かれたページを書き出します.
ユーザのニーズに応じて適切な機能を動的に提供することはできない.
ダイナミックページは、クライアントが要求するパラメータに応じて変更されるダイナミックコンテンツを返す方法です.Webサーバ内で実行されているプログラムが生成した結果を返すだけです.

つまりWASにはWEB SERVERとWEB CONTAINERが存在する.
WEB SERVERはまずクライアントからリクエストを受けます.
予め作成したhtmlページに戻るだけで、
WEB SERVERは、データベースからファイルをロードし、クライアントに提供します.
WEB SERVERのみでは扱いにくい動的変化はhtml処理ではなくプログラミング言語を使用する必要があるため、WEB CONTAINERではJSP、ASP、PHPなどの言語でデータベースに必要なデータを処理し、演算後htmlファイルに変換してWEB SERVERに提供し、計算したhtmlページをクライアントに返す.

JSPとサーブレットの違い


上のWASでは,プログラミング言語で処理されるWEB CONTAINERによって駆動される言語は,どちらもJavaに基づいて記述されている.
ただ.
JSPはhtmlベースの構造でJavaコードを内部的に記述し,コード分離が良好である.

JSPサンプルコード

<html>
<head>
</head>
<body>
<p>....</p>
<% 자바코드 작성 %>
</body>
</html>
サーブレットはjavaコード内にhtmlコードを記述する必要があるため,コードを分離することは困難である.

サーブレットサンプルコード

PrintWriter out = response.getWriter();
out.print("<html><body>");
out.print("<p>...</p>");
out.print("</body></html>");
上図に示すように、jspはhtmlコードでjavaコードを領域に分割して記述することができる.
サーブレットはprint関数に「」と文字列で書き込まれます.

JSPとサーブレットの使用遷移


  • 初期servletとしてのみ符号化

  • Jsp登場
    =>jsp(コラボレーションの問題)

  • Jsp+servletの併用
    =>jspはUIを担当し、servletは論理を担当する

  • Jsp+servlet+classと併用
    =>jspはui、servletは論理、classはデータ:MVC
  • JSPとサーブレットMVCモード


  • モデル→データ
    =>クラス:javaコード

  • View - UI
    =>jsp:javaコードを除く

  • コントローラ-論理
    =>サーブレット:javaコード
  • 上記のように使い分けると、一つのトレンドになります.

    番外)get,post要求方式


    クライアントがWebサーバにページを要求する方法にはgetとpostがある.
    getはurlにパラメータを直接入力し、サーバに渡します.
    postはurlでは表示されずhtmlヘッダで伝達され、get方式よりもデータセキュリティの面で強い.
    最近ではpost方式に加えてhttpという通信規則のほかhttpsというセキュリティ強化された通信規則を用いてhtmlファイルを暗号化して伝送している.
    htmlで
    formラベルのmethodをget/postのいずれかとして選択し、転送するパラメータを選択し、各入力ラベルのname属性にパラメータを入力し、その値をパラメータとして渡します.
    フォームタグコード
    <form method="get/post" action="인자를 받을 WAS 내 웹컨테이너 프로그래밍 코드 파일이름">
    <input type="text" name="인자값">
    </form>
    WASにおけるWebコンテナのパラメータによる伝送方式
    doGetまたはdoPost関数を使用してプログラミング演算を行い、処理データの結果をパラメータを介してクライアントのWebページに送信し、動的に値を変更します.
    サーブレット受信パラメータのコード
    // 단일파라미터일 경우
    dataType 변수명 = request.getParameter("인자값");
    
    //같은 이름의 파라미터가 여러개일 경우 배열로 받음
    dataType [] 변수명 = request.getParameterValues("인자값");