servlet/jsp学習-java,関係,区別,コア概念,コード例


インターネットの三大基石
  • HTTP:HyperText Transfer Protocol,転送データ
  • URL:Uniform Resource Locator、位置決めデータ
  • HTML:HyperText Markup Language,表示データ
  • servlet
    servletはjavaであり、親HttpServiceletを継承するjavaクラスである.サーバ側で実行され、ユーザの要求を処理し、応答するために使用されます.
    servlet実行プロセス:
  • ブラウザは、要求をサーバ
  • に送信する.
  • サーバは、要求されたURLに基づいて、対応するservlet(servletは1つ以上)を呼び出し、servletはデータベースを操作し、情報
  • を取得する.
  • servletでストリームオブジェクトを印刷することにより、生成したHTMLデータをサーバ
  • に出力する.
  • サーバはservletで生成するHTMLデータをクライアントブラウザ
  • に再出力する.
  • ブラウザは、サーバから返信されたHTMLデータに基づいて解析し、要求を再送信し、最終的にページ
  • を表示する.
    ブラウザとservletは直接コミュニケーションせず、webサーバはメディアであることがわかります.次の画像は、さまざまな関係をよく説明しています.
    servlet学習サイト
    jsp
    jspはコンパイルされてjavaクラス(このようなスーパークラスのスーパークラス、最終的にはHttpServletとなるので、jspはservletとも言える)となるので、jspもjavaです.jsp ≈ java + html.時にはjspを書くのはHTMLを書いているようで、Javaを少しネストします.JSPは、JavaとHTMLを混在させて記述するサーブレット作成を簡略化する技術です.動的に生成されたコンテンツはJavaコードで記述され,固定された静的コンテンツはHTMLで記述される.
    jspファイルは、最初の実行時にjspエンジン(JspServeret)により、対応するjavaファイルとclass(場所:tomcat/work/Catalina/localhost/webプロジェクト名/org/apache/jsp)が生成されます.
    jsp構文は3つの異なるタイプに分けられる:コンパイラ命令:1.Page,ページ設定<%@page...%>)2.include、ソースレベル<%@include...%>)3.taglibスクリプト構文:1.HTMLコメント、サーブレットで生成され、ブラウザ 2. 注記を非表示にすると、サーブレットでは生成されず、ブラウザ<%-comments->3には送信されません.宣言、<%!...%>4.式、<%=...%>5.JAvaスクリプトセグメント、<%...%>、ここでjavaコード、変数、メソッドなどの動作構文を直接書き込む:など
    jsp学習サイト
    補足
    servletもjspもJava EEに属するコンテンツです.サーブレットは、対応する要求に応じてデータを生成し、転送技術を通じてJSPにデータを渡し、データ表示はJSPで行う.
    比較
    メリット
    劣勢
    servlet
    ロジック処理が便利
    ページ表現が面倒
    jsp
    ページの表示が便利
    ロジック処理が面倒
    したがってservletとjspは相補的に使用され、一般的なプロジェクトはjsp+servlet+javabeanの構成である.もっと高級なら、sshのフレームを使います.
    動的Webページ、データ動的に生成されたWebページ.動的生成とは,ウェブページが事前に存在しないのではなく,ブラウザが要求を出したときに一時的に生成することである.データベース・テクノロジーに基づいて、サーバ上に独立して存在しません.関連言語はjsp,php,asp,cgiである.
    web.xml:ネットワークプログラムの重要なプロファイルで、xmlのフォーマットで、servletの構成はここにあります.サーバが起動したときにのみ、ロードします.WebプロジェクトにはWebがあります.xml、1つのwebプロジェクトに複数のservletがあります.ブラウザからリクエストが送信され、サーバはどのようにして複数のservletから必要なservletを見つけますか?web.xmlの構成はマッピングによってこの問題を解決した.関連するラベルは,,,servlet / jsp 学习——java,关系,区别,核心概念,代码例子_第1张图片図:urlを入力し、対応するservletクラスを見つけます.手順は1-2-3-4
    Tomcat:オープンソースのWebアプリケーションサーバ.Apacheサーバが静的Webページのみをサポートしているのと比較して、Tomcatは動的Webページをサポートしています.Tomcatはservletエンジンを提供し、jspを解析することもでき、servlet、jspの開発とデバッグの第一選択である.
    show me the code
    jspコード
    <%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
    <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=basePath%>">
    
        <title>My JSP 'index.jsp' starting page</title>
        <meta http-equiv="pragma" content="no-cache">
        <meta http-equiv="cache-control" content="no-cache">
        <meta http-equiv="expires" content="0">    
        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
        <meta http-equiv="description" content="This is my page">
        <!-- <link rel="stylesheet" type="text/css" href="styles.css"> -->
      </head>
    
      <body> 
        Hello World, this is my JSP page.<br>
      </body>
    </html>
    

    jspコンパイル後のjavaコード:(javaコードは比較的冗長で、文字列をコンパクトにした感じ.)
    package org.apache.jsp;
    
    import javax.servlet.*;
    import javax.servlet.http.*;
    import javax.servlet.jsp.*;
    import java.util.*;
    
    public final class index_jsp extends org.apache.jasper.runtime.HttpJspBase
        implements org.apache.jasper.runtime.JspSourceDependent {
    
      private static java.util.List _jspx_dependants;
    
      public Object getDependants() {
        return _jspx_dependants;
      }
    
      public void _jspService(HttpServletRequest request, HttpServletResponse response)
            throws java.io.IOException, ServletException {
    
        JspFactory _jspxFactory = null;
        PageContext pageContext = null;
        HttpSession session = null;
        ServletContext application = null;
        ServletConfig config = null;
        JspWriter out = null;
        Object page = this;
        JspWriter _jspx_out = null;
        PageContext _jspx_page_context = null;
    
    
        try {
          _jspxFactory = JspFactory.getDefaultFactory();
          response.setContentType("text/html;charset=ISO-8859-1");
          pageContext = _jspxFactory.getPageContext(this, request, response,
                    null, true, 8192, true);
          _jspx_page_context = pageContext;
          application = pageContext.getServletContext();
          config = pageContext.getServletConfig();
          session = pageContext.getSession();
          out = pageContext.getOut();
          _jspx_out = out;
    
          out.write('\r');
          out.write('
    '
    ); String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; out.write("\r
    "
    ); out.write("\r
    "
    ); out.write("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\r
    "
    ); out.write("<html>\r
    "
    ); out.write(" <head>\r
    "
    ); out.write(" <base href=\""); out.print(basePath); out.write("\">\r
    "
    ); out.write(" \r
    "
    ); out.write(" <title>My JSP 'index.jsp' starting page</title>\r
    "
    ); out.write("\t<meta http-equiv=\"pragma\" content=\"no-cache\">\r
    "
    ); out.write("\t<meta http-equiv=\"cache-control\" content=\"no-cache\">\r
    "
    ); out.write("\t<meta http-equiv=\"expires\" content=\"0\"> \r
    "
    ); out.write("\t<meta http-equiv=\"keywords\" content=\"keyword1,keyword2,keyword3\">\r
    "
    ); out.write("\t<meta http-equiv=\"description\" content=\"This is my page\">\r
    "
    ); out.write("\t<!--\r
    "
    ); out.write("\t<link rel=\"stylesheet\" type=\"text/css\" href=\"styles.css\">\r
    "
    ); out.write("\t-->\r
    "
    ); out.write(" </head>\r
    "
    ); out.write(" \r
    "
    ); out.write(" <body>
    "
    ); out.write(" Hello World, this is my JSP page.<br>\r
    "
    ); out.write(" </body>\r
    "
    ); out.write("</html>\r
    "
    ); } catch (Throwable t) { if (!(t instanceof SkipPageException)){ out = _jspx_out; if (out != null && out.getBufferSize() != 0) out.clearBuffer(); if (_jspx_page_context != null) _jspx_page_context.handlePageException(t); } } finally { if (_jspxFactory != null) _jspxFactory.releasePageContext(_jspx_page_context); } } }

    ブラウザでjspファイルを開くには: