420 likes | 664 Views
0915135 현희정. EL & JSTL. EL(Expression Language). 객체에 접근하는 비교적 간단한 방법 -> JAVA 언어를 몰라도 괜찮다 ! ${ exp } 형태로 기술. EL 이 지원하는 연산자. 산술연산자 -> + - / * % 관계연산자 -> == != < 논리연산자 -> && || 공백연산자 -> empty [ ] =. EL 이 제공하는 디폴트 객체.
E N D
0915135 현희정 EL& JSTL
EL(Expression Language) • 객체에 접근하는 비교적 간단한 방법 -> JAVA 언어를 몰라도 괜찮다! • ${ exp } 형태로 기술
EL이 지원하는 연산자 • 산술연산자 -> + - / * % • 관계연산자 -> == != < • 논리연산자 -> && || • 공백연산자 -> empty • [ ] = .
EL이 제공하는 디폴트 객체 • pageContext • pageScope • requestScope • sessionScope • applicationScope • param • paramValues • header • headerValues • cookie • initParam
hello_el 예제 이스케이프 문자 • 수식 계산하기 \${ 2+5 } = ${2 +5 } • 헤더 정보 얻기 ${ header[“user-agent”] } • 파라메터 값 얻기 ${ param[“name”] } ${ empty param[“name”] } • 쿠키 값 얻기 ${ cookie[“JSESSIONID”].value } name이란 이름의 파라메터가 전달되었는지 여부에 따라 다른 결과
hello_el 예제 http://localhost:8080/hello_el.jsp
hello_el 예제 http://localhost:8080/hello_jsp?name=test
JSTL • JSP 표준 태그 라이브러리 • TOMCAT 사이트에서 라이브러리 다운 -> jstl.jar, standart.jar • NetBeans 경우, 쉽게 추가 가능 : Project -> Properties -> Library
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>
코어 라이브러리 -> 가장 기본적인 기능 제공 • 수식 언어 지원 <catch> <out> <remove> <set> • 제어 흐름 <choose> <when> <otherwise> <forEach> <forTokens> <if> • URL 관리
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>
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” 저장
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=간격
mtable예제 http://localhost:8080/mtable.jsp http://localhost:8080/mtable.jsp?t=9
코어 라이브러리 • <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>
contact3 예제 • <form> 태그 이용 • “name”에 이름 / “email”에 이메일 저장 -> contact3.jsp로 전달
contact3 예제 • EL 이용 이름 : ${ param.name } Email : ${ param.email }
contact4 예제 • ContactInfo객체 생성 <jsp:useBean id=“info” class=“contact.ContactInfo scope=“page” /> <jsp:setProperty name=“info” property”*” /> 이름: ${ info.name } Email: ${ info.email } ContactInfo 클래스의 Setter method들을 이용
I18N 라이브러리 • 로켈설정, 메시징, 숫자와 날짜 포맷 • <fmt: requestEncoding> : HTTP 요청의 문자 인코딩 설정 <fmt: requestEncoding value=“KSC5601” />
SQL 라이브러리 • 별도의 자바 클래스 사용 X <query> <transaction> <update> <param> <setDataSource> <dateParam>
gread3 예제 • JDBC 데이터 소스 지정 <sql:setDataSource var=“ds” driver=“com.mysql.jdbc.Driver” url=“jdbc:mysql//localhost/gbook?useUnicode=true&characterEncoding=eukr” user=“root” password=“mysql” />
gread3 예제 • Query문 수행 <sql:query dataSource=“${ds}” var=“rs”> select * from book order by num desc </sql:query> var = query문 수행 “결과” 저장 변수 -> ResultSet 객체 rs.rows = rs의 레코드
gread3 예제 gwrite.jsp, gwrite_db.jsp
XML 라이브러리 • XML 문서 파싱, 내용 추출, 문서 변환 • 핵심 <out> <parse> <remove> <set> • 제어흐름 <choose> <when> <otherwise> <forEach> <if> • 변환 <transform> <param>
hello-xml 예제 • taglib 지시어 <%@ taglib prefix=”x” uri=http://java.sun.com/jsp/jstl/xml> • XML 문서 설정 <c:set var=“xml”> <greeting>안녕하세요.</greeting> </c:set>
hello-xml 예제 • XML 파싱 <x:parse var=“p” xml=“${xml}” /> • 파싱된 문서에서 출력 <x:out select=“$p/greeting/” />
JSTL을 이용한 문서 관리 시스템 • 캐비닛 관리 프로그램 cabinet_add foward cabinet cabinet_change submit cabinet_get cabinet_input link cabinet_delete edms_menu cabinet_list include
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> …..
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>
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” %>
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=‘삭제’>
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>
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>
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>
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>
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’>
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 }” />
cabinet_delete • 캐비닛 삭제 : cabinet_list에서 삭제 버튼 -> cabinet에서 제어 • 권한 확인 <c:if test=${ ds==null or isManager==‘no’ }”> <c:redirect url=“cabinet.jsp” /> </c:if>
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>
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