JSTL (Jsp Standard Tag Library) - JSP 표준 태그 라이브러리
EL (Experission Language) - 표현 언어
1. EL과 JSTL을 사용하는 이유
- JSP 파일에 자바형식의 코드를 태그화하여 사용할 수 있다
2. 장점과 단점
- 장점 : java값을 가져오기 간단하고 가독성을 높여준다
- 단점 : 디테일한 설정을 하기에는 어려운 점이 많다
3. EL의 조건
- EL은 java에 저장된 아무 변수의값을 꺼내서 쓸 수 있는 것이 아니라 scope에 저장된 값만 꺼내서 사용할 수 있다
# scope 영역이란?
page: 하나의 페이지를 처리할 때 사용되는 영역
request: 요청을 처리할 때 사용되는 영역
session: 하나의 브라우저와 관련된 영역
application: 하나의 웹 애플리케이션과 관련된 영역
중복해서 기술할 때 : 범위가 좁은 내장 객체에서부터 사용 범위가 넓은 내장 객체 순서로 속성값을 찾아옴
page < request < session < application
<%
session.setAttribute("id", "youngD");
%>
< session에 저장된 id라는 이름의 값(youngD)을 웹페이지에 표현하기 >
${id} 님 환영합니다!
< JSTL 사용하여 페이지 영역에 값 넣기 >
<%
pageContext.setAttribute("num", 10);
pageContext.setAttribute("isCheck", true);
%>
- el의 다양한 연산자
${num} <br>
${num + 10} <br>
${num - 5} <br>
${num * 3} <br>
${num / 2} = ${num div 2} <br> /2 또는 div2 두 가지의 같은 식
${num % 3} = ${num mod 3} <br>
-- 부울값으로 return
${num > 5 && num > 3} = ${num > 5 and num > 3} <br>
${num > 5 || num > 3} = ${num > 5 or num > 3} <br>
${isCheck} <br>
${!isCheck} = ${not isCheck} <br>
${num > 3} = ${num gt 3} <br>
${num < 20} = ${num lt 20} <br>
${num >= 3} = ${num ge 3} <br>
${num < 20} = ${num le 20} <br>
${num == 10} ${num eq 10} <br>
${num != 20} ${num ne 20} <br>
< EL에서 DTO, VO 가져오기 >
1. dto 생성
<%
MemberDTO dto = new MemberDTO("YDY", "1234", "youngD", "대한민국");
pageContext.setAttribute("dto", dto);
%>
2. page영역에 저장된 dto 아이디 값을 표현식을 사용해 웹페이지에 표현하기
<% MemberDTO info = (MemberDTO)pageContext.getAttribute("dto"); %>
<%= info.getId() %>
3. EL 사용하여 dto 안에 있는 private 필드값을 가져오기 위해서는 반드시 getter 메소드가 필요하다
package com;
public class MemberDTO {
private String id;
private String pw;
private String nick;
private String addr;
public MemberDTO(String id, String pw, String nick, String addr) {
super();
this.id = id;
this.pw = pw;
this.nick = nick;
this.addr = addr;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getPw() {
return pw;
}
public void setPw(String pw) {
this.pw = pw;
}
public String getNick() {
return nick;
}
public void setNick(String nick) {
this.nick = nick;
}
public String getAddr() {
return addr;
}
public void setAddr(String addr) {
this.addr = addr;
}
}
4. 출력
${dto.id}
${dto.pw}
${dto.nick}
${dto.addr}
# 만약 el로 없는 값을 가져오면? --> 출력 x
<!-- 존재하는 값인지 아닌지 판별하는 법 -->
${empty good}
${not empty good} -- 비어있지 않나요?
# 동일한 이름의 값이 여러 영역에 들어가있다면 EL에서 가져오는 값은?
<%
pageContext.setAttribute("name", "youngD"); = pageContext.getAttribute("name")
request.setAttribute("name", "oldD"); = request.getAttribute("name")
session.setAttribute("name", "babyD"); = session.getAttribute("name")
application.setAttribute("name", "kidsD"); = application.getAttribute("name")
%>
범위가 좁은 내장 객체에서부터 사용 범위가 넓은 내장 객체 순서로 속성값을 찾아옴
(1. page 2. request 3. session 4. application)
EL에서 특정영역에서만 찾고자할 때는 name 앞에 특정영역 scope를 붙여준다
${sessionScope.name}
표현언어로 요청 parameter 처리하는 법
사용자가 폼에 입력한 값을 얻어오기 위해서는 jsp 내장객체인 request.getParameter() 메소드를 사용하지만
표현언어에서는 표현 언어의 내장 객체인 param 객체 사용
- request.getParameter() -> param.() or param[""]
- 배열 형태 -> getParameterValues() -> paramValues
<form action="result.jsp" method="post">
내가 좋아하는 계절
<input type="text" name="season">
</form>
<result.jsp>
request.getParameter() 대신 param 객체 사용
${param.season} (또는)
${param["season"]}
param 배열
<form action="result.jsp" method="post">
좋아하는 계절 :
봄 <input type="checkbox" name = "season" value="봄">
여름 <input type="checkbox" name = "season" value="여름">
가을 <input type="checkbox" name = "season" value="가을">
겨울 <input type="checkbox" name = "season" value="겨울">
<input type="submit">
</form>
< result.jsp >
${paramValues.season[0]}
${paramValues.season[1]}
${paramValues.season[2]}
${paramValues.season[3]}
'Study > JSP' 카테고리의 다른 글
[JSP] HashMap (2) | 2023.09.24 |
---|---|
[JSP] command패턴 (2) | 2023.09.21 |
[JSP] FrontController 패턴 (2) | 2023.09.18 |
[JSP] JSTL (2) - jstl 라이브러리 설치하기, <c:> 태그 사용하기 (2) | 2023.09.03 |