EL 19

18.<c:url> 태그와 <c:param> 태그

태그는 URL에 자동으로 Context Path 를 붙여주는 일을 한다. 그리고 URL을 변수에 담아주는 역할을 한다. 컨텍스트를 변경하더라도 URL을 수정할 필요가 없어진다 고하니, 강력한 태그라고 보고 싶다. 태그의 value 값이 컨텍스트 패스 경로 뒤의 URL이다. 태그의 var 속성은 생성한 URL을 변수에 담아 다른 곳에서 사용케 한다. 을 자식태그로 설정하면 태그의 name 속성과 value 속성을 쿼리스트링으로 가져갈 수 있다. sample.jsp sample.jsp 즉 1 페이지 조회값이 계속 URL에 따라 다녀야 할 경우 인데, 이경우 name의 값을 URL 인코딩을 해야 하기에 프로퍼티를 사용해서 인코딩 할 수 있다고 하신다. 3 페이지 var 속성이 유용하게 사용될 수 있는 곳이 태..

EL 2020.07.15

17.<c:set>태그를 이용한 값 변경 target, value, property

태그는 값을 변경할 수 있다고도 하였다. 이는 target 속성과 property 속성 value 속성으로 정의된다. target 속성은 말그대로 가져올 속성을 정의한다. property 속성으로 해당 객체나 컬렉션에 정의된 프로퍼티명을 선언한다. value 속성에 변경할 값을 선언한다. 즉 이란 request에서 myBean 키값의 객체를 가져온(target) 후 lee를(value) setName() 메서드(property)로 읽어들인다. request.getAttribute("myBean").setName("lee"); 쯤 되는 듯 싶다. 변경 전 : ${myBean.name }, ${myBean.address } 변경 후: ${myBean.name }, ${myBean.address } busan..

EL 2020.07.15

16.<c:set> 태그와 <c:remove> 태그와 속성

태그는 변수를 선언할때나 속성 값을 가져와서 변경, 또는 삭제()할 때 사용한다고 한다. var 속성은 변수명을 지정하며 value 값에 변수에 대입시킬 값을 준다. scope 속성으로 4대영역안에 변수 값을 넣어줄 수 있다. 코드를 보는 동안 사용이 굉장히 자유롭다는 것을 느끼는데, var 속성에 변수를 선언해서 몸통부분에 정의하거나, EL로 영역에서 값을 가져와 var 속성에 정의하거나 하는 등을 보면서 그런생각을 해본다. Map은 EL과 마찬가지로 Entry 형식으로 가져오게 되어있다는 사실을 기억하자. 즉, 란 session.setAttribute("myAttr3", "hello3"); 가 아닐까 싶다. ${pageScope.myAttr1} ${requestScope.myAttr2} ${sessi..

EL 2020.07.15

15.<c:if> 와 test 속성

JSTL은 VIEW 단에서의 흐름제어를 처리한다 라고 하였다. 이렇게라도 기억하고싶어 계속 적고 있다. JSTL에서 if 문은 태그로 정의한다. 속성은 test이며 해당 속성에 조건식을 값으로 넣는다. ....... 식이다. 조건에 맞는다면 몸통 안의 내용이 실행된다. 만약 거짓으로 흐름을 제어하고 싶다면 test="${! 조건}" 으로 제어한다. 즉 같은 조건식의 흐름에서 test="${조건식} 이라면 true, test="${! 조건식}"이라면 false이다. 0){ %> i는 0보다 크다 u는 0보다 크지 않다. 조건 만족함 조건에 만족하지 않음 form 을 이용한 예제이다. 태그에 test 속성말고도 var 속성을 주어 조건결과를 변수화 할 수도 있다는 점을 기억하자. 이름 : 나이: 이름을 입력..

EL 2020.07.15

14. choose-when-otherwise

JSTL은 제어를 위한 커스텀태그 이며 EL은 출력을 위한 하나의 규칙이라고 생각한다. View 단에서 제어와 출력을 할 수 있다는 점에서 정말 강력한 기능이라고 생각한다. 태그는 프로그래밍 언어의 if문 과 동일하다 if문에 들어가는 조건식은 test 속성에 정의한다. 는 switch-case 문과 같다. 태그가 case이며 조건식은 test속성에 정의한다. 의 자식태그인 는 case 문의 default 라고 보면 좋겠다. 투표 불가능 투표 가능 토이스토리 어벤져스 미성년자 관람불가용

EL 2020.07.15

13.function 사용 예제

EL ${} 안에 fn: 으로 메서드명을 선언하고 매개변수로는 Property 명으로 주어야한다는 점을 기억해야한다. str1 = ${str1} str2 = ${str2} tokens = ${tokens} length(str1) = "${fn:length(str1)}" toUpperCase(str1) = "${fn:toUpperCase(str1)}" toLowerCase(str1) = "${fn:toLowerCase(str1)}" substring(str1, 3, 6) = "${fn:substring(str1, 3, 6)}" substringAfter(str1,str2) = "${fn:substringAfter(str1, str2)}" substringBefore(str1,str2) = "${fn:sub..

EL 2020.07.15

12.functions

JSTL에서는 기본적으로 제공하는 함수목록이있는데, 이는 String을 위한 함수들이 포진되어있다. 태그를 추가해줘야하며 prefix는 fn uri는 jstl의 functions이다. 반드시 주의해야 할 점은 fn 태그는 EL(${})안에 사용된다는 것이다. 그러므로 fn의 static 메서드 호출 의 매개변수는 Property 명이 된다. \${fn:length(text1)} : ${fn:length(text1)} \${fn:toUpperCase(text1)} : ${fn:toUpperCase(text1)} \${fn:length(arr1)} : ${fn:length(arr1)} Hello \${text2} : ${text2} \${fn:escapeXml(text2)} : ${fn:escapeXml(t..

EL 2020.07.15

11.pagenation 예제

페이지에 나와있는 이전으로 다음으로 버튼을 만들어보았던 것 같다. nav 에 ul을 주고 태그로 begin 과 end를 정해준다. 이는 나중에 startNum 변수로 제어해 줘야할 듯 하다. 데이터베이스의 레코드 수와 맞물리게 그래야 할 듯 싶다. 그러다보면 태그도 필요하겠지..? 일단, li태그의 자식태그로 a태그를 줘서 해당 url이나 쿼리스트링을 주는 듯하다. 요청은 같은 페이지로 갈테고 페이지 요청은 GET요청으로 해도 될듯 하니... 일단 분석해본 나의 개인적 생각은 그렇다. Previous ${i } Next

EL 2020.07.15

9.forEach-varStatus 속성의 사용

forEach태그에는 var , items , begin , end , step 의 속성이 있다. status객체의 이름을 status로 잡고 getter 프로퍼티로 끌어다쓰는 듯 하다. 즉 상태를 알려주는 객체인듯 하다. ${status.current} 현재 for문의 해당하는 번호 ${status.index} 해당 인덱스넘버 ${status.count} 출력 카운트 ${status.first} 첫 번째인지 여부 >>>> c:if 의 test 속성에 쓰이는 듯함 ${status.last} 마지막인지 여부 >>>> c:if 의 test 속성에 쓰이는 듯함 ${status.begin} for문의 시작 번호 ${status.end} for문의 끝 번호 ${status.step} for문의 증가값 index ..

EL 2020.07.15