모델2방식
1. 표현언어
2. JSTL
EL(Expression Language: 표현언어)
${변수}는
Page
request
session
application
자바빈
의 속성값을 가져올수있다.
(키, 값) Map객체에서 ${변수}는key 와 value를 읽어올수있음
<%= %> 한정적인 : 출력 객체를 생성선언하고 메소드를 사용 해서 가져옴 :
${ } 표현식과 읽어오는 범위가 서로 다르다.
EL은 연산이 가능하다.
표현식 | 값 |
${2 + 5} | 7 |
${"10" + 5} | 15 |
${"십" + 5} | 에러발생(EL에서의 +는 연산만 연결+없음) EL 에서는 문자열을 자동으로 형변환시켜서 연산을 진행한다. |
${null + 5} | 5 : EL 에서는 null 이 연산에 들어가면 0으로 치환 |
${4/5} | 0.8 : EL 에서 연산은가능하지만 원하는 값이 안나오고 다른값을 출력받을수도 있으니 나누기는 미리연산한뒤 출력하자 |
${5 div 6} | 0.8333333333333334 : EL 에서 연산은가능하지만 원하는 값이 안나오고 다른값을 출력받을수도 있으니 나누기는 미리연산한뒤 출력하자 |
${5 mod 7} | 5 |
${2 < 3} | true |
${2 gt 3} | false |
${3.1 le 3.2} | true |
${(5 > 3) ? 5 : 3} | 5 |
${someValue == '2011'} | true (someValue는 2011로 셋팅) : 순수자바에서는 == 는 객체비교인데 EL에서는 문자비교도 == 로 가능 |
${empty someValue2} | true (someValue2는 null) |
${header["host"]} | localhost:8080 |
${header["user-agent"]} | Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; InfoPath.2) |
수치 연산자 { + : 덧셈 , - : 뺄셈 , * : 곱셈 , /또는 div : 나눗셈 , % 또는 mod : 나머지 }
비교 연산자 { == 또는 eq : , != 또는 ne, < 또는 lt , > 또는 gt , <= 또는 le, >= 또는 ge }
논리 연산자 { &&또는 and : || 또는 or : ! 또는 not }
empty 연산자 : 객체가 있느냐 null이냐,데이터가 있느냐 없느냐 두가지를 동시에 체크해준다.
(순수자바에서 if(msg !=null && !msg.equals("")) 를 한방에 처리해줌)
{ null,""빈문자열,길이가0,빈MAP,빈Collection => true 리턴 : 이외는 false 를 리턴 }
비교선택 연산자
<수식> ? <true 값1> : <false 값2>
[].
()
- (단일) not ! empty
* / div % mod
+ -
< > <= >= it gt le ge
== != eq ne
&& and
|| or
? :
특수문자 처리하기
표현식 기본 문법 : \${expr}, \#{expr} => 출력 "${expr}, #{expr} "
표현언어의 기본(내장)객체
pageContext : JSP의 page 기본객체와 동일하다
pageScope
requestScope 각 객체에 저장된 속성의 <속성,값> 매핑을 저장한 Map객체
sessionScope
applicationScope
param : request.getParameter(이름) 기능을 구현
param : request.getparameterValues(이름) 와 동일
cookie : <쿠키이름, Cookie> 매핑을 저장한 Map 객체 request.getCookies()로 구한 Cookie배열로부터 맵핑
initparam : application.getInitParameter(이름) 과 동일기능
lib
커스텀 태그 : 사용자생성 태그
===복습===
액션태그 : 컨테이너에서 기본 제공태그
<jsp:include />
<jsp:forward />
<jsp:useBean />
<jsp:setProperty />
<jsp:getProperty />
=========
JSP JSTL JSTL+EL (커스텀태그)
(기본적으로 EL을 알고있어야 한다.)
Struts JSP 4개의 영역에서 EL로 뽑아낸다.
Spring
==========================================================================================
변수 지원 태그
EL => JSP 4개영역에서만 데이터를 읽어옴
JSTL => JSP 4개영역에서만 데이터를 읽어옴
<%
//EL은 스크립트릿 영역 변수선언 데이터를 가져오지못한다.
String str="행복";
//읽어드릴려면
pageContext.setAttribute("aaa",str);
%>
${str} => 못불러옴
${aaa} => 불러옴
<c:set /> 태그 => setAttribute (속성명, 속성값) => jsp 4개영역에 저장
${속성명} => getAttribute (속성명) => jsp 4개영역에서 값을 가져옴
<c:remove /> => removeAttribute(속성명)
흐름 제어 태그
<c:if> 태그 : 단일조건 체크만 가능하다.
항상 true. 몸체 내용을 실행함
<c:if test="true"> ... </c:if>
항상 false. 몸체 내용을 실행하지않음
<c:if test="false"> ... </c:if>
EL의 결과값이 true인 경우 몸체 내용을 실행함
<c:if test="${expr}"> ... </c:if>
표현식의 결과값이 true 인 경우 몸체 내용을 실행함
<c:if test="<%=expr %>"> ... </c:if>
<c:choose>,<c:when>,<c:otherwise> 태그
다중 조건체크 choose에서 첫번째 true 값인 when 에서 출력하고 빠져나옴
<c:forEach> 태그
확장 for문
<c:forEach var="변수" items="아이템">
...
<tr>
<td align="right" bgcolor="#ffffff">
${변수사용}
</td>
...
</c:forEach>
기본for문
<c:forEach var="i" begin="1" end="10" step="2">
${i} 사용
</c:forEach>
기본for문 + 확장for문 (index 2~4 출력)
<c:forEach var="i" items="${intArray}" begin="2" end="4">
[${i}]
</c:forEach>
<c:forEach var="i" items="<%= someItemList %>" varstatus="status">
${status.index +1} 번재 항목 : ${iteml.name}
</c:forEach>
index : 루프실행에서 현대 인덱스
count : 루프 실행 횟수
begin : begin 속성값
end : end 속성값
step : step 속성값 = 반복증가량
first : 현재 실행이 첫번째 실행인경우 true
last : 현재 실행이 루프의 마지막 실행인 경우 true
current : 컬렉션 중 현재 루프에서 사용할 객체
<c:forTokens> 태그
StringTokenizer 기능
<c:forTokens var="token" items="빨강색,주황색.노란색.초록색,파랑색,남색.보라색" delims=",.">
<c:import> 태그
특정 URL의 결과를 읽어와 현재 위치에 삽입하거나 EL 변수에 저장할때 사용.
<c:import url="URL" [var="변수명"] [scope="영역"] [charEncoding="개릭터셋"]>
</c:import>
<c:import url="http://search.daum.net/search">
<c:param name="nill_suggest" value="btn"/>
<c:param name="q" value="보라매공원"/>
</c:import>
<c:url> 태그
링크가능한 주소를 만들어줌
<c:url value="URL" [var="varName"] [scope="영역"]>
<c:param name="이름" value="값"/>
</c:url>
<c:url value="/view/list.jsp"/>
<c:redirect> 태그
<c:redirect url="URL" [context="콘텍스트경로"]>
<c:param name="이름" value="값"/>
</c:redirect>
<c:redirect url="/use_c_set.jsp" />
//response.sendRedirect()를 많이씀
<c:out> 태그
//EL을 많이씀
<c:catch> 태그
<c:catch var="exName">
.. 예외가 발생할 수 있는 코드 ...
</c:catch>
...
${exName}사용
예외처리
name 파라미터의 값 =<%=request.getParameter("name") %><br/>
<% if(request.getParameter("name").equals("test")){ %>
${param.name}은 test입니다.
<%} %>
</c:catch>
<p/>
<c:if test="${ex !=null}">
예외가 발생하였습니다.:<br/>
${ex}
</c:if>
국제화 태그
jp.gr.java_conf.ussiy.app.propedit_4.8.1_for_eclipse3.0.zipD:\javaWork\eclipse
features,plugins 덮어쓰기
한글로 입력해도 유니코드로 저장된다.
message.properties
GREETING = HI! I'm BK
VISITOR = Your ID is {0}.
message_ko.properties
GREETING = 안녕하세요. 최범균입니다.
VISITOR = 당신의 아이디는 {0}입니다.
파일로저장될때는 유니코드로 자동 변경
TITLE = \ucd5c\ubc94\uade0\uc758 JSP 2.0 \ubc30\uc6b0\uae30
GREETING = \uc548\ub155\ud558\uc138\uc694. \ucd5c\ubc94\uade0\uc785\ub2c8\ub2e4.
VISITOR = \ub2f9\uc2e0\uc758 \uc544\uc774\ub514\ub294 {0}\uc785\ub2c8\ub2e4.
<fmt:setBundle> 태그와 <fmt:message> 태그
use_message_tag.jsp
pageEncoding="UTF-8"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!-- 강제로 지역값 설정(영문) -->
<%-- <fmt:setLocale values="en"/> --%>
<fmt:bundle basename="resource.message">
<!-- 가져와서 변수에 넣음 -->
<fmt:message key="TITLE" var="title"/>
<!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>${title}</title>
</head>
<body>
<!-- 가져와서 변수가없으니 바로 출력 -->
<fmt:message key="GREETING" />
<br/>
<c:if test="${! empty param.id}">
<fmt:message key="VISITOR">
<fmt:param value="${param.id}" />
</fmt:message>
</c:if>
</body>
</html>
</fmt:bundle>
지역 미국 영어로 바꾸기
자동으로 영문화
<fmt:formatNumber> 태그
'JSP > 기본(Oracle)' 카테고리의 다른 글
MVC: Model View Controller 모델2 ( 완전중요) (0) | 2012.06.20 |
---|---|
EL(표현언어), JSTL, 국제화 태그 - 예제 (0) | 2012.06.20 |
파일업로드 라이브러리: cos , 자카르타 (0) | 2012.06.20 |
JSP 방명록 (0) | 2012.06.20 |
모델1방식 :DB 연동 회원가입, 로그인,로그아웃 , 회원탈퇴(삭제) (1) | 2012.06.20 |