.jsp練習01


  • jdkインストールとpath設定
  • Webサーバインストール(猫)
    http://tomcat.apache.orgファイルのダウンロードと解凍
  • インストールeclipse javaee
  • Tomcatサーバをこのクリップにバインド
    ->サーバがオープンしたら、x連動を再インストールするだけです.
    ->Oracleとポート番号が同じ場合、競合する可能性がありますので、番号を変更してください
    (データベースポート番号=8080、サーバポート番号=8001を指定します)
  • タグの種類


    スクリプトラベル:htmlに実行可能なjavaコードを挿入する
    ≪ディレクトリ・ラベル|Directory Label|ldap≫:どのように処理するかを設定します.
    アクションラベル:クライアント/サーバのアクションコマンド

    スクリプトタグ


    : <% ... %> シェイプの使用
    :jspコンテナはjavaコードとともにスクリプトタグを処理します.
    残りはHTMLコードまたは純テキストとみなされます
    :javaを使用してjspファイルを自動的に生成

    種類

  • 声明<%!...%>:Java変数またはメソッドの定義
  • スクリプト<%...%>:Java論理コードの作成に使用します.
  • 式<$=...%>:変数、計算式、メソッド呼び出しの結果を文字列で出力します.
  • できあがった

    <body>
    	<h2> Scripting tag </h2>
    	<!-- 스크립트 태그 세가지 -->
    	<!-- 1. 선언문 : 변수나 메소드 정의 -->
    	<%!
    	int count = 3, cnt = 0;
    	String name = "홍길동";
    	boolean ox = true;
    	String marketLower(String data) {
    		return data.toLowerCase();
    	}
    	%>
    	<!-- 2.스크립틀릿 : 자바 로직코드 작성, 자바 문법의 제어문 -->
    	<%
    	for(int i=0; i<=count; i++) {
    		cnt = cnt+i;
    		out.println("Java Server Pages " + cnt + " <br>");
    	}
    	%>
    	<!-- 표현문 : 호출 결과를 문자열 형태로 출력-->
    	<%=	marketLower("HELLO World") %> <br>
    	<%= name + " " + ox %>
    </body>
    上にはこう書いてあります.実行時

    このように動作していることが確認できます.
    そして.
    ...\Jsp_Study.metadata.plugins\org.eclipse.wst.server.core\tmp0\work\Catalina\localhost\JspBook\org\apache\jsp\Ch02...
    ->このようにパスに沿って歩き続けると、スクリプトタグを使用して作成されたコードが自動的に
    ...생략...
          out.write("\t<!-- 스크립트 태그 세가지 -->\r\n");
          out.write("\t<!-- 1. 선언문 : 변수나 메소드 정의 -->\r\n");
          out.write("\t");
          out.write("\r\n");
          out.write("\t<!-- 2.스크립틀릿 : 자바 로직코드 작성, 자바 문법의 제어문 -->\r\n");
          out.write("\t");
    
    	for(int i=0; i<=count; i++) {
    		cnt = cnt+i;
    		out.println("Java Server Pages " + cnt + " <br>");
    	}
    	
          out.write("\r\n");
          out.write("\t<!-- 표현문 : 호출 결과를 문자열 형태로 출력-->\r\n");
    ...생략...
    このまま.Javaに保存されている様子が見えます.

    なぜprintlnを出力で使用せずに<br>を使用するのか


    上で使用したコードを見ると、出力時にout.print(출력할 내용 + "<br>");と同じ形状を使用しています.
  • はコンソール出力ではないので、System.out.printではなくout.printを使用します.
  • out.printlnと書いてもエラーは発生しませんが、printlnの機能は完了しません.なにしろhtml形式で書かれているので、<%..%>中に書いても<br>を使って改行してこそ、自分の意思で仕事ができる.
  • 実際の体験


    1)printlnを使用する場合
    	<%
    	int sum = 0;
    	for(int i=0; i<=10; i++) {
    		out.println(i);
    		sum += i;
    	}
    	%>
    	<!-- 표현문 : 호출 결과를 문자열 형태로 출력 -->
    	<br> <p> 합계= <%= sum %> </p>
    出力外観

    printlnの機能が正常に発揮されていないことがわかります.
    2)<br>使用時
    	<h2> Scripting tag </h2>
    	<%
    	int sum = 0;
    	for(int i=0; i<=10; i++) {
    		out.print(i + "<br>");
    		sum += i;
    	}
    	%>
    	<!-- 표현문 : 호출 결과를 문자열 형태로 출력 -->
    	<br> <p> 합계= <%= sum %> </p>
    出力外観

    Pageディレクトリラベル


    Pageディレクトリラベル
    :現在のjspページ情報を設定するタグ
    :どこでも宣言できますが、普通は一番上に書いてあります.
    :属性=language、contentType、pageEncode、import、session、buffer、autoFlush、iThreadSafe、info、errorPage、isErrorPage、isErrorPage、isScriptingEnable、isEUgnored
    session:サーバ側ストレージ
    Cookie:クライアントにデータを格納する
    <%@ page contentType="text/html; charset=UTF-8"%>
    <!-- contentType="text/html; charset=UTF-8" = contentType="text/html"; pageEncoding="UTF-8"-->
    <%@ page import="java.util.*, java.io.*" %>
    <%@ page session = "true"%>
    <%@ page buffer="32kb" %>
    <%@ page autoFlush="true" %>
    <%@ page isThreadSafe = "true" %>
        <!-- true=스레드처리 / false=순차처리 -->
    <%@ page info = "이곳은 JSP 컨테이너에 대한 설명을 쓰는 곳" %>
    エラーページを作成するための使用状況の表示
    1.現在のページでエラーが発生した場合は、特定のページ(error page.jsp)に移動します.
    2.例外オブジェクトを使用した例外処理のページへのリンク

    作成方法1

    "error_page.jsp"
    
    <!-- 에러가 발생하면 아래 페이지로 이동해라 -->
    <%@ page errorPage="error_page_error.jsp" %>
    <body>
    	<%
    	String str = null;
    	out.print(str.toString());%>
    </body>
    
    
    
    
    "error_page_error.jsp"
    <body>
    	<h4> errorPage 디렉티브 테그 </h4>
    	문자열에 자료를 넣지 않아 에러가 발생했습니다
    </body>
    前述したように、

    これにより、対応するファイル(error page error.jsp)ファイルに移動し、作成した文が出力されたことを確認できます.

    2つ目のメソッドの作成

    "error_page.jsp"
    
    <!-- 에러가 발생하면 아래 페이지로 이동해라 -->
    <%@ page errorPage="page_isErrorPage_error.jsp" %>
    <body>
    	<%
    	String str = null;
    	out.print(str.toString());%>
    </body>
    
    
    
    
    "page_isErrorPage_error.jsp"
    
    <%@page import="java.io.PrintWriter"%>
    <!-- isErrorPage 내장객체 사용 기본 값은 false 상태 -->
    <%@ page isErrorPage = "true" %>
    <body>
    	<h4> 에러가 발생했습니다 </h4>
    	<h5> exception 내장 객체로 에러 처리하기</h5>
    	<!-- isErrorpage가 false로 꺼져있다면 내장객체인 exception 을 사용할 수 없다 -->
    	<% exception.printStackTrace(new PrintWriter(out)); %>
    </body>

    作成順に設定した文が出力されると、組み込みオブジェクト出力エラーメッセージが表示されます.

    义齿


    :jspページの特定のドメインに外部ファイルの内容を含むタグ.
    含めることができる外部ファイルタイプ=html、jsp、txt
    宣言されていない特定の場所は、jspページの任意の場所で宣言できます.<%@ include file = " " %>など
       <%@ include file="menu.jsp" %>
       <%! String greeting = "웹 쇼핑몰에 오신 것을 환영합니다";
           String tagline = "Welcome to Market!";  %>
    このように接続するとmenujspに接続すると、ファイルの内容が現在のページに露出し続けます.

    アクションタグ


    :コマンドサーバまたはクライアントのアクションのタグ
    :jspページでページからページの間を制御する
    :他のページの実行結果を現在のページに含める
    :JavaBeansなど、さまざまな機能を提供
    :XML形式
    :模様

    送信


    を選択します.
    "forward.jsp 파일"
    
    	<h2> 액션 태그 </h2>
    	<!-- 연결 페이지로 보내버리고, 이 페이지는 출력 모양이 안나온다 -->
    	<jsp:forward page="forward_data.jsp" />
          
          
          
          
    "forward_data.jsp 파일"
    <body>
    	<h2> forward_data 파일 입니다 </h2>
    	<p> <%= (new java.util.Date()).toLocaleString() %>
    </body>

    forwardファイルに<h2> 액션 태그 </h2>forwardファイルを作成したことは明らかですが、本当にforward dataを実行した場合はforward dataを使用できます.jspファイルが出力されている様子が見えます.
    を選択します.
    "first.jsp 파일"
    
    <body>
    	<h3> 이 파일은 first.jsp 입니다 </h3>
    	<!-- 액션태그 사용 -->
    	<jsp:forward page="second.jsp" />
    	<p> ====== first.jsp 페이지 =======
    </body>
    
    
    
    
    
    "second.jsp 파일"
    <body>
    	<h3> 이 파일은 second.jsp 파일입니다 </h3>
    	Today is <%= new java.util.Date() %>
    </body>

    今回は明らかに初めてjspファイルにコンテンツが作成され、実行されているにもかかわらず2番目です.jspの内容が実行されていると判断できます.

    行ってまた帰ってくる


    今のページを丁寧に書いたので、出せないのはもったいないですね.だから行って帰ってきた様子も聞いてみた.

    を選択します。

    "first.jsp 파일"
    
    <body>
    	<h3> 이 파일은 first_include.jsp 파일</h3>
    	<!-- 갔다가 다시 이 페이지로 돌아옴 -->
    	<jsp:include page="second.jsp" />
    	<p>==============================</p>
    </body>
    
    
    
    "second.jsp 파일"
    
    <body>
    	<h3> second_include.jsp 파일입니다 </h3>
    	Today is <%= (new java.util.Date()).toLocaleString() %>
    </body>

    以上のようにfirst includeの内容が出力され、接続位置を切り替えて再び戻ることができます.

    を選択します。

    paramを使用することもできます.
    よく見ると<jsp:param name=" " value=" " />はこのような形で、nameに渡す変数名を書き、valueに渡す値を書きます.
    "first.jsp 파일"
    
    <body>
    	<h3> 현재 파일은 first.jsp 입니다</h3>
    	<jsp:include page="second.jsp">
    		<jsp:param name="name" value="kim java" />
    		<jsp:param name="dept" value="computer" />
    		<jsp:param name="age" value="24" />
    		<jsp:param name="phone" value="7890-1234" />
    	</jsp:include>
    	<p> 이곳은 include 액션 태그 이후의 위치
    </body>
    
    
    
    "second.jsp 파일"
    <body>
    	<h3> 현재 파일은 second.jsp 입니다</h3>
    	이름 : <%= request.getParameter("name") %> <br>
    	학과 : <%= request.getParameter("dept") %> <br>
    	나이 : <%= request.getParameter("age") %> <br>
    	번호 : <%= request.getParameter("phone") %>
    	<p> -------------------------------- </p>
    </body>

    値をリンクされたファイルに移動します.
    必要なコンテンツが出力され、戻ってくることを確認します.

    でも私は韓文のお金をあなたに渡したいです01


    「first.jspファイル」で直接韓国語で値を渡すと、
    <jsp:param name="name" value="김자바" />
    <jsp:param name="dept" value="컴퓨터 공학과" />

    これで割れてちゃんと入っていないのが見えます.
    何か方法があるのか調べてみたら、<% request.setCharacterEncoding(" "); %>に書けばいいという文章を見ました.
    だから以下のように書いてあります.
    <%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%>
    <% request.setCharacterEncoding("utf-8"); %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
    <title>Insert title here</title>
    </head>
    <body>
    	<h3> 현재 파일은 first.jsp 입니다</h3>
    	<jsp:include page="second.jsp">
    		<jsp:param name="name" value="김자바" />
    		<jsp:param name="dept" value="컴퓨터 공학과" />
    		<jsp:param name="age" value="24" />
    		<jsp:param name="phone" value="7890-1234" />
    	</jsp:include>
    	<p> 이곳은 include 액션 태그 이후의 위치
    </body>
    </html>

    その値が正しく出力されていることを確認できます.

    しかし、私はあなたに韓国語のお金を渡したいです。

    "first.jsp 파일"
    
    상단에 인코더를 명시해주고
    <%@ page import="java.net.URLEncoder" %>
      
    <body>
    	<h3> 현재 파일은 first.jsp 입니다</h3>
    	<jsp:include page="second.jsp">
    		<jsp:param name="name" value='<%= java.net.URLEncoder.encode("김자바") %>' />
    		<jsp:param name="dept" value='<%= java.net.URLEncoder.encode("컴퓨터 공학과") %>' />
    		<jsp:param name="age" value="24" />
    		<jsp:param name="phone" value="7890-1234" />
    	</jsp:include>
    	<p> 이곳은 include 액션 태그 이후의 위치
    </body>
    
    
    
    
    "second.jsp 파일"
    
    <%@ page import="java.net.URLDecoder" %>
    <body>
    	<h3> 현재 파일은 second.jsp 입니다</h3>
    	<%
         	String name = request.getParameter("name");
         	String dept = request.getParameter("dept");
      	%>
       	학과 : <%=java.net.URLDecoder.decode(dept)%> <br>
       	이름 : <%=java.net.URLDecoder.decode(name)%>   <br>
       	
    	나이 : <%= request.getParameter("age") %> <br>
    	번호 : <%= request.getParameter("phone") %>
    	<p> -------------------------------- </p>
    </body>

    送信者はimportのエンコーダを受信する.value='<%= java.net.URLEncoder.encode(" ")受信者はimportでデコーダを受信する.
    変数java.net.URLDecoder.decode( )やはり割れず、出力効果が良かったです.