160511: 40회차
종료하기 전 티스토리 네이버 로그아웃 할 것
1. 툴
동일
추가시:
2. 폴더
동일
추가시:
3. 사용할 사이트
동일
추가시:
4. 공부하는 것
오전에는 그거했음
-어제하던거
- 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" ?> 이게 맨 처음 문장에 와야 함 (엔터 치면 안됨)
- 많이 사용되는 사용자 정의 태그를 모아서 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>
- 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>
▣ 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 |