1 / 42

EL & JSTL

0915135 현희정. EL & JSTL. EL(Expression Language). 객체에 접근하는 비교적 간단한 방법 -> JAVA 언어를 몰라도 괜찮다 ! ${ exp } 형태로 기술. EL 이 지원하는 연산자. 산술연산자 -> + - / * % 관계연산자 -> == != < 논리연산자 -> && || 공백연산자 -> empty [ ] =. EL 이 제공하는 디폴트 객체.

freja
Télécharger la présentation

EL & JSTL

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 0915135 현희정 EL& JSTL

  2. EL(Expression Language) • 객체에 접근하는 비교적 간단한 방법 -> JAVA 언어를 몰라도 괜찮다! • ${ exp } 형태로 기술

  3. EL이 지원하는 연산자 • 산술연산자 -> + - / * % • 관계연산자 -> == != < • 논리연산자 -> && || • 공백연산자 -> empty • [ ] = .

  4. EL이 제공하는 디폴트 객체 • pageContext • pageScope • requestScope • sessionScope • applicationScope • param • paramValues • header • headerValues • cookie • initParam

  5. hello_el 예제 이스케이프 문자 • 수식 계산하기 \${ 2+5 } = ${2 +5 } • 헤더 정보 얻기 ${ header[“user-agent”] } • 파라메터 값 얻기 ${ param[“name”] } ${ empty param[“name”] } • 쿠키 값 얻기 ${ cookie[“JSESSIONID”].value } name이란 이름의 파라메터가 전달되었는지 여부에 따라 다른 결과

  6. hello_el 예제 http://localhost:8080/hello_el.jsp

  7. hello_el 예제 http://localhost:8080/hello_jsp?name=test

  8. JSTL • JSP 표준 태그 라이브러리 • TOMCAT 사이트에서 라이브러리 다운 -> jstl.jar, standart.jar • NetBeans 경우, 쉽게 추가 가능 : Project -> Properties -> Library

  9. JSTL 사용 • taglib 지시어 사용!!! <%@ taglib prefix=”c” uri=http://java.sun.com/jsp/jstl/core> <%@ taglib prefix=”fmt” uri=http://java.sun.com/jsp/jstl/fmt> <%@ taglib prefix=”sql” uri=http://java.sun.com/jsp/jstl/sql> <%@ taglib prefix=”x” uri=http://java.sun.com/jsp/jstl/xml>

  10. 코어 라이브러리 -> 가장 기본적인 기능 제공 • 수식 언어 지원 <catch> <out> <remove> <set> • 제어 흐름 <choose> <when> <otherwise> <forEach> <forTokens> <if> • URL 관리

  11. headers 예제 • taglib 지시어 <%@ taglib prefix=”c” uri=http://java.sun.com/jsp/jstl/core> • 반복문 <forEach> <c:forEach var=“h” items=“${header}”> <c:out value=“${h.key}” /> : <c:out value=“${h.value}” /> </c:forEach>

  12. headers 예제

  13. mtable예제 • 변수값 설정 <c:set> <c:set var=“t” value=“${param.t}” /> • 조건 <c:if> <c:if test=“${empty t}”> <c:set var=“t” value=“5” /> </c:if> t 라는 이름으로 parameter 값 전달 -> 변수 t에 저장 전달되는 값이 없을 경우 -> 변수 t에 “5” 저장

  14. mtable예제 • 반복문 <c:forEach> <c:forEach var=“a” begin=“1” end=“9” step=“1”> <c:out value=“${t}” /> * <c:out value=“${a}”/> = <c:out value=“${a*t}” /> </c:forEach> for(int a=1; a<10; a++) begin=시작값 end=끝값 step=간격

  15. mtable예제 http://localhost:8080/mtable.jsp http://localhost:8080/mtable.jsp?t=9

  16. 코어 라이브러리 • <c:choose> <c:when> <c:otherwise> -> Switch문과 유사 <c:when> == case <c:otherwise> == default <c:choose> body content <c:when test=“test Condition”> body content </c:when> … <c:otherwise> conditional block </c:otherwise> </c:choose>

  17. contact3 예제 • <form> 태그 이용 • “name”에 이름 / “email”에 이메일 저장 -> contact3.jsp로 전달

  18. contact3 예제 • EL 이용 이름 : ${ param.name } Email : ${ param.email }

  19. contact4 예제 • ContactInfo객체 생성 <jsp:useBean id=“info” class=“contact.ContactInfo scope=“page” /> <jsp:setProperty name=“info” property”*” /> 이름: ${ info.name } Email: ${ info.email } ContactInfo 클래스의 Setter method들을 이용

  20. I18N 라이브러리 • 로켈설정, 메시징, 숫자와 날짜 포맷 • <fmt: requestEncoding> : HTTP 요청의 문자 인코딩 설정 <fmt: requestEncoding value=“KSC5601” />

  21. SQL 라이브러리 • 별도의 자바 클래스 사용 X <query> <transaction> <update> <param> <setDataSource> <dateParam>

  22. gread3 예제 • JDBC 데이터 소스 지정 <sql:setDataSource var=“ds” driver=“com.mysql.jdbc.Driver” url=“jdbc:mysql//localhost/gbook?useUnicode=true&characterEncoding=eukr” user=“root” password=“mysql” />

  23. gread3 예제 • Query문 수행 <sql:query dataSource=“${ds}” var=“rs”> select * from book order by num desc </sql:query> var = query문 수행 “결과” 저장 변수 -> ResultSet 객체 rs.rows = rs의 레코드

  24. gread3 예제 gwrite.jsp, gwrite_db.jsp

  25. XML 라이브러리 • XML 문서 파싱, 내용 추출, 문서 변환 • 핵심 <out> <parse> <remove> <set> • 제어흐름 <choose> <when> <otherwise> <forEach> <if> • 변환 <transform> <param>

  26. hello-xml 예제 • taglib 지시어 <%@ taglib prefix=”x” uri=http://java.sun.com/jsp/jstl/xml> • XML 문서 설정 <c:set var=“xml”> <greeting>안녕하세요.</greeting> </c:set>

  27. hello-xml 예제 • XML 파싱 <x:parse var=“p” xml=“${xml}” /> • 파싱된 문서에서 출력 <x:out select=“$p/greeting/” />

  28. hello-xml 예제

  29. JSTL을 이용한 문서 관리 시스템 • 캐비닛 관리 프로그램 cabinet_add foward cabinet cabinet_change submit cabinet_get cabinet_input link cabinet_delete edms_menu cabinet_list include

  30. cabinet • login.jsp으로 리다이렉트 <c:if test=“${ uid==null }”> <c:redirect url=“login.jsp” /> </c:if> • 캐비닛 관리 권한 설정 <c:choose> <c:when test=“${roleNo <= 2)}> <c:set var=“isManager” value=“yes” scope=“session” /> </c:when> …..

  31. cabinet • 요청에 해당되는 JSP 페이지로 제어 이동 <c:choose> <c:when test=${param.cmd == ‘add’ }> <jsp:forward page=“cabinet_add.jsp” /> </c:when> …. <c:otherwise> <jsp:forward page=“cabinet_list.jsp” /> </c:otherwise> </c:choose>

  32. cabinet_list • DB의 등록된 캐비닛들의 목록 <sql:query dataSource=“${ds}” var=“rs”> select * from cabinet </sql:query> <c:forEach var=“row” items=“${rs.rows}” /> • edms_menu를 메뉴로 포함 <%@include file=“edms_menu.jsp” %>

  33. cabinet_list • 삭제 버튼 <c:if test=“${isModify==‘yes’}”> <td><form method=post action=cabinet.jsp> <input type=hidden name=cmd value=‘delete’> <input type=hidden name=cid value=‘${row.cid}’> <input type=submit value=‘삭제’>

  34. cabinet_list • 캐비닛 정보 변경 / 문서 등록 <c:choose> <c:when test=“${isModify==‘yes’}”> <a href=cabinet.jsp?cmd=get& id=<c:out value=“${row.cid}”/>> </c:when> <c:otherwise> <a href=doc_manager.jsp?cabinet=<c:out value=“${row.cid}”/>> </c:otherwise> </c:choose> <c:out value=“${row.title}” /></a>

  35. cabinet_input • 캐비닛정보 입력 : cabinet에 전송 -> cabinet_add 데이터 처리 <form action=cabinet.jsp method=post> <table> <tr><td>캐비닛 이름</td> <td><input type=text name=title></td> …. <input type=hidden name=cmd value=add>

  36. cabinet_add • DB에 데이터 저장 <sql:update> INSERT INTO cabinet (title,role,description) VALUES (?, ?, ?) <sql:param value=“${ param.title }” /> <sql:param value=“${ param.role }” /> <sql:param value=“${ param.description}” /> </sql:update>

  37. cabinet_add • 캐비닛 번호 저장 <sql:query var=“rs”> SELECT cid FROM cabinet WHERE cid = (SELECT MAX(cid) FROM cabinet) </sql:query> <c:forEach var=“row” items=“${ rs.rows }”> <c:set var=“cn” value=“${ row.cid }” /> </c:forEach>

  38. cabinet_get • 캐비닛 정보 변경 : cabinet에 전송 -> cabinet_change DB 처리 • 캐비닛 정보 출력 / 변경 <form method=post action=cabinet.jsp> <c:forEach var=“row” items=“${ rs.rows }”> <tr><td>캐비닛 이름</td> <td><input type=text name=title value=‘<c:out value=“${ row.title } /> ….. <input type=hidden name=cmd value=‘change’>

  39. cabinet_change • cabinet 테이블 내용 업데이트 <sql:update> UPDATE cabinet SET title=?, role=?, description=? where cid=? <sql:param value=“${ param.title }” /> <sql:param value=“${ param.role }” /> <sql:param value=“${ param.description }” /> <sql:param value=“${ param.id }” />

  40. cabinet_delete • 캐비닛 삭제 : cabinet_list에서 삭제 버튼 -> cabinet에서 제어 • 권한 확인 <c:if test=${ ds==null or isManager==‘no’ }”> <c:redirect url=“cabinet.jsp” /> </c:if>

  41. cabinet_delete • 캐비닛 / 문서 삭제 <sql:update> delete from cabinet where cid= ? <sql:param value=“${param.cid}” /> </sql:update> <sql:update> delete from doc where cabinet=? <sql:param value=“${param.cid}” /> </sql:update>

  42. JSTL을 이용한 문서 관리 시스템 • 문서 관리 프로그램 doc_add foward doc_upload doc_change doc_manager doc_input doc_get include edms_menu doc_delete submit doc_list doc_keyword link DownloadFile

More Related