Servlet,JSP
22934 ワード
Boost Cossを聴いていると、Sebrit部分が理解できないので、Sebritを徹底的に理解することを考えました.
聴講や検索を繰り返しても理解できず、以前聞いたspring-mvc-1編servlet部分だけを再学習しました.
サーブレットは、簡単な方法で呼び出すだけでWebリクエストと応答ストリームを系統的に処理できる技術である.狭義にはこのような機能を持つJavaクラスであり、広義には上述の機能を実現するためのJavaパッケージである.
次に、対応するサービスメソッドを実行します.
いわゆるサーブレット機能がなければ,要求されたhttp情報を直接解析して情報を抽出し,WASとサーブレットで容易に情報を抽出し,情報を統合して伝送することができる.
私が理解できない部分は、いったい何がサーブレットなのか、どのように単色調で管理されているのか、サーブレットが小さいように見えるときにクラスと見なし、そのurlマッピングに対応するサーブレットを単色調で管理することと理解することができます.
エラーが発生しやすく、エラー時にエラーポイントを見つけるのは難しいです.
デフォルトhtmlファイルとは異なり、変数やjavaコードを中間に挿入して画面を動的に整理できます.
ex)
このような不便を解決するためにhtmlにjavaコードを組み込むテンプレートエンジンを開発した.
代表的なテンプレートエンジンはJSP、Thympleaf、Freemarker、Velocityなど.
まず、クライアントからサーバ要求を受信すると、WASはメモリにサーバが存在するかどうかを確認します.
(メモリではなくサーブレットを最初に実行した場合は、そのクラスをメモリに格納し、init()メソッドとservice()メソッドを実行します.
(テンプレートがメモリにある場合)サービス()メソッドを実行します.
WASのシャットダウンまたはWebアプリケーションの更新によりシャットダウンが要求された場合は、destroy()メソッドを実行します.
1) init()
初めてサーバをメモリに格納すると、サーバが起動し、最初の実行時に1回のみ実行されます.
2) service()
リクエスト/レスポンス(request/response)を処理し、リクエストがGETであるかPOSTであるかを区別するために、リクエストをdoGet()またはdoPost()メソッドに分割する.
3) destroy()
サービスボードの終了を要求するとdestroy()メソッドが実行されます.
出典:https://kadosholy.tistory.com/47[KADOSHOLY]
JSPはJava Server Pagesの略です.
HTMLコードにJAVAコードを加えて動的Webページを生成するWebアプリケーションツール.
出典:https://javacpro.tistory.com/43[物理技術を学ぶ]
しかし、欠点は、複数のコードが露出し、jspが多くの役割を果たしているため、メンテナンスが非常に困難であることです.
JSPの現在の機能は他のテンプレートエンジンより遅れているそうです.そのため詳細な整理は省略した.
聴講や検索を繰り返しても理解できず、以前聞いたspring-mvc-1編servlet部分だけを再学習しました.
サーブレットとは?
サーブレットは、簡単な方法で呼び出すだけでWebリクエストと応答ストリームを系統的に処理できる技術である.狭義にはこのような機能を持つJavaクラスであり、広義には上述の機能を実現するためのJavaパッケージである.
サーバワーク構造
タブレット実装コード
@WebServlet(name= "helloServlet",urlPatterns = "/hello")
public class HelloServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("HelloServlet.service");
System.out.println("request = " + request);
System.out.println("response = " + response);
String username = request.getParameter("username");
System.out.println("username = " + username);
response.setContentType("text/plain");
response.setCharacterEncoding("utf-8");
response.getWriter().write("hello"+username);
}
}
まず、WASは、Webブラウザが要求を受信すると、その要求にマッピングされたサーバを呼び出す.(この機能はWASのスレッドによって実行されると理解される)request、responseオブジェクトを同時に生成し、サーブレットに渡す.次に、対応するサービスメソッドを実行します.
いわゆるサーブレット機能がなければ,要求されたhttp情報を直接解析して情報を抽出し,WASとサーブレットで容易に情報を抽出し,情報を統合して伝送することができる.
私が理解できない部分は、いったい何がサーブレットなのか、どのように単色調で管理されているのか、サーブレットが小さいように見えるときにクラスと見なし、そのurlマッピングに対応するサーブレットを単色調で管理することと理解することができます.
サーブレットのみを使用してWebアプリケーションを作成します。
package hello.servlet.web.servlet;
import hello.servlet.domain.member.MemberRepository;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
@WebServlet(name = "memberFormServlet",urlPatterns = "/servlet/member/new-form")
public class MemberFormServlet extends HttpServlet {
private MemberRepository memberRepository = MemberRepository.getInstance();
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
response.setCharacterEncoding("utf-8");
PrintWriter w = response.getWriter();
w.write("<!DOCTYPE html>\n" +
"<html>\n" +
"<head>\n" +
" <meta charset=\"UTF-8\">\n" +
" <title>Title</title>\n" +
"</head>\n" +
"<body>\n" +
"<form action=\"/servlet/members/save\" method=\"post\">\n" +
" username: <input type=\"text\" name=\"username\" />\n" +
" age: <input type=\"text\" name=\"age\" />\n" +
" <button type=\"submit\">전송</button>\n" +
"</form>\n" +
"</body>\n" +
"</html>\n");
}
}
これによりresponseにhtmlコードを直接記述して渡します.エラーが発生しやすく、エラー時にエラーポイントを見つけるのは難しいです.
デフォルトhtmlファイルとは異なり、変数やjavaコードを中間に挿入して画面を動的に整理できます.
ex)
for (Member member : members) {
w.write(" <tr>");
w.write(" <td>" + member.getId() + "</td>");
w.write(" <td>" + member.getUsername() + "</td>");
w.write(" <td>" + member.getAge() + "</td>");
w.write(" </tr>");
}
サーブレットのみを使用してWebアプリケーションを構成すると、サービスが増加するにつれてhtmlドキュメントの一部を維持することはほとんど不可能になります.このような不便を解決するためにhtmlにjavaコードを組み込むテンプレートエンジンを開発した.
代表的なテンプレートエンジンはJSP、Thympleaf、Freemarker、Velocityなど.
サーバのライフサイクル
まず、クライアントからサーバ要求を受信すると、WASはメモリにサーバが存在するかどうかを確認します.
(メモリではなくサーブレットを最初に実行した場合は、そのクラスをメモリに格納し、init()メソッドとservice()メソッドを実行します.
(テンプレートがメモリにある場合)サービス()メソッドを実行します.
WASのシャットダウンまたはWebアプリケーションの更新によりシャットダウンが要求された場合は、destroy()メソッドを実行します.
1) init()
初めてサーバをメモリに格納すると、サーバが起動し、最初の実行時に1回のみ実行されます.
2) service()
リクエスト/レスポンス(request/response)を処理し、リクエストがGETであるかPOSTであるかを区別するために、リクエストをdoGet()またはdoPost()メソッドに分割する.
3) destroy()
サービスボードの終了を要求するとdestroy()メソッドが実行されます.
出典:https://kadosholy.tistory.com/47[KADOSHOLY]
JSP
JSP欄
JSPはJava Server Pagesの略です.
HTMLコードにJAVAコードを加えて動的Webページを生成するWebアプリケーションツール.
出典:https://javacpro.tistory.com/43[物理技術を学ぶ]
JSP Webアプリケーションコード
<%@ page import="java.util.List" %>
<%@ page import="hello.servlet.domain.member.MemberRepository" %>
<%@ page import="hello.servlet.domain.member.Member" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
MemberRepository memberRepository = MemberRepository.getInstance();
List<Member> members = memberRepository.findAll();
%>
<html>
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<a href="/index.html">메인</a>
<table>
<thead>
<th>id</th>
<th>username</th>
<th>age</th>
</thead>
<tbody>
<%
for (Member member : members) {
out.write(" <tr>");
out.write(" <td>" + member.getId() + "</td>");
out.write(" <td>" + member.getUsername() + "</td>");
out.write(" <td>" + member.getAge() + "</td>");
out.write(" </tr>");
}
%>
</tbody>
</table>
</body>
</html>
jspを使用すると、htmlにjavaコードが挿入されたドキュメントを解析し、テンプレート形式に変換できます.しかし、欠点は、複数のコードが露出し、jspが多くの役割を果たしているため、メンテナンスが非常に困難であることです.
JSPの現在の機能は他のテンプレートエンジンより遅れているそうです.そのため詳細な整理は省略した.
Reference
この問題について(Servlet,JSP), 我々は、より多くの情報をここで見つけました https://velog.io/@bins1225/서블릿-JSPテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol