[Day8] JSP/Servlet 8 [12/13]

 

-๋ณต์Šต-

์ฟ ํ‚ค: ์„œ๋ฒ„(jsp/servlet)์—์„œ ์ƒ์„ฑ -> ์„œ๋ฒ„์—์„œ ํด๋ผ์ด์–ธํŠธ๋กœ ์ฟ ํ‚ค ์ƒ์„ฑํ•˜๋ผ๋Š” ๋ช…๋ น์„ ๋‚ด๋ฆฌ๋Š”๊ฒƒ์ž„

    js            document.cookie ์†์„ฑ์‚ฌ์šฉ  ์ƒ์„ฑ, ์‚ญ์ œ, ์ˆ˜์ •

    jsp          Cookie ํด๋ž˜์Šค  c = new (cn,cv);

                                e/d/p/s

                                c.setXXX();

                  response.addCookie( c ) ;  ์‘๋‹ต ํ—ค๋”     ์ถ”๊ฐ€.

                  

                  ์‚ญ์ œ : setE(0)   ์‘๋‹ต ์ฆ‰์‹œ ์‚ญ์ œ.

                                   -1     ๋ธŒ๋ผ์šฐ์ € ๋‹ซํž๋•Œ ์ฟ ํ‚ค ์‚ญ์ œ

                           ์ƒˆ๋กœ์šด ์ฟ ํ‚ค ๊ฐ์ฒด ์ƒ์„ฑ :  setE(0) 

------------------------------------------------------------------------

์„ธ์…˜: ์„œ๋ฒ„์— ์ €์žฅ๋˜๋Š” ๊ฒƒ /

       [ํด] -> ์š”/์‘ -> [์„œ]  ์„ธ์…˜ ์ €์žฅ๊ณต๊ฐ„(์บ๋น„๋„ท)

        JSESSIONID ์ฟ ํ‚ค๊ฐ’

 

      jsp 9๊ฐ€์ง€ ๊ธฐ๋ณธ ๊ฐ์ฒด ์ค‘ session ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด๋˜๋„ค์š”.. 

      

      session="false" 

      request.getSession()

      

       servlet ์„ธ์…˜ ์ƒ์„ฑ ๋ฐฉ๋ฒ• ์„ค๋ช….

       request.getSession()           =>  session  ์ƒˆ๋กœ ์„ธ์…˜ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ด์„œ ๋ฐ˜ํ™˜

       request.getSession(false)   =>  session  null ๋ฐ˜ํ™˜

       if( session== null){

       }else{

       }

------------------------------------------------------------------------

include ์ง€์‹œ์ž์™€ include ์•ก์…˜ ํƒœ๊ทธ์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•˜์„ธ์š”.   

 

          ํŽ˜์ด์ง€ ๋ชจ๋“ˆํ™” : ๊ณตํ†ต์ ์ธ ๋ถ€๋ถ„ -> ์œ ์ง€๋ณด์ˆ˜, ๊ด€๋ฆฌ. ์ƒ์‚ฐ์„ฑ

          webapp / layout -  top/bottom

          

          ์ผ์ •๊ด€๋ฆฌ : left, right

                       ์ผ์ •๊ด€๋ฆฌํด๋” /layout - l,r

          ๊ฒŒ์‹œํŒ    : left, right

          

          ์ฒ˜๋ฆฌ ๊ณผ์ • ์ดํ•ด. 

          include ์ง€์‹œ์ž : ์„œ๋ธ”๋ฆฟ ํด๋ž˜์Šค 1๊ฐœ -> ์ฒ˜๋ฆฌ                         ๊ณตํ†ต์ฝ”๋”ฉ, ๋ชจ๋“ˆํ™” ์ถ”๊ฐ€

          jsp:include ์•ก์…˜ํƒœ๊ทธ : ์„œ๋ธ”๋ฆฟ ๊ฐ๊ฐ ์ƒ์„ฑ -> ํ๋ฆ„ ์ด๋™.          ๊ณตํ†ต์ฝ”๋”ฉ, ๋ชจ๋‘˜ํ™” ์ถ”๊ฐ€

------------------------------------------------------------------------

์ปค๋„ฅ์…˜ ํ’€ ์ •์˜ ?  Connection -> ํ’€(pool)

     ์‚ฌ์šฉ ์ด์œ ?  DB ์—ฐ๋™ + connection ๊ฐ์ฒด ์ƒ์„ฑ + ๋‹ซ๊ธฐ / ๋™์‹œ ์ ‘์†์ž ๋งŽ์„๊ฒฝ์šฐ / ์„ฑ๋Šฅ ๋–จ์–ด์ง„๋‹ค.

     ์‚ฌ์šฉ ๋ฐฉ๋ฒ•?  WAS(ํ†ฐ์บฃ) ์ด ์ œ๊ณตํ•˜๋Š” DBCP 

          1) WEB-INF/lib/tomcat-dbcp.jar ์ถ”๊ฐ€

          2) META-INF/context.xml           ์„œ๋ฒ„ ์‹œ์ž‘ + ์ž‘๋™(์ปค๋„ฅ์…˜ ํ’€ ๊ฐ€๋™ )

          3) WEB-INF/web.xml                    ์„ค์ • ์ถ”๊ฐ€

          4) ํ…Œ์ŠคํŠธ       conn.close()        -> ๋ฐ˜ํ™˜                  

          5) com.util.ConnectionProvider.java

                  getConnection(){   CP }  ***

                  ์ฐธ๊ณ ) DBConn.getConnection();

 


    -  ex03_default.jsp / ex03_logon.jsp / ex03_logout.jsp  ๋กœ๊ทธ์ธ์ฒ˜๋ฆฌ.

    - [ ์„ธ์…˜์„ ์‚ฌ์šฉํ•ด์„œ ๋กœ๊ทธ์ธ ์ฒ˜๋ฆฌ ] 

       ex02_default.jsp / ex02_logon.jsp / ex02_logout.jsp  ๋กœ๊ทธ์ธ์ฒ˜๋ฆฌ. ๋ณต์‚ฌ ๋ถ™์ด๊ธฐ.

       session_auth.jspf

 

default.jsp

<%@page import="com.util.Cookies"%>
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c"  uri="http://java.sun.com/jsp/jstl/core" %>
<%@ include file="/WEB-INF/inc/session_auth.jspf" %>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>2022. 12. 12. ์˜คํ›„ 2:10:17</title>
<link rel="shortcut icon" type="image/x-icon" href="../images/SiSt.ico">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.1/jquery.min.js"></script>
<style>
  div{
    border: 1px solid gray;
    width:300px;
    height:100px;
    padding:20px;
  }
</style>
</head>
<body>
<h3>ex02_default.jsp - ๋ฉ”์ธ ํŽ˜์ด์ง€</h3>

<pre>
    p 242 ์„ธ์…˜์„ ์‚ฌ์šฉํ•œ ๋กœ๊ทธ์ธ ์ƒํƒœ ์œ ์ง€
</pre>

<%
    if( logonID == null ){  // ๋กœ๊ทธ์ธ X
 %>
 <div id="logon">
  <form action="ex02_logon.jsp">
    ์•„์ด๋”” : <input type="text" name="id" value="admin" /><br>
    ๋น„๋ฐ€๋ฒˆํ˜ธ : <input type="password" name="passwd" value="1234" /><br>
    <input type="submit" value="๋กœ๊ทธ์ธ" />
    <input type="button" value="ํšŒ์›๊ฐ€์ž…" /> 
     
    <%
         String error = request.getParameter("error");
         if(  error != null ){
    %>
    <span style="color:red">๋กœ๊ทธ์ธ ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค.</span>
    <%    	 
         } // 
    %> 
    <script>
        $(function (){
        	$("#logon span").fadeOut(5000);
        })
    </script>
    
    
  </form>
</div>
 <%    	
    }else{  // ๋กœ๊ทธ์ธ O
 %>
 <div id="logout">
   [<%= logonID %>]๋‹˜ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค<br>
   <a href="ex02_logout.jsp">๋กœ๊ทธ์•„์›ƒ</a>
</div>
 <%   	
    }
%> 

<a href="/jspPro/cstvsboard/list.htm">๊ฒŒ์‹œํŒ</a><br>
<a href="#">๊ณต์ง€์‚ฌํ•ญ</a><br>

<%
    if(  logonID != null ){
%>
<!-- ๋ฐ˜๋“œ์‹œ ์ธ์ฆ(๋กœ๊ทธ์ธ)์„ ๋ฐ›์•„์•ผ์ง€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”๋‰ด -->
<a href="#">์ผ์ •๊ด€๋ฆฌ</a><br>
<a href="#">์ž๋ฃŒ์‹ค</a><br>

<!-- ์ธ์ฆ + ๊ด€๋ฆฌ์ž ๊ถŒํ•œ์ด ์žˆ์–ด์•ผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”๋‰ด -->
<%
       if( logonID.equals("admin") ){
%>
<a href="#">๊ธ‰์—ฌ๊ด€๋ฆฌ</a><br>
<a href="#">๊ทผํƒœ๊ด€๋ฆฌ</a><br>
<%    	
       } //  if    	
    }  // if
%>

jstl ๋ฒ„์ „

<%@page import="com.util.Cookies"%>
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c"  uri="http://java.sun.com/jsp/jstl/core" %>
<%@ include file="/WEB-INF/inc/session_auth.jspf" %>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>2022. 12. 12. ์˜คํ›„ 2:10:17</title>
<link rel="shortcut icon" type="image/x-icon" href="../images/SiSt.ico">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.1/jquery.min.js"></script>
<style>
  div{
    border: 1px solid gray;
    width:300px;
    height:100px;
    padding:20px;
  }
</style>
</head>
<body>
<h3>ex02_default_EL_JSTL.jsp - ๋ฉ”์ธ ํŽ˜์ด์ง€</h3>

<pre>
    p 242 ์„ธ์…˜์„ ์‚ฌ์šฉํ•œ ๋กœ๊ทธ์ธ ์ƒํƒœ ์œ ์ง€
</pre>

<c:choose>
   <c:when test="${ empty logonID }">
        <div id="logon">
			  <form action="ex02_logon.jsp">
			    ์•„์ด๋”” : <input type="text" name="id" value="admin" /><br>
			    ๋น„๋ฐ€๋ฒˆํ˜ธ : <input type="password" name="passwd" value="1234" /><br>
			    <input type="submit" value="๋กœ๊ทธ์ธ" />
			    <input type="button" value="ํšŒ์›๊ฐ€์ž…" /> 			     
			    <c:if test="${ not empty  param.error }">
			        <span style="color:red">๋กœ๊ทธ์ธ ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค.</span>
			    </c:if>  			    
			    <script>
			        $(function (){
			        	$("#logon span").fadeOut(5000);
			        })
			    </script>		    
			  </form>
     </div>
   </c:when>
   <c:otherwise>
          <div id="logout">
			   [<%= logonID %>]๋‹˜ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค<br>
			   <a href="ex02_logout.jsp">๋กœ๊ทธ์•„์›ƒ</a>
			</div>
   </c:otherwise>
</c:choose>

<a href="/jspPro/cstvsboard/list.htm">๊ฒŒ์‹œํŒ</a><br>
<a href="#">๊ณต์ง€์‚ฌํ•ญ</a><br>

<c:if test="${ not empty logonID }">
    <a href="#">์ผ์ •๊ด€๋ฆฌ</a><br>
    <a href="#">์ž๋ฃŒ์‹ค</a><br>    
    <!-- EL ์—ฐ์‚ฐ์ž :  ==  eq -->
    <c:if test="${ logonID eq 'admin' }">
		 <a href="#">๊ธ‰์—ฌ๊ด€๋ฆฌ</a><br>
		<a href="#">๊ทผํƒœ๊ด€๋ฆฌ</a><br>
    </c:if>    
</c:if>

 

logon.jsp

<%@page import="com.util.Cookies"%>
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c"  uri="http://java.sun.com/jsp/jstl/core" %> 
<!-- <h3>ex03_logon.jsp</h3> -->
<%
     // DB  member ํ…Œ์ด๋ธ”    id/pwd ์ฒดํฌ
     String id= request.getParameter("id");
     String passwd= request.getParameter("passwd");
     //
     if( id.equals("admin") && passwd.equals("1234") ){
    	 // ๊ด€๋ฆฌ์ž ์ธ์ฆ
    	 // ์„ธ์…˜ ์ €์žฅ
    	 session.setAttribute("auth", id );
    	 
    	 String location = "ex02_default.jsp";
    	 response.sendRedirect(location);
     }else if(id.equals("hong") && passwd.equals("1234") ){
    	 // ์ผ๋ฐ˜๊ณ„์ฆ์œผ๋กœ  ์ธ์ฆ
    	  session.setAttribute("auth", id );
    	 
    	 String location = "ex02_default.jsp";
    	 response.sendRedirect(location);
     }else if(id.equals("park") && passwd.equals("1234") ){
    	 // ์ผ๋ฐ˜๊ณ„์ฆ์œผ๋กœ  ์ธ์ฆ
    	 session.setAttribute("auth", id );
    	 
    	 String location = "ex02_default.jsp";
    	 response.sendRedirect(location);
     }else{  // ์ธ์ฆ ์‹คํŒจ
    	 String location = "ex02_default.jsp?error";
    	 response.sendRedirect(location);
     }
%>

logout.jsp

<%@page import="com.util.Cookies"%>
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c"  uri="http://java.sun.com/jsp/jstl/core" %>
<%@ include file="/WEB-INF/inc/session_auth.jspf" %>
<!-- <h3>ex02_logout.jsp</h3> -->

<%
    // ์„ธ์…˜ ์‚ญ์ œ
    // 1) ์š”์ฒญ  ์•ฝ 20๋ถ„ ์ •๋„ ํ•˜์ง€ ์•Š์œผ๋ฉด ์ž๋™์œผ๋กœ ์„ธ์…˜ ์ข…๋ฃŒ.
    // 2) ์„ธ์…˜ ๊ฐ•์ œ ์ง€๊ธˆ ๋ฐ”๋กœ ์ข…๋ฃŒ.
    session.invalidate();
%>
<script>
   alert("[<%= logonID %>]๋‹˜ ๋กœ๊ทธ ์•„์›ƒ ํ•˜์…จ์Šต๋‹ˆ๋‹ค.");
   location.href = "ex02_default.jsp";
</script>

   p 245 ์—ฐ๊ด€๋œ ์ •๋ณด ์ €์žฅ์„ ์œ„ํ•œ ํด๋ž˜์Šค ์ž‘์„ฑ

   -> ํ•˜๋‚˜์˜ ๋ฆฌ์ŠคํŠธ๋กœ ์„ธ์…˜์— ์ €์žฅ!

 

   1. ์„ธ์…˜ 

          - ์ธ์ฆ์ •๋ณด ์ €์žฅ auth=logonID(hong)

          - ๊ถŒํ•œ์ •๋ณด ์ €์žฅ           ๊ด€๋ฆฌ์ž. ์ผ๋ฐ˜ํšŒ์›. MVP ํšŒ์› ๋“ฑ๋“ฑ    ๋“ฑ๊ธ‰

          - ์žฅ๋ฐ”๊ตฌ๋‹ˆ ์ •๋ณด ์ €์žฅ.

              ์ƒํ’ˆ์ฝ”๋“œ๋ฒˆํ˜ธ/์ˆ˜๋Ÿ‰/๋‚ ์งœ ๋“ฑ๋“ฑ

              ์ƒํ’ˆ์ฝ”๋“œ๋ฒˆํ˜ธ/์ˆ˜๋Ÿ‰/๋‚ ์งœ ๋“ฑ๋“ฑ

              ์ƒํ’ˆ์ฝ”๋“œ๋ฒˆํ˜ธ/์ˆ˜๋Ÿ‰/๋‚ ์งœ ๋“ฑ๋“ฑ

              ์ƒํ’ˆ์ฝ”๋“œ๋ฒˆํ˜ธ/์ˆ˜๋Ÿ‰/๋‚ ์งœ ๋“ฑ๋“ฑ

              

              ์ƒํ’ˆ์ฝ”๋“œ๋ฒˆํ˜ธ/์ˆ˜๋Ÿ‰/๋‚ ์งœ ๋“ฑ๋“ฑ

              ArrayList< ์žฅ_์ƒํด๋ž˜์Šค> ์žฅlist;

             session.setAttribute("์žฅlist", ์žฅlist);    

          

          

          ๊ด€๋ จ๋œ ์—ฌ๋Ÿฌ ๊ฐ€์ง€์˜ ์ •๋ณด๋ฅผ ์„ธ์…˜ ์ €์žฅ.

          ( ๋กœ๊ทธ์ธํ•œ ํšŒ์› ์ •๋ณด ๋ชจ๋‘ ์ €์žฅ : ์•„์ด๋””/์ด๋ฆ„/๋“ฑ๊ธ‰/์ฃผ์†Œ/์—ฐ๋ฝ์ฒ˜ ๋“ฑ๋“ฑ)

          session.setAttribute("id", ์•„์ด๋””);                

          session.setAttribute("name", ์•„์ด๋””);                

          session.setAttribute("grade", ์•„์ด๋””);                

          session.setAttribute("addr", ์•„์ด๋””);                

          session.setAttribute("tel", ์•„์ด๋””);       

          

          Member m = new Member();       + ํ•„๋“œ

          session.setAttribute("member", m);


    p 250 Chapter 11 ํ‘œํ˜„์–ธ์–ด(Expression Language : EL)

                                ์ถœ๋ ฅ์–ธ์–ด

         - EL ์ž๋ฃŒํ˜•

         - EL ๊ธฐ๋ณธ ๊ฐ์ฒด             param

         - EL ์—ฐ์‚ฐ์ž                 eq  ==

         - EL ์ปฌ๋ ‰์…˜ 

         - EL ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ๊ฐ€๋Šฅ ( ๋ฐฉ๋ฒ• ) ***

         - EL ๋žŒ๋‹ค์‹๊ณผ ์ŠคํŠธ๋ฆผ API

         

        1) EL ์ •์˜ ? 

            - ๋‹ค๋ฅธ ํ˜•ํƒœ์˜ ์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด.

            - ํ‘œํ˜„์‹ ๋ณด๋‹ค ๊ฐ„๊ฒฐํ•˜๊ณ  ํŽธ๋ฆฌํ•˜๋‹ค.            

            - JSTL 1.0์—์„œ ์†Œ๊ฐœ๋จ.                            EL + JSTL              

            - JSP 2.0  ์—  EL ํฌํ•จ,

               JSP 2.3 == EL 3.0  ํ•œ ์Œ.

        

        2) EL ๊ธฐ๋Šฅ

            - JSP์˜ ๋„ค ๊ฐ€์ง€ ๊ธฐ๋ณธ ๊ฐ์ฒด๊ฐ€ ์ œ๊ณตํ•˜๋Š” ์˜์—ญ(scope)์˜ ์†์„ฑ ์‚ฌ์šฉ.

                pageContext scope

                request scope

                session scope

                application scope

                

            -  ์ˆ˜์น˜ ์—ฐ์‚ฐ, ๊ด€๊ณ„ ์—ฐ์‚ฐ( ==  eq , !=  ne), ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž( not  ! , empty    ) ์ œ๊ณต

            -  ์ž๋ฐ”ํด๋ž˜์Šค์˜ ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ ๊ฐ€๋Šฅ 

            - ๋žŒ๋‹ค์‹ ์‚ฌ์šฉ( EL 3.0 )

            - ์ฟ ํ‚ค, ๊ธฐ๋ณธ ๊ฐ์ฒด์˜ ์†์„ฑ ๋“ฑ JSP๋ฅผ ์œ„ํ•œ ํ‘œํ˜„ ์–ธ์–ด์˜ ๊ธฐ๋ณธ ๊ฐ์ฒด ์ œ๊ณต ( param )

            - ์ŠคํŠธ๋ฆผ API๋ฅผ ํ†ตํ•œ ์ปฌ๋ ‰์…˜ ์ฒ˜๋ฆฌ   ( EL 3.0 )

            - ์ •์ (static) ๋ฉ”์„œ๋“œ ์‹คํ–‰( EL 3.0 )

         <%--    

         3) EL ๊ตฌ์„ฑ( ์„ ์–ธ ํ˜•์‹ )

         ${  expr }               

         p 252                   JSP 2.1 ๋ถ€ํ„ฐ                     #{ expr }            X                 => ์Šคํ”„๋ง(Spring)

         ์ฐจ์ด์  : ์‹ค์ œ EL์˜ ๊ฐ’์„ ์–ธ์ œ ์ƒ์„ฑํ•˜๋Š๋ƒ์— ์žˆ๋‹ค. 

          --%>

 

     p 253  EL ๊ธฐ์ดˆ

       - EL ์ž๋ฃŒํ˜•, ์—ฐ์‚ฐ์ž ์žˆ๋‹ค.

       1. boolean - true, false

       2. ์ •์ˆ˜ :   0~9 , -8                      ==   java.lang.[Long]

       3. ์‹ค์ˆ˜ : 3.14                               ==  java.lang.Double

       4. ๋ฌธ์ž์—ด :    ""     ''

                       " \"   \'  \\   "           == java.lang.String

       5. ๋„ ํƒ€์ž… :  null

${true }
${ -10 }
${ 3.14 }
${"ํ™\"๊ธธ๋™" }
${ null }<br>

    p 254 EL ๊ธฐ๋ณธ ๊ฐ์ฒด

    1. pageContext                           == page ๊ธฐ๋ณธ๊ฐ์ฒด ๋™์ผ 

    2. pageScope                              Map ๊ฐ์ฒด์ด๋‹ค.

       requestScope

       sessionScope

       applicationScope

    3. param                == String request.getParameter()

        paramValues     == request.getParameterValues()       Map ๊ฐ์ฒด

    4. header               == request.getHeader()   Map ๊ฐ์ฒด

        headerValues    == request.getHeaders() Map ๊ฐ์ฒด

    5. cookie            Map ๊ฐ์ฒด  <์ฟ ํ‚ค์ด๋ฆ„, ๊ฐ’ ๋ฐฐ์—ด >

    6. initParam          == application.getInitParameter(์ด๋ฆ„)    Map ๊ฐ์ฒด    

        [ web.xml ]

    <context-param>

    <description>๋””๋ฒ„๊น… ๋ ˆ๋ฒจ</description>

    <param-name>debugLevel</param-name>

    <param-value>3</param-value>

  </context-param>

   

  ${ initParam.debugLevel }

------------------------------------------------------------------------

์˜ˆ์ œ)

1) ํ‘œํ˜„์‹

 <%
      String rURI =  request.getRequestURI();
 %> 
์š”์ฒญ URI : <%= rURI %><br> 
 
 ์š”์ฒญ URI( ํ‘œํ˜„์‹) : <%= request.getRequestURI() %><br>
 <%
     request.setAttribute("name", "ํ™๊ธธ๋™");
 %>
 <%
     String name = (String)request.getAttribute("name");
 %>
 name(ํ‘œํ˜„์‹) = <%=  name%><br>
 code ํŒŒ๋ผ๋ฏธํ„ฐ(ํ‘œํ˜„์‹) : <%= request.getParameter("code") %>

2) EL

 ์š”์ฒญ URI(EL) : ${  pageContext.request.requestURI }
name(EL) = ${ requestScope.name }
name(EL) = ${ name } <!-- ์˜์—ญ์— ์žˆ๋Š” name X : 4๊ฐ€์ง€ ์˜์—ญ์„ ๋ชจ๋‘ ๋’ค์ ธ์„œ ์–ป์–ด์˜จ๋‹ค.-->
 code ํŒŒ๋ผ๋ฏธํ„ฐ(EL) : ${ param.code }

- 1) 2) ๊ฐ™์€ ์ฝ”๋”ฉ!


p 256   EL ์ฟ ํ‚ค ์‚ฌ์šฉ๋ฐฉ๋ฒ• ***

${ cookie.ID.value } Map ๊ฐ์ฒด  <์ฟ ํ‚ค์ด๋ฆ„, ๊ฐ’ ๋ฐฐ์—ด > 
    1) ํ‘œํ˜„
    cookie.ID           ์ฟ ํ‚ค๊ฐ’์ด ID ์ธ     Cookie ๊ฐ์ฒด๋ฅผ ์–ป์–ด์˜จ๋‹ค. 
    Cookie.ID.value  ( getValue () )   Cookie ๊ฐ์ฒด์˜ value(๊ฐ’) 
                             
    2) ํ‘œํ˜„
    cookie["ID"]

1) 2) ํ‘œํ˜„ ๋‘˜ ๋‹ค ๊ฐ€๋Šฅ!

 

์ฟ ํ‚ค ok.jsp

<!-- EL ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  -->
<%
     Cookies cookies = new Cookies(request);
    // key ์ฟ ํ‚ค์ด๋ฆ„  value ์ฟ ํ‚ค๊ฐ์ฒด
     Set<Entry<String, Cookie>> set = cookies.cookieMap.entrySet();
     Iterator<Entry<String, Cookie>> ir =   set.iterator();
     while( ir.hasNext() ){
    	 Entry<String, Cookie> entry =    ir.next();
    	 String cookieName = entry.getKey();
    	 Cookie c = entry.getValue();
%>
    <li><%= cookieName %> - <%= c.getValue() %> </li>
<%    	 
     } // while
%>

 

<!-- EL ์‚ฌ์šฉํ•˜๊ณ -->
EL user : ${  cookie.user.value }<br>
EL id : ${  cookie["id"].value }<br>
EL age : ${  cookie.age.value }<br>
<!-- EL + JSTL ๋ชจ๋“  ์ฟ ํ‚ค ์ •๋ณด๋ฅผ ์ถœ๋ ฅ --> 
<c:forEach items="${ cookie }"  var="entry">
  <li>${ entry.key } - ${ entry.value.value }</li>
</c:forEach>

* entry.value๋Š” ์ฟ ํ‚ค ๊ทธ ์ž์ฒด์ž„ -> entry.value.value๋กœ ๋ฐ›์•„์™€์•ผํ•จ

* ๋ฒ”์œ„๊ฐ€ ์ž‘์€ ๊ฒƒ๋ถ€ํ„ฐ name ๊ฐ’ ๊ฐ€์ ธ์˜ด (๊ทธ๋ƒฅ name์ด๋ผ๊ณ  ํ–ˆ์„๋•Œ - page -> request -> session -> application)


   p 258  EL ์—ฐ์‚ฐ์ž

   +   ๋ง์…ˆ

   -   ๋บ„์…ˆ

   *

   /      div

   %     mod

   

   -2  ๋‹จํ•ญ์—ฐ์‚ฐ์ž.

${  10 + 3  }<br>
${  10 - 3  }<br>
${  10 * 3  }<br>
${  10 / 3  }<br>
<%-- ${  10 div 3  }<br> --%>
${  10 % 3  }<br>
<%-- ${  10 mod 3  }<br> --%>

<!-- 13  ๊ทธ ์ด์œ  ?  +   EL ๋ฌธ์ž์—ด ์—ฐ๊ฒฐ์—ฐ์‚ฐ์ž X,    + ์ˆ˜์น˜์—ฐ์‚ฐ์ž( ๋ง์…ˆ ) -->
${  "10" + 3 }<br>   <!-- java   "103" -->
<%-- ${  "test" + 3 }<br>    --%>

<%-- ${  null + 3 }  ==> 0 --%>

   p 260 EL ๋น„๊ต ์—ฐ์‚ฐ์ž

   ==    eq

   !=      ne

   <      lt

   >     gt

   <=    le

   >=    ge

${  100  ==  10 }<br>
${  100  eq  10 }<br>

 ${  100  !=  10 }<br>
<%-- ${  100  ne  10 }<br> --%>

${  100  >  10 }<br>
${  100  gt  10 }<br>

${  100  <  10 }<br>
${  100  lt  10 }<br>

${  100  >=  10 }<br>
${  100  ge  10 }<br>

${  100  <=  10 }<br>
${  100  le  10 }<br>

     ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž 

     &&           and

     ||             or

     !              not

${  true && false }<br>
${  true and false }<br>

${  true || false }<br>
${  true or false }<br>

${  !false }<br>
${  not false }<br>

    [ empty ์—ฐ์‚ฐ์ž ]

    null             true

    ""                 true

    ๊ธธ์ด 0          true

    ๋น„ Map         true

    ๋น„ ์ปฌ๋ ‰์…˜       true                ArrayList<BoardDTO> list= null

                                              ArrayList<BoardDTO> list= new ArrayList<>(); // ๋น„์›Œ์žˆ๋Š” ์ปฌ๋ ‰์…˜.

                                              { not empty list }

                                              

   ์œ„์˜ ๊ฒฝ์šฐ ์™ธ์— ๋ชจ๋‘ false ๊ฐ’์œผ๋กœ ์ฒ˜๋ฆฌํ•œ๋‹ค.  

 

    ์‚ผํ•จ ์—ฐ์‚ฐ์ž             ?   :    

 

p 262 ๋ฌธ์ž์—ด ์—ฐ๊ฒฐ ์—ฐ์‚ฐ์ž.          +( ๋ง์…ˆ ์‚ฐ์ˆ ์—ฐ์‚ฐ์ž. ) 

<%
     request.setAttribute("title", "์˜ค๋ผํด");
%>
<!-- EL์—์„œ ๋ฌธ์ž์—ด ์—ฐ๊ฒฐํ•˜๋Š” ์—ฐ์‚ฐ์ž ์ถ”๊ฐ€            += ์—ฐ์‚ฐ์ž -->
${ "์ œ๋ชฉ : " += title } <br>

<!-- 
[ p 262 ์„ธ๋ฏธ์ฝœ๋ก  ์—ฐ์‚ฐ์ž. EL 3.0]
1+1 ๋ง์…ˆ ์ฒ˜๋ฆฌํ•˜๊ณ 
10+10 ๋ง์…ˆ ์ฒ˜๋ฆฌํ•˜๊ณ 
ํ•˜์ง€๋งŒ ์ถœ๋ ฅ์€ ๋’ท์— ๊ฒƒ๋งŒ ์ถœ๋ ฅํ•ด์„œ 20 ๋‚˜์˜จ๋‹ค.
 -->
${  1+1 ; 10+10 }<br>

<!-- p 265 EL 3.0
๋ณ€์ˆ˜ var1์— 10 ๊ฐ’์„ ํ• ๋‹นํ•˜๊ณ    var1 ๋ณ€์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.  -->
${ var1 = 10 }<br>

   EL ์—ฐ์‚ฐ์ž ์šฐ์„  ์ˆœ์œ„๊ฐ€ ์žˆ๋‹ค.

   \${  expr }         == EL ํ‘œํ˜„์ด ์•„๋‹ˆ๋ผ   "๋ฌธ์ž์—ด"


    p 266   EL์—์„œ ๊ฐ์ฒด์˜ ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ

               EL์—์„œ statc ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ

<%
     long price = 22345;
     // EL ์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ           ์Šค์ฝ”๋“œ(์˜์—ญ) ์ €์žฅ
     request.setAttribute("price", price);
     
     // (๋ฌธ์ œ)  ์„ธ ์ž๋ฆฌ ๋งˆ๋‹ค ์ฝค๋งˆ๋ฅผ ์ฐ์–ด์„œ ์ถœ๋ ฅํ•˜๊ณ  ์‹ถ๋‹ค.   22,345
     // (๋ฌธ์ œ)  EL ์„ธ ์ž๋ฆฌ ๋งˆ๋‹ค ์ฝค๋งˆ๋ฅผ ์ฐ์–ด์„œ ์ถœ๋ ฅํ•˜๊ณ  ์‹ถ๋‹ค.   22,345
%>

price( ํ‘œํ˜„์‹ ) = <%= price %><br>
price( ํ‘œํ˜„์‹ ) = <%= String.format("%,d", price) %><br>
<%
      // ํ˜•์‹ํ™” ํด๋ž˜์Šค 
      String pattern = "##,###";
      DecimalFormat df = new DecimalFormat(pattern);
%>
price( ํ‘œํ˜„์‹ ) = <%= df.format(price) %><br>

price( EL ) = ${ requestScope.price }<br>
price( EL ) = ${ price }<br>
<!-- ์„ธ์ž๋ฆฌ๋งˆ๋‹ค ์ฝค๋งˆ ์ถœ๋ ฅ  ? -->
price( EL ) = <fmt:formatNumber value="${ price }"  pattern="#,###"/><br>
<!-- ex04_06_02.jsp -->

p 266 [ EL์—์„œ ์ธ์Šคํ„ด์Šค, (์Šคํƒœํ‹ฑ ๋ฉ”์„œ๋“œ)  ์‚ฌ์šฉ ]

<%
     long price = 22345; 
     request.setAttribute("price", price);
     
     // days08.FormatUtil.java
%>

<%
   // 1. ์ธ์Šคํ„ด์Šค ๋ฉ”์„œ๋“œ ์‚ฌ์šฉํ•œ  ์ฝ”๋”ฉ.
     FormatUtil f = new FormatUtil();
     request.setAttribute("f", f);
%>
FormatUtil.number()  = ${  f.number(price, "#,##0") }<br>

 <!-- // 2 ์Šคํƒœํ‹ฑ ๋ฉ”์„œ๋“œ ์‚ฌ์šฉํ•œ ์ฝ”๋”ฉ -->
 FormatUtil.staticNumber()  = ${  FormatUtil.staticNumber(price, "#,##0") }<br>

FormatUtil.java

package days08;

import java.text.DecimalFormat;

public class FormatUtil {
	
	// 1 ์ธ์Šคํ„ด์Šค ๋ฉ”์„œ๋“œ
	public String number(long number, String pattern) {
		DecimalFormat df = new DecimalFormat(pattern);
		return df.format(number);
	}
	
	// 2 ์Šคํƒœํ‹ฑ ๋ฉ”์„œ๋“œ 
	public static String staticNumber(long number, String pattern) {
		DecimalFormat df = new DecimalFormat(pattern);
		return df.format(number);
	}
}

   p 292 Chatper 12 ํ‘œ์ค€ ํƒœ๊ทธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ( JSTL )

       - JSTL

          - ๊ฐœ๋ฐœ์ž ํ•„์š”์— ์˜ํ•ด์„œ ๋งŒ๋“œ๋Š” ํƒœ๊ทธ : ์ปค์Šคํ…€ ํƒœ๊ทธ

          - ๋งŽ์€ ๊ฐœ๋ฐœ์ž๋“ค์ด  ๊ณตํ†ต์˜ ๊ธฐ๋Šฅ์˜ ์ปค์Šคํ…€ ํƒœ๊ทธ๋ฅผ ๋งŒ๋“ค์–ด์„œ ์‚ฌ์šฉ์„ ํ•˜๋”๋ผ.

             -> ๋ชจ์•„์„œ ํ‘œ์ค€ํ™”ํ•ด์„œ ํƒœ๊ทธ ๋งŒ๋“ค์ž...

      - JSTL( Jsp Standard Tag Library)       

      - JSTL  

           *** 1)  c             ์ฝ”์–ด                          ๋ณ€์ˆ˜์ง€์›, ํ๋ฆ„ ์ œ์–ด, URL์ฒ˜๋ฆฌ

+)

     ํ๋ฆ„ ์ œ์–ด : if    choose, forEach,                          forTokens

    URL ์ฒ˜๋ฆฌ : import, redirect, url

    ๊ธฐํƒ€        : catch, out(JspWriter์— ๋‚ด์šฉ์„ ์ถœ๋ ฅํ•œ๋‹ค.)

              

           2)  fmat      ๊ตญ์ œํ™”(ํ˜•์‹ํ™”)            ์ˆซ์ž,๋‚ ์งœ,๋ฌธ์ž์—ด ํ˜•์‹, ์ง€์—ญ

                                                              \22.345

                                                              $22.345

           3) xml           XML                      xml ์ฝ”์–ด, ํ๋ฆ„์ œ์–ด, xml๋ณ€ํ™˜   X

           4) sql         ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค     

                ex06.jsp      

           5) fn             ํ•จ์ˆ˜                         String ํ•จ์ˆ˜, ์ปฌ๋ ‰์…˜ ํ•จ์ˆ˜

 

ex 1)

 ex07.jsp                ๋ณ€์ˆ˜ ์„ ์–ธ, ์ œ๊ฑฐ    c:set, c:remove

    p 295  ์ฝ”์–ดํƒœ๊ทธ   c


    
    ๋ณ€์ˆ˜ ์„ ์–ธ :  set , remove
          var : EL๋ณ€์ˆ˜๋ช…
          scope  : [page], request, session, application
          value :  ๋ฌธ์ž์—ด, ํ‘œํ˜„์‹, EL
<%
   String name = "ํ™๊ธธ๋™";
   // request.setAttribute("name", name);
%>

> name :  <%= name %><br>

<!-- page, request, session, application ์˜์—ญ ๊ฒ€์‚ฌ -->
<%-- <c:set value="ํ™๊ธธ๋™" var="cname"  scope="request"></c:set> --%>
<%-- <c:set value="<%= name %>" var="cname"  scope="request"></c:set> --%>
<c:set var="cname"  scope="request"><%= name %></c:set>
> name :  ${ cname }<br>

* EL์˜ ๊ฒฝ์šฐ name์„ attribute์•ˆ์— ๋„ฃ์–ด์•ผ ์ธ์‹ ๊ฐ€๋Šฅ!

* ๋งŒ์•ฝ ๋„ฃ์–ด์ฃผ์ง€ ์•Š์•˜ใ„ท๋ฉด c:set์œผ๋กœ ๋ณ€์ˆ˜ ํ• ๋‹น

 

              ex07_02.jsp

   1)     c:set  var="๋ณ€์ˆ˜๋ช…"  value="๊ฐ’" scope="4 ์˜์—ญ"
   2)     c:set target="" property=""  value=""    
           target : ์†์„ฑ(property) ๊ฐ’์„ ์„ค์ •ํ•  ๋Œ€์ƒ ๊ฐ์ฒด ์ง€์ •
                        ํ‘œํ˜„์‹, EL ,          ์ž๋ฐ”๋นˆ, ๋งต
           property : ์„ค์ •ํ•  ์†์„ฑ์˜ ์ด๋ฆ„
                        ๊ฐ์ฒด set์ด๋ฆ„  == setter ์„ ์–ธ์ด ๋˜์–ด์ ธ ์žˆ์–ด์•ผ ๋œ๋‹ค. 
                        property="dname"  
                                          setDname() ์„ ์–ธ๋˜์–ด์ ธ ์žˆ์–ด์•ผ ํ•œ๋‹ค. 
                        
           value : ๊ฐ’
           
    p 298 ํ‘œ 12.3
       var ์†์„ฑ, scope ์†์„ฑ :   ํ‘œํ˜„์‹ X, EL X
       target, value, property :  ํ‘œํ˜„์‹ O, EL O
<%
     DeptDTO dto = new DeptDTO(10, "QC", "SEOUL");
     //request.setAttribute("dto", dto);
%>

<c:set var="dto"  value="<%= dto %>"></c:set>

<%
      // dto.setDname("XXX");
%>
<%-- <c:set target="<%= dto %>"></c:set> --%>
<c:set target="${ dto }"  property="dname"  value="YYY"></c:set> 

deptno : ${ dto.deptno } <br>
dname : ${ dto.dname }<br>
loc : ${ dto.loc }<br>

<%-- 
<c:forEach  items="${ list }"  var="dto">
<c:forEach  items="<%= list %>"  var="dto">
</c:forEach>
 --%>

<์š”์•ฝ>

  

            ex07_03.jsp

<%
     Map<String, String> map = new HashMap<>();
     map.put("id", "admin");
     map.put("passwd", "1234");
     
     // request.setAttribute("map", map);
%>

<c:set var="m" value="<%= map %>"></c:set>

id = ${ m.id }<br>
passwd = ${ m.passwd }<br>

<hr>

<pre>
    c:remove ํƒœ๊ทธ๋Š”  c:set ์œผ๋กœ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋ฅผ ์‚ญ์ œํ•˜๋Š” ํƒœ๊ทธ์ด๋‹ค. 
</pre>
<%-- <c:remove var="m" /> --%>
<%
    // map.put("name", "ํ™๊ธธ๋™");
%>

<%-- <c:set target="<%= map %>"></c:set> --%>
<c:set target="${ m }"  property="name" value="ํ™๊ธธ๋™"></c:set>

name = ${ m.name }<br>

 

ex +)

              ex08.jsp   ํ๋ฆ„์ œ์–ด

num parameter = ${ param.num }<br>

<%-- 
<c:set  var="pn"  value="${ param.num }" ></c:set>
<c:if test="${  pn mod 2 eq 0 }">์ง์ˆ˜</c:if>
<c:if test="${  pn mod 2 ne 0 }">ํ™€์ˆ˜</c:if>
 --%>
 
<!-- ์œ„์™€ ๊ฐ™์ด c:set์œผ๋กœ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜์ง€ ์•Š์•„๋„๋œ๋‹ค.  -->
<%-- 
<c:if test="${  param.num mod 2 eq 0 }">์ง์ˆ˜</c:if>
<c:if test="${  param.num mod 2 ne 0 }">ํ™€์ˆ˜</c:if>
 --%>
 
 <c:choose>
    <c:when test="${  param.num mod 2 eq 0 }">์ง์ˆ˜</c:when>
    <c:otherwise>ํ™€์ˆ˜</c:otherwise>
 </c:choose>

              ex08_02.jsp (ex)

<form>
 ๊ตญ์–ด : <input type="text"  name="kor">
</form>
<!-- 98/10 = ํ•จ์ˆ˜ Math.ceil( 9.8) ์ ˆ์‚ญ  = 9 -->
<c:set value="${ param.kor }"  var="kor"></c:set>

<%-- 
<c:choose>
    <c:when test=" ${  kor >= 90 && kor <= 100 }">์ˆ˜</c:when>
    <c:when test="${  kor ge 80 and kor lt 90 }">์šฐ</c:when>
    <c:when test="">๋ฏธ</c:when>
    <c:when test="">์–‘</c:when>
    <c:otherwise>๊ฐ€</c:otherwise>
</c:choose>
 --%>

              ex08_03.jsp    forEach ์ œ์–ด๋ฌธ

   [ p 303   c:forEach ํƒœ๊ทธ ]
    - ๋ฐฐ์—ด            ex08_04.jsp
    - ์ปฌ๋ ‰์…˜         X   ArrayList<BoardDTO> list
    - ๋งต               ex08_04.jsp
    ์— ์ €์žฅ๋˜์–ด์žˆ๋Š” ๊ฐ’๋“ค์„ "์ˆœ์ฐจ์ ์œผ๋กœ" ์ฒ˜๋ฆฌํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. 
    
   - begin=""  ์‹œ์ž‘๊ฐ’
   - end=""      ๋๊ฐ’
   - items=""  EL
    - step=""   ์ฆ๊ฐ€์น˜
    - var=""   ๋ณ€์ˆ˜๋ช…
    - varStatus=""  ๋ณ€์ˆ˜์ƒํƒœ
<!-- 1+2+..+10=55 -->
<!-- sum ๋ณ€์ˆ˜ ์„ ์–ธ -->
<c:set var="sum" value="0"></c:set>
<c:set var="start" value="1"></c:set>
<%
    int end = 10;
    int ์ฆ๊ฐ€์น˜ = 2;
%>
<c:forEach begin="${start }" end="<%= end %>" step="<%= ์ฆ๊ฐ€์น˜ %>" var="i">
   <%-- 
   <c:if test="${  i  eq 10 }">${ i }</c:if>
   <c:if test="${  i  ne 10 }">${ i }+</c:if>
    --%>
    
    <!-- += ๋ฌธ์ž์—ด ์—ฐ๊ฒฐ์—ฐ์‚ฐ์ž , ์‚ผํ•ญ์—ฐ์‚ฐ์ž -->
    ${    i +=   (i==10? "":"+") }
   <c:set var="sum" value="${  sum + i }"></c:set>
</c:forEach>
= ${ sum }


<br>

<!-- ํ”„๋กœ์ ํŠธํ•  ๋•Œ ์‚ฌ์šฉ -->
<!--  p 305
   varStatus="status"
   status.index  ๋ฃจํ”„ ์‹คํ–‰์—์„œ์˜ ํ˜„์žฌ ์ธ๋ฑ์Šค
   status.count  ๋ฃจํ”„์˜ ์‹คํ–‰ ํšŸ์ˆ˜
   status.begin, end, step
   
   status.first   ์ฒซ           true
   status.last    ๋งˆ์ง€๋ง‰
   status.current
 -->
<c:forEach  begin="1" end="5"  var="i" varStatus="status">
    <c:if test="${ status.first }">์ฒซ๋ฒˆ์งธ : </c:if>
    <c:if test="${ status.last }">๋งˆ์ง€๋ง‰๋ฒˆ์งธ : </c:if>
    test - ${ i } - index : ${ status.index }<br>

              ex08_04.jsp   c:forEach ํƒœ๊ทธ - ๋ฐฐ์—ด + ๋งต์ฒ˜๋ฆฌ

<!-- int [] m = { 1,2,3,4,5 } -->
<%
     // int []  m = { 3,5,2,4,1};
%>
<%-- <c:set var="m"  value="<%= m %>"></c:set> --%>

<c:set var="m"  value="<%= new int[]{ 3,5,2,4,1} %>"></c:set> 
<c:forEach  items="${ m }"  var="n"  varStatus="status">
  <li> m[${  status.index }] = ${ n }</li>
</c:forEach>

<hr>
<pre>
    c:forEach ํƒœ๊ทธ - ๋งต(Map) ์ฒ˜๋ฆฌ
</pre>
<%
    Map<String, String> map = new HashMap<>();
    map.put("id", "admin");
    map.put("age", "20");
    map.put("name", "ํ™๊ธธ๋™");
    
%>

<c:set var="person" value="<%= map %>"></c:set>

${ person.id }<br>
${ person["id"] }<br>

<ol>
<c:forEach items="${ person }"  var="entry">
   <li>${ entry.key } : ${ entry.value }</li>
</c:forEach>
</ol>

              ex08_05.jsp  p 307   [ c:forTokens ํƒœ๊ทธ   ==  split() ๋น„์Šท  ]+

    p 307  URL ์ฒ˜๋ฆฌ ํƒœ๊ทธ

    c:url ํƒœ๊ทธ                  : URL ์ƒ์„ฑ

    c:redirect ํƒœ๊ทธ         : ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ ์ฒ˜๋ฆฌ     response.sendRedirect()

<c:forTokens items="ํ—ˆ์ •์—ฐ,์ด์žฌ๋ฏผ.์—„ํƒœํ˜,๊ถŒ์žฌํ˜„,์˜ค์Šน์ฃผ" delims=",."  var="name">
    ${ name }<br>
</c:forTokens>

<%-- url

<c:url var="searchUrl"  value="http://localhost/jspPro/days08/ex08.jsp">   
</c:url>

<c:redirect url="${searchUrl  }">
   <c:param name="searchCondigion" value="title"></c:param>
   <c:param name="searchWord" value="title - 30"></c:param>
</c:redirect>

 --%>

<%
     String location = "http://localhost/jspPro/days08/ex08.jsp?searchCondigion=title&searchWord=ํ™๊ธธ๋™";
     response.sendRedirect(location);
%>

- ๊ทธ๋ƒฅ String์œผ๋กœ ํ•˜๋Š”๊ฒŒ ๋‚˜์Œ (์•„๋‹ˆ๋ฉด ๊ธธ์–ด์ ธ์„œ)

 

ex08_06.jsp

   p 311

   c:out ํƒœ๊ทธ  :   JspWriter์— ๋ฐ์ดํ„ฐ๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ํƒœ๊ทธ

   value=""   ์ถœ๋ ฅํ•  ๊ฐ’.

   default="" ์ถœ๋ ฅํ•  ๊ฐ’์ด ์—†์„ ๊ฒฝ์šฐ์— ๊ธฐ๋ณธ ์ถœ๋ ฅํ•  ๊ฐ’.

   escapeXml=""  <  &lt;   > &gt;  &   '   "

                         &lt;span&gt;

                         

   p 312  ์˜ˆ์ œ 12.6 ( 5๋ถ„ ์ฝ”๋”ฉ )

<%
   FileReader fr = null;
try{
	String path = "days08/ex01.jsp";
    String realPath =  request.getRealPath(path);
    fr = new FileReader( realPath );
%>
   ์†Œ์Šค ์ฝ”๋“œ = <%= path %><br>
   <c:out value="<%= fr %>"  escapeXml="true"></c:out>
<%    
}catch(Exception e){
	%>
	   ์—๋Ÿฌ : <%= e.getMessage() %>
	<%    	
	    }finally{
	    	if( fr != null) {
	    		 try { fr.close(); }catch(IOException ex){}
	    	}
	    }
 %>

ex08_07.jsp try-catch (์ž˜์•ˆ์”€)

 <c:catch var="ex">
     //
     //
     <%
       // ?name=admin
      String name =  request.getParameter("name").toUpperCase();
     %>
      //
     //
     //
 </c:catch>

 <%-- <c:if test="${ ex != null }"> --%>
 <c:if test="${ not empty ex  }"> 
    ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.
    ${ ex }
 </c:if>

 

ex4)

<%@ taglib prefix="sql"  uri="http://java.sun.com/jsp/jstl/sql" %>
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c"  uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="sql"  uri="http://java.sun.com/jsp/jstl/sql" %>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>2022. 12. 13. ์˜คํ›„ 12:40:33</title>
<link rel="shortcut icon" type="image/x-icon" href="../images/SiSt.ico">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.1/jquery.min.js"></script>
<style>
</style>
</head>
<body>
<h3>ex06.jsp</h3>
<pre>
   scott.dept ํ…Œ์ด๋ธ”์˜  ๋ ˆ์ฝ”๋“œ ์ถœ๋ ฅ
</pre>

<!-- Spring + mybatis ํ”„๋ ˆ์ž„์›Œํฌ -->
<sql:query var="rs" dataSource="jdbc/myoracle">
   SELECT deptno, dname, loc
   FROM dept
</sql:query>

<c:forEach  items="${ rs.rows }"   var="dto">
  <li>${ dto.deptno } - ${dto.dname } - ${ dto.loc }</li>
</c:forEach>

* ๊ฒฐ๊ณผ๋ฌผ var="rs"์— ๋‹ด์Œ & dataSource(xml.web์— ์ปค๋„ฅ์…˜ํ’€)

                    


    p 315 ๊ตญ์ œํ™” ํƒœ๊ทธ 

     - ํŠน์ • ์ง€์—ญ์— ๋”ฐ๋ผ ์•Œ๋งž์€ ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ํƒœ๊ทธ

     - ์ˆซ์ž ๋ฐ ๋‚ ์งœ ํฌ๋งคํŒ… ( ์ฃผ๋กœ ์‚ฌ์šฉ. )

         formatNumber ์ˆซ์ž ํฌ๋งทํŒ…    p 325

         foramtDate 

         

         parseDate

         parseNumber 

<%
     long price = 22345;
    // ์„ธ ์ž๋ฆฌ๋งˆ๋‹ค ์ฝค๋งˆ ์ถœ๋ ฅ.
%>

<fmt:formatNumber  
        type="number"  
        value="<%= price %>"  
        pattern="##,###.00"          
        var="fmt_price"/>
price : ${  fmt_price }<br>

price : <fmt:formatNumber  value="<%= price %>"  
type="currency"  
currencySymbol="\\" /><br>

price : <fmt:formatNumber  value="<%= price %>"  
type="percent"   /><br>

<hr>

<%
    String   strPrice = "1,200.34";  // java     double ํ˜•๋ณ€ํ™˜
    // 1. strPrice.replaceAll("," , "")    "1200.34"
    // 2. double dprice = Double.parseDouble(strPrice);    
    // java parsing/formatting
    
    int qty = 5;
    // dprice * qty = ์ด ํŒ๋งค๊ธˆ์•ก.
%>

<fmt:parseNumber  value="<%= strPrice %>"  pattern = "0,000.00" var="parsingPrice"  />
<c:set  var="q" value="<%= qty %>"  />

์ด ํŒ๋งค๊ธˆ์•ก : ${ parsingPrice * q}<br>

   p 327

  ๋‚ ์งœ ์ถœ๋ ฅ - formatDate

  ๋‚ ์งœ ํŒŒ์‹ฑ - parseDate

<pre>
   p 327
  ๋‚ ์งœ ์ถœ๋ ฅ - formatDate
  ๋‚ ์งœ ํŒŒ์‹ฑ - parseDate
</pre>

<%
   Date now = new Date();
%>
now : <%= now %><br><!-- Tue Dec 13 16:39:50 KST 2022 -->

<c:set var="now"  value="<%= now %>"></c:set>

<li> <fmt:formatDate value="${ now }"/>  </li><!-- 2022. 12. 13. -->
<li> <fmt:formatDate value="${ now }"  dateStyle="default"/>  </li><!--  -->
<li> <fmt:formatDate value="${ now }"  dateStyle="full"/>  </li><!--  -->
<li> <fmt:formatDate value="${ now }"  dateStyle="short"/>  </li><!--  -->
<li> <fmt:formatDate value="${ now }"  dateStyle="long"/>  </li><!--  -->
<li> <fmt:formatDate value="${ now }"  dateStyle="medium"/>  </li><!--  -->

<li> <fmt:formatDate value="${ now }"  pattern="yyyy๋…„ MM์›” dd์ผ" />  </li><!--  -->
<hr>
<li> <fmt:formatDate value="${ now }"   type="date" />  </li><!--  -->
<li> <fmt:formatDate value="${ now }"   type="time" />  </li><!--  -->
<li> <fmt:formatDate value="${ now }"  type="both" />  </li><!--  -->

<%
    String strNow = "2022๋…„ 12์›” 13์ผ";
    // ๋‚ ์งœ ํ˜• ๋ณ€ํ™˜
    // 1. fmt:parseDate ํƒœ๊ทธ
    
    // 2. java ์ฝ”๋”ฉ
    // Date now = new Date(2022-1900, 12-1, 13);
    
    // 3. java ์ฝ”๋”ฉ
    /*
    String pattern = "yyyy๋…„ MM์›” dd์ผ";
    SimpleDateFormat sdf = new SimpleDateFormat(pattern);
    Date now =  sdf.parse(strNow);
    */
    
    // 4. 
    /*
    String pattern = "yyyy๋…„ MM์›” dd์ผ";
    DateTimeFormatter f = DateTimeFormatter.ofPattern(pattern);
    LocalDate now = LocalDate.parse(strNow, f);
    */
%>

<fmt:parseDate value="<%= strNow %>"  pattern= "yyyy๋…„ MM์›” dd์ผ" var="now"/>
now : ${ now }
    p 332  JSTL์€ EL์—์„œ ์‚ฌ์šฉํ•    ํ•จ์ˆ˜๋ฅผ  ์ œ๊ณต
    p 334 ์˜ˆ์ œ ์ฝ”๋”ฉ~ 
</pre>

<%
   String msg = "<b>Message</b>์ž…๋‹ˆ๋‹ค.";
   //  msg.length()
%>
<!-- EL ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด์„œ  -->
<c:set var="msg"  value="<%= msg %>"/>

${ msg  }<br>
${ fn:length( msg )  }<br>
${ fn:toUpperCase( msg )  }<br>
${ fn:substring( msg , 1, 4 )  }<br>
${ fn:contains( msg , "ssa" )  }<br>
${ fn:indexOf( msg , "ssa" )  }<br>
<%-- ${ fn:ํ‘œ12.19 ์ œ๊ณต๋˜๋Š” ํ•จ์ˆ˜ ( msg )  }<br> --%>

 

  • ๋„ค์ด๋ฒ„ ๋ธ”๋Ÿฌ๊ทธ ๊ณต์œ ํ•˜๊ธฐ
  • ๋„ค์ด๋ฒ„ ๋ฐด๋“œ์— ๊ณต์œ ํ•˜๊ธฐ
  • ํŽ˜์ด์Šค๋ถ ๊ณต์œ ํ•˜๊ธฐ
  • ์นด์นด์˜ค์Šคํ† ๋ฆฌ ๊ณต์œ ํ•˜๊ธฐ