160511: 40회차

종료하기 전 티스토리 네이버 로그아웃 할 것


1. 툴

동일

추가시: 


2. 폴더

동일

추가시:


3. 사용할 사이트

동일

추가시:


4. 공부하는 것


오전에는 그거했음

-어제하던거


[18] EL(Expression Language), 클래스 메소드의 사용, EL 비 활성화(Resin)

[01] EL(표현 언어, Expression Language) 
   - EL은 JSP 객체의 출력을 단순화하는 용도에 사용됩니다. 
   - JSP 2.0은 JSTL 1.1버전에 포한된 EL의 기능을 제공합니다. 
   - 스크립틀릿(<%%>)보다 사용법이 간단합니다. 
   - 실습을 위해서 Tomcat 5.0.X이상, Resin 3.0.X이상 설치 하세요. 
   - 값이 없는 경우 "null"값을 출력하지 않습니다. 
   - EL은 JSP 내부 객체에 접근하여 출력을 처리합니다. 
   - 기본적으로 자바의 문법이 적용됩니다.    
   - EL이 인식이 안되면 페이지 상단에 <%@ page isELIgnored="false"%> 를 선언하면 됩니다. 
     <%@ page isELIgnored="false" contentType = "text/html; charset=UTF-8" %> 
   - 표현 방법 ${expr} 


1. 표현 언어의 연산자   

        연  산   자                                설          명 
   ------------------------------------------------------------------------ 
        .                            빈의 프로퍼티나 맵(Map)의 엔트리 접근 
        []                          배열이나 리스트(List) 엘리먼트 접근 
        ()                          괄호, 표현식의 연산 순서를 바꿔서 연산하게 할 때 
        a?b:c                     조건 테스트 - 조건(a)? true일때 리턴 값(b),false일때 리턴값(c) 
        + , -, *                   사칙 연산 :  더하기, 배기, 곱하기  
        / 또는 div               나누기 
        % 또는 Mod            나머지 
        == 또는 =                같다. =은 권장 아님 
        !=                          다르다  
        < 또는 lt                 보다 작다 less then
        > 또는 gt                보다 크다 great then
        <= 또는 le              작거나 같다  less equal

        >= 또는 ge             크거나 같다. great equal
        && 또는 and          논리 AND 
        || 또는 or              논리 OR 
        ! 또는 not              단항 not(true를 false로 false를 true로) 
        empty                  빈 변수 값 체크, null, 빈 문자열, 빈 배열등 인지를 테스트 - 데이터가 있는지 없는지 쳌
        func(args)            함수 호출, func 함수 이름이고 args는 인자로 없을 수도 있고,  
                                   한 개 혹은 쉼표(,)로 분리된 여러 개의 함수 인자를 가질 수도 있다. 






2. JSP 내부 객체에 접근하기위해 EL에서 제공하는 객체 
   - pageContext        : PageContext 객체 
   - pageScope          : page 영역에 포함된 객체 
   - requestScope      : request 영역에 포함된 객체 
   - sessionScope     : session 영역에 포함된 객체 
   - applicationScope : application 영역에 포함된 객체 
   - param                : HTTP의 파라미터들 
   - paramValues      : 하나의 파라미터의 값들 
   - header               : 헤더 정보들 
   - headerValues     : 하나의 헤더의 값들 
   - cookie               : 쿠키들 
   - initParam           :컨텐츠의 초기화 파라미터들 






3. EL 객체의 사용예 
   1) ${pageContext.request.requestURI}: request URI 
   2) ${sessionScope.profile}                 : session 영역에서 profile이라는 이름으로 
                                                           저장된 객체 
   3) ${param.productId}                        : productId라는 이름의 파라미터 값 
   4) ${paramValues.productId}              : productId라는 이름의 파라미터 값들 
   5) ${pageContext.request.contextPath}: Context Path 추출  


$ 가 <%=%>대신에 쓰는 거임 - 출력용!



응 그래요 ^^... 라서 예제를 볼 거임



<%@ page language="java" contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

<%


request.setAttribute("name","자바 개발자");

%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<title>EL Object</title>

</head>

<body>

<h2>

request의 name 속성(스크립틀릿의 친구 표현식 방식): <%=request.getAttribute("name")%> <br> 

request의 name 속성(EL-requestScope.name): ${requestScope.name} <br /><br /> 

<!-- ㅁㅁ영역의 속성값을 나타낼때 ㅁㅁScope.ㅁㅁ의이름 -->

request의 name 속성(EL-name): ${name} <br /><br /> 

<!-- requestScope가 기본값이라서 name만 적어도 requestScope.name이래! - 근데 sessionScope는 기본이 아님 -->

</h2>

</body>

</html>


<%@ page contentType = "text/html; charset=UTF-8" %> 


<html> 

<head><title>EL Object</title></head> 

<body> 


<h2> 

<%  

// http://localhost:8000/mvc_test/el/elParam.jsp 

// http://localhost:8000/mvc_test/el/elParam.jsp?code=ABCDE 


String code = request.getParameter("code"); %> 

code 파라미터(스크립틀릿 방식): <% out.println(code);%> <br> 


<!-- 위에애랑 밑에애랑 같은데 넘나 밑에애가 좋은것 -->


code 파라미터(EL 방식): ${param.code} <br /> 

</h2> 


</body> 

</html> 


ㅇㅇ

으 예제에 키아누 리브스 있음

넘나 옛날것



내가 보려고



결국 맞았군


<%@ page contentType="text/html; charset=UTF-8"%> 


<h2> 

<% 

request.setAttribute("name", "가길동"); 

request.setAttribute("tot", 190); 

request.setAttribute("avg", 95); 

%> 


<% 

// Scriptlet을 이용한 경우 

String name = (String)request.getAttribute("name"); 

Object  obj = request.getAttribute("tot"); 

Integer itg = (Integer)obj; 

int tot = itg.intValue(); 

int avg = ((Integer)(request.getAttribute("avg"))).intValue(); 


out.println("성명: " + name + "<br/>"); 

out.println("총점: " + (tot) + "<br/>"); 

out.println("가산점: " + (tot+5) + "<br/>"); 

out.println("평균: " + avg + "<br/>"); 

%> 


<br><br> 

성명:${name}<br> 

총점:${tot}<br> 

가산점:${tot+5}<br> 

평균:${avg} 점<br> 

</h2> 





▣ 표현언어에서의 클래스 메소드의 사용 
   - static 메소드만 사용이 가능합니다. 

1. DateUtil.java 
package el; 

import java.util.Date; 
import java.text.SimpleDateFormat; 

public class DateUtil { 
    private static SimpleDateFormat formatter =  
                new SimpleDateFormat("yyyy-MM-dd"); 
     
    public static String format(Date date) { 
        return formatter.format(date); 
    } 




2. WEB-INF/tlds/el-functions.tld 
   - 클래스파일을 작성한 후 TLD파일을 작성합니다. 
   - TLD는 Tag Library Descriptor의 약자로 태그라이브러리에 대한 
      설정 정보를 담고 있습니다. 
   - dateFormat 함수를 호출하면 format함수가 매핑되어 호출됩니다. 




일반적으로 tld는 xml 파일임 -ㅅ- - 다른것도 있긴 함


<?xml version="1.0" encoding="UTF-8" ?> 이게 맨 처음 문장에 와야 함 (엔터 치면 안됨)





[19] JSTL(JSP Standard TAG Library)의 사용, EL and JSTL의 사용 1

[01]  JSTL(JSP Standard TAG Library)의 사용 
   - 많이 사용되는 사용자 정의 태그를 모아서 JSTL이라는 규약이 만들어졌습니다.   
   - 스크립틀릿, 표현식을 사용하는 것보다 훨씬 간결한 문법 구조를 지원합니다. 
   - JSTL은 5가지의 태그를 지원합니다. 
   - jstl API (http://java.sun.com/products/jsp/jstl/1.1/docs/tlddocs/index.html) 


라이브러리     기능                                 접두어         관련 URL 
----------------------------------------------------------------------------- 
Core              변수지원,흐름제어,URL처리       c     http://java.sun.com/jsp/jstl/core ★ 
XML              XML코어,흐름제어,XML변환         x     http://java.sun.com/jsp/jstl/xml 
국제화           지역,메시지형식,숫자및날짜형식   fmt   http://java.sun.com/jsp/jstl/fmt 
데이터베이스  SQL                                       sql   http://java.sun.com/jsp/jstl/sql 
함수              콜렉션 처리, String 처리            fn     http://java.sun.com/jsp/jstl/functions ★ 



1. 설치 
   - http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/  
     에서 다운합니다. 

   - 압축을 해제한 후  
    "F:\JAVA\jstl\jakarta-taglibs-standard-20050804\jakarta-taglibs\standard\lib" 
     폴더안에 있는 'jstl.jar', 'standard.jar'파일을 "D:\tomcat-5.0.19\common\lib" 
     폴더로 복사합니다. 
     . Resin은 'C:\ojt\resin-3.0.14\lib'폴더에 같다 붙입니다. 





▣ Core Tag 

기능        태그명     기능설명 
--------------------------------------------------------------------------- 
변수 지원   set        jsp에서 사용될 변수를 설정합니다. 
               remove     설정한 변수를 제거합니다.  //request session이 살아있는 동안 뭐라고? -_-);; 

ㅇ... 쓰코프...ㅇ

ㅇㅋ...


^^


--------------------------------------------------------------------------- 
흐름 제어   if         조건에 따라 내부 코드를 수행합니다. 
               choose     다중 조건을 처리할 때 사용됩니다. 
               forEach    Collection의 각 항목을 처리할 때 사용합니다. 
               forTokens  구분자로 분리된 각각의 토큰을 처리할 때 사용합니다.  
    


--------------------------------------------------------------------------- 
URL 처리    import     URL을 사용하여 다른 자원의 결과를 삽입합니다. 
                redirect   지정한 경로로 이동합니다. 
                url        URL을 재 작성합니다.  
--------------------------------------------------------------------------- 
기타 태그   catch      예외 처리에 사용합니다. 
                out        jspWriter에 내용을 알맞게 처리한 후 출력합니다. 
--------------------------------------------------------------------------- 

<%@ page contentType = "text/html; charset=UTF-8" %> 

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>  

<c:set var="num1" value="${20}" /> 

<c:set var="num2"> 

10.5 

</c:set> 

<c:set var="today" value="<%= new java.util.Date() %>" /> 


<!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=UTF-8">

<title>Insert title here</title>

</head>

<body>

변수 num1 = ${num1} <br> <!-- request가 우선순위긴 한데 없으니까 위에서 num1 변수를 인식함 -->

변수 num2 = ${num2} <br> 

num1 + num2 = ${num1 + num2} <br> 

오늘은 ${today} 입니다. 


<c:remove var="num1" scope="page" /> 


<p> 

삭제한 후의 num1 = ${num1} <br> 

삭제한 후의 num1 + num2 = ${num1 + num2} 

</body>

</html>


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


<%@ page language="java" contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

<c:set var="map" value="<%= new java.util.HashMap() %>" />

<!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=UTF-8">

<title>Insert title here</title>

</head>

<body>

<c:set target="${map}" property="name" value="인뿌라" /> <!-- 이게 set request인건가 -->

<c:set target="${map}" property="aromi" value="덴뿌라" /> 

<h2> 

변수 map에 저장된 name 값: ${map.name}<br> 

변수 map에 저장된 name 값: ${map.aromi} 


</body>

</html>


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


<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

    

<!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=UTF-8">

<title>Insert title here</title>

</head>

<body>

<c:if test="true"> 

무조건 수행<br> 

</c:if> 


<c:if test="${param.name == 'tree'}"> 

name 파라미터의 값이 ${param.name} 입니다.<br> 

</c:if> 


<c:if test="${18 < param.age}"> 

당신의 나이는 18세 이상입니다. 

</c:if> 


<!-- 지금은 else가 없음  앞으로도 없는건가 그리고 test라고 꼭 써줘야함-->


</body>

</html>


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


<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<!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=UTF-8">

<title>Insert title here</title>

</head>

<body>

<ul> 

<c:choose>  

<!-- else if가 없는 대신 when을 쓰면 첫번째 when은 if고 두번째 when은 else if 고 마지막 when은 else 되는 것 -->

  <c:when test="${param.name == 'tree'}" >  

    <li> 당신의 이름은 ${param.name} 입니다. 

  </c:when>  

  <c:when test="${param.age > 18}" >  

    <li> 당신은 18세 이상입니다. 

  </c:when>  

  <c:otherwise>  

    <li> 당신은 'bk'가 아니고 18세 이상이 아닙니다. 

  </c:otherwise>  

</c:choose>  

</ul> 


</body>

</html>


[20] JSTL(JSP Standard TAG Library)의 사용, EL and JSTL의 사용 2

[03] JSTL(JSP Standard TAG Library)의 사용, EL and JSTL의 사용 2 

-  EL & JSTL의 사용 - Core Tag: URL 처리 태그의 사용 

<%@ page contentType = "text/html; charset=UTF-8" 

  isELIgnored="false" %> 

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 

<c:import url="url.jsp" var="urlEx" /> 

<c:import url="http://127.0.0.1:8000/mvc_test/jstl/header.jsp" var="head"> 

    <c:param name="id" value="tree" /> 

</c:import> 

<c:import url="footer.jsp" var="foot" /> 


<html> 

<head><title>import와 url 태그</title></head> 

<body> 


${head} 


${urlEx} 


${foot} 


</body> 

</html> 



include같은 건데 import랑 차이점은 자기 자원이 아니어도 접근 가능


▣ EL & JSTL의 사용 - Core Tag: 기타 태그들 

1. out 태그 
   - JspWriter에 데이터를 출력합니다. 
   - <pre>~</pre>는 공백과 엔터를 있는 그대로 출력을 합니다. 
   - escapeXml="true": < <, > >, & &, ' ', " " 



ㅇㅇ


19랑 20 보기 :>

넘나재밌는것












5. 수업

진도: 

hw: 


6. 할것


엉덩이

'Programming' 카테고리의 다른 글

160513: 42회차  (0) 2016.05.13
160512: 41회차  (0) 2016.05.12
160510: 39회차  (0) 2016.05.10
160509: 38회차  (0) 2016.05.09
160504: 37회차  (0) 2016.05.04
Posted by DAVID