CH 04動作ラベル1

66721 ワード

アクションタグ

  • ラベル
  • 、サーバまたはクライアントのアクションをコマンドするためのラベル
  • JSPページでページとページの間の
  • を制御する
  • 他のページの実行結果(
  • を含む)
  • Java Beansなど多様な機能、
  • XML形式の使用
    ※ XML(extend markup language)
    -html拡張機能
    -eml:電子メール拡張子
    ->優先パラメータで使用する詳細
    ->htmlに比べて文法的に厳格で機能が多い
    ->Androidでxmlデザインページを使う
  • *アクションラベルの種類



    4-1 include Tag

  • 現在jspページから別のページへのタグ
  • ex01)
  • <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=EUC-KR"/>
    </head>
    <body>
    <h1>Forward Tag Example1</h1>
    <FORM METHOD=POST ACTION="forwardTag1_1.jsp">
    아이디 : <INPUT  NAME="id" value="aaa"><p>
    패스워드 : <INPUT TYPE="password" NAME="pwd" value="1234"><p>
    <INPUT TYPE="submit" VALUE="보내기">
    </FORM>
    </body>
    </html>
    =>>結果

    <%@ page contentType="text/html; charset=EUC-KR"%>
    <%
    	request.setCharacterEncoding("EUC-KR");	
    %>
    현재의 페이지는 동적인 값으로 인한 다른 페이지 전달(경유)의 목적으로 존재
    현재 페이지의 텍스트는 보이지 않음.
    forwardTag1.html에서 요청된 id, pwd도 같이 전달된다.
    <jsp:forward page="forwardTag1_2.jsp"/>	
    <%@ page contentType="text/html; charset=EUC-KR"%>
    <%request.setCharacterEncoding("EUC-KR");
    	String id = request.getParameter("id");
    	String pwd = request.getParameter("pwd");
    %>
    id : <%=id %>
    pwd : <%=pwd %>
    =>>結果

    ex02)


    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=EUC-KR"/>
    </head>
    <body>
    <h1>Forward Tag Example2</h1>
    <FORM METHOD="get" ACTION="forwardTag2_1.jsp">
    혈액형별로 성격 테스트<p/>
    당신의 혈액형은?<p/>
    <INPUT TYPE="radio" NAME="bloodType" VALUE="A">A형<br>
    <INPUT TYPE="radio" NAME="bloodType" VALUE="B">B형<br>
    <INPUT TYPE="radio" NAME="bloodType" VALUE="O">O형<br>
    <INPUT TYPE="radio" NAME="bloodType" VALUE="AB">AB형<br>
    <INPUT TYPE="submit" VALUE="보내기">
    </FORM>
    </body>
    </html>

    <%@ page contentType="text/html; charset=EUC-KR"%>
    <%request.setCharacterEncoding("EUC-KR");
    String name=「浦吉洞」;
    String bloodType = request.getParameter("bloodType");
    %>



    <h1>Forward Tag Example2</h1>
    <%@ page contentType="text/html;charset=EUC-KR"%>
    <%
     String name = request.getParameter("name");
     String bloodType = request.getParameter("bloodType");
    %>
    <b><%=name%></b>님의 혈액형은
    <b><%=bloodType%></b>형이고
    성실하고 신중하며 완벽주의자입니다.
    <h1>Forward Tag Example2</h1>
    <%@ page contentType="text/html;charset=EUC-KR"%>
    <%
     String name = request.getParameter("name");
     String bloodType = request.getParameter("bloodType");
    %>
    <b><%=name%></b>님의 혈액형은
    <b><%=bloodType%></b>형이고 
    규격을 싫어하는 자유인입니다.
    <h1>Forward Tag Example2</h1>
    <%@ page contentType="text/html;charset=EUC-KR"%>
    <%
     String name = request.getParameter("name");
     String bloodType = request.getParameter("bloodType");
    %>
    <b><%=name%></b>님의 혈액형은
    <b><%=bloodType%></b>형이고
    강한 의지의 소유자입니다.
    <h1>Forward Tag Example2</h1>
    <%@page contentType="text/html;charset=EUC-KR"%>
    <%
    	String name = request.getParameter("name");
    	String bloodType = request.getParameter("bloodType");
    %>
    <%=name%>님의 혈액형은
    <b><%=bloodType%></b>형이고<p>
    정확한 판단력을 가진 합리주의자입니다.
    =>>結果

    4-2 include Tag

  • 現在のjspページの特定の領域に外部ファイルの内容のタグを含める
    (includeディレクトリラベル<@include>主に静的ページ用)
  • 現在JSPページに含めることができる外部ファイルは、HTML、JSP、Subetページを含む
  • です.

    ex01)


    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=EUC-KR"/>
    </head>
    <body>
    <h1>Include Tag Example1</h1>
    <FORM METHOD="POST" ACTION="includeTag1.jsp">
    이름 : <INPUT NAME="name" value="aaa"><p/>
    <INPUT TYPE="submit" VALUE="보내기">
    </FORM>
    </body>
    </html>
    <%@ page contentType="text/html; charset=EUC-KR"%>
    <%request.setCharacterEncoding("EUC-KR");%>
    <!-- include 액션 태그는 현재페이지에 요청된 정보까지 같이 넘겨줌 -->
    <!-- include 액션태그 요청되는 정보에 따라 동적인 페이지가 포함 -->
    <jsp:include page="includeTagTop1.jsp" />
    <!-- includeTagTop1.jsp -->
    <%@ page contentType="text/html; charset=EUC-KR"%>
    <%request.setCharacterEncoding("EUC-KR");
    	String name = request.getParameter("name");
    %>
    include Action Tag의 Top입니다.<p>
    <b><%=name%></b>
    =>>結果

    ex02)


    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=EUC-KR"/>
    </head>
    <body>
    <h1>Include Tag Example2</h1>
    <FORM METHOD="POST" ACTION="includeTag2.jsp">
    SITENAME : <INPUT NAME="siteName" value="naver.com"><p>
    <INPUT TYPE ="submit" VALUE="보내기">
    </FORM>
    </body>
    </html>  
    <!-- includeTag2.jsp -->
    <%@ page contentType="text/html; charset=EUC-KR"%>
    <%request.setCharacterEncoding("EUC-KR");
    	String siteName = request.getParameter("siteName");
    %>
    사이트명 : <%=siteName%> <br>
    <jsp:include page="includeTagTop2.jsp">
    	<jsp:param value="aaa" name="id"/>
    	<jsp:param value="1234" name="pwd"/>	
    </jsp:include>
    <%@ page contentType="text/html; charset=EUC-KR"%>
    <%request.setCharacterEncoding("EUC-KR");
    	String id = request.getParameter("id");
    	String pwd = request.getParameter("pwd");
    %>
    <br>
    id : <%=id%> / pwd : <%=pwd%>
    =>>結果


    ex03)


    <!-- includeTag3.html -->
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=EUC-KR"/>
    </head>
    <body>
    <h1>Include Tag Example3</h1>
    <FORM METHOD="get" ACTION="includeTag3.jsp">
    혈액형별로 성격 테스트<p/>
    당신의 혈액형은?<p/>
    <INPUT TYPE="radio" NAME="bloodType" VALUE="A">A형<br>
    <INPUT TYPE="radio" NAME="bloodType" VALUE="B">B형<br>
    <INPUT TYPE="radio" NAME="bloodType" VALUE="O">O형<br>
    <INPUT TYPE="radio" NAME="bloodType" VALUE="AB">AB형<br>
    <INPUT TYPE="submit" VALUE="보내기">
    </FORM>
    </body>
    </html>
    <%@ page contentType="text/html; charset=EUC-KR"%>
    <%request.setCharacterEncoding("EUC-KR");
    	String name = "홍길동";
    	String bloodType = request.getParameter("bloodType");
    %>
    <!-- 표현식에서 ""안에 값이 있을 때는 ''값으로 시작 -->
    <jsp:include page='<%=bloodType + ".jsp" %>'>
    	<jsp:param value="<%=name %>" name="name"/>
    </jsp:include>
    <h1>Forward Tag Example2</h1>
    <%@ page contentType="text/html;charset=EUC-KR"%>
    <%
     String name = request.getParameter("name");
     String bloodType = request.getParameter("bloodType");
    %>
    <b><%=name%></b>님의 혈액형은
    <b><%=bloodType%></b>형이고
    성실하고 신중하며 완벽주의자입니다.
    <h1>Forward Tag Example2</h1>
    <%@ page contentType="text/html;charset=EUC-KR"%>
    <%
     String name = request.getParameter("name");
     String bloodType = request.getParameter("bloodType");
    %>
    <b><%=name%></b>님의 혈액형은
    <b><%=bloodType%></b>형이고 
    규격을 싫어하는 자유인입니다.
    <h1>Forward Tag Example2</h1>
    <%@ page contentType="text/html;charset=EUC-KR"%>
    <%
     String name = request.getParameter("name");
     String bloodType = request.getParameter("bloodType");
    %>
    <b><%=name%></b>님의 혈액형은
    <b><%=bloodType%></b>형이고
    강한 의지의 소유자입니다.
    <h1>Forward Tag Example2</h1>
    <%@page contentType="text/html;charset=EUC-KR"%>
    <%
    	String name = request.getParameter("name");
    	String bloodType = request.getParameter("bloodType");
    %>
    <%=name%>님의 혈액형은
    <b><%=bloodType%></b>형이고<p>
    정확한 판단력을 가진 합리주의자입니다.
    =>>結果


    4-3 useBean

  • jspページで、タグ
  • は、javabbinsを使用するために実際のjavaクラスを宣言し、初期化する
  • idプロパティとscopeプロパティに基づいてJavaBeans内のオブジェクトを検索します.オブジェクトが見つからない場合は
    空のオブジェクトの作成

  • 1)setPropertyアクションラベル

  • usebeanアクションラベルを使用してJavaBeansのsetter()メソッドにアクセスし、JavaBeansのメンバーにアクセスします.
    変数のプロパティ値を格納するフラグ
  • 2)getPropertyアクションラベル

  • beanアクションタグを使用してJavaBeansのgetter()メソッドにアクセスし、JavaBeansメンバー変数Property値のタグ
  • を取得する.

    ex01)


    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="EUC-KR">
    <title>Insert title here</title>
    <script type="text/javascript">
    	function send() {		
    		f=document.frm;
    		//f=document.forms[0];
    		f.action="simpleBean2.jsp";
    		f.submit();
    	}
    </script>
    </head>
    <body>
    <form name="frm" action="simpleBean.jsp">
    msg : <input name="msg" value="빈을 만들자."><br/>
    cnt : <input name="cnt" value="10"><br/>
    <input type="submit" value="Send1">
    <!-- button type은 반드시 onclick 실행 -->
    <input type="button" value="Send2" onclick="send()">
    </form>
    </body>
    </html>
    <!-- LGH 2021SEP14 --> 
    <!-- 자바빈즈(JavaBeans) -->
    <!-- SimpleBean2.jsp -->
    <%@page import="ch04.SimpleBean" %>
    <%@page contentType="text/html; charset=EUC-KR"%>
    <% 
    		request.setCharacterEncoding("EUC-KR");
    %>
    <!-- SimpleBean bean = new SimpleBean() 과 같은 기능 -->
    <jsp:useBean id="bean" class="ch04.SimpleBean"/>
    <%-- <jsp:setProperty property="msg" name="bean"/>
    <jsp:setProperty property="cnt" name="bean"/> --%>
    <jsp:setProperty property="*" name="bean"/>
    msg: <jsp:getProperty property="msg" name="bean"/> <br>
    cnt: <jsp:getProperty property="cnt" name="bean"/> <br>
    msg2: <%=bean.getMsg() %> <br>
    cnt2: <%=bean.getCnt()%> <br>
    // LGH-2021SEP14
    // SimpleBean.java
    package ch04;
    /* 자바빈즈(JavaBeans) 네이밍
    * 1. 테이블명+Bean (TeamBean) - JSP 사용
    * 2. 테이블+Dto (Data Transfer Object) - Spring 사용
    * 3. 테이블+Vo (Value Object) - Spring 사용
    **/
    public class SimpleBean {
    	private String msg;
    	private int cnt;	
    	//getter -> getXxx
    	public String getMsg() {
    		return msg;
    	}
    	//setter -> setXxx
    	public void setMsg(String msg) {
    		this.msg = msg;
    	}
    	public int getCnt() {
    		return cnt;
    	}
    	public void setCnt(int cnt) {
    		this.cnt = cnt;
    	}
    }

    usebean-scopeプロパティの例


    :scopeのプロパティ値-page、session
  • セッション(セッション)
  • トムケンサーバ上でクライアント単位でオブジェクト(非永続性)
  • を作成
  • セッションはCookieに
  • 格納される.
  • クッキー
  • ブラウザはクラウド(pc)に格納された格納場所(値)、ファイルはpcに格納されます(永続性)
  • <%@ page contentType="text/html; charset=EUC-KR"%>
    <%request.setCharacterEncoding("EUC-KR");%>
    <%
    	//session.setMaxInactiveInterval(10); // 세션 유지 시간 : 10초
    %>
    <jsp:useBean id="pBean" class="ch04.ScopeBean" scope="page"/>
    <jsp:useBean id="sBean" class="ch04.ScopeBean" scope="session"/>
    <jsp:setProperty property="num" name="pBean" value="<%=pBean.getNum()+10 %>"/>
    <jsp:setProperty property="num" name="sBean" value="<%=sBean.getNum()+10 %>"/>
    <h2>Scope Bean</h2>
    pBean : <jsp:getProperty property="num" name="pBean"/>
    sBean : <jsp:getProperty property="num" name="sBean"/>
    세션 id : <%=session.getId()%> <br><br><br>
    <a href="scopeBean2.jsp">세션제거</a>
    package ch04;
    public class ScopeBean {
    	private int num;	
    	public int getNum() {
    		return num;
    	}	
    	public void setNum(int num) {
    		this.num = num;
    	}	
    }
    <%@ page contentType="text/html; charset=EUC-KR"%>
    <%request.setCharacterEncoding("EUC-KR");
    	session.invalidate(); // 세션 제거 메서드(무효화)
    	response.sendRedirect("scopeBean.jsp");
    %>