보라코딩
Day67_230403_ JSP (EL, JSTL) 본문
EL
<%--
EL(Expression Language) : 표현언어
1. 표현식을 대신해서 사용 : ${}
<%=데이터 %> ===> ${데이터} : 변수, 상수, 계산식 등
2. 사용할 데이터가 반드시 scope 상에 존재해야 한다.
scope 객체 : pageContext, request, session, application
해당 scope 객체에 setAttribute 설정된 변수(속성)값만 사용 가능
(주의 : 로컬변수에 있는 데이터는 사용 못함)
3. 같은 이름이 다른 scope 상에 존재하는 경우 접근 우선순위가 적용됨
pageContext -> request -> session -> application
(scope 지정이 없으면 page에서부터 application 순으로 찾는다
명시적으로 scope 지정하면 해당 scope 에서만 찾는다)
--%>
JSTL
<%--
JSTL(JSP Standard Tag Library)
0. 라이브러리 구하기(인터넷)
다운로드 : https://tomcat.apache.org/download-taglibs.cgi
다운로드 : https://mvnrepository.com/ > jstl 검색
=> https://mvnrepository.com/artifact/javax.servlet/jstl/1.2
1. 라이브러리 등록
WebContent > WEB-INF > lib > jar 파일 등록
2. JSTL 디렉티브(지시어) taglib 추가
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
--%>
jar 파일 다운로
jar파일을 lib 밑에 넣는다.
main.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>요청페이지</title>
</head>
<body>
<h1>요청페이지(회원가입)</h1>
<form>
<fieldset>
<legend>회원가입</legend>
<p>아이디 : <input type="text" name="id"></p>
<p>암호 : <input type="password" name="pwd"></p>
<p>이름 : <input type="text" name="name"></p>
<p>성별 :
<input type="radio" name="gender" value="M">남자
<input type="radio" name="gender" value="F">여자
</p>
<p>취미 :
<input type="checkbox" name="hobby" value="sports">운동
<input type="checkbox" name="hobby" value="game">게임
<input type="checkbox" name="hobby" value="movie">영화
<input type="checkbox" name="hobby" value="book">독서
</p>
<input type="button" value="전달1(자바빈)" onclick="send_go1(this.form)">
<input type="button" value="전달2(EL param)" onclick="send_go2(this.form)">
<input type="reset" value="다시작성">
</fieldset>
</form>
<script>
function send_go1(form){
form.action = "el03_result_bean.jsp";
form.submit();
}
function send_go2(form){
form.action = "el03_result_param.jsp";
form.submit();
}
</script>
</body>
</html>
result_bean.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%-- 전달받은 파라미터 값을 자바빈(Bean) VO에 저장하고 사용 --%>
<jsp:useBean id="vo" class="com.mystudy.MemberVO" />
<jsp:setProperty property="*" name="vo"/>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Bean 사용</title>
</head>
<body>
<h1>결과보기(Bean 사용)</h1>
<ul>
<li>아이디 : <%=vo.getId() %></li>
<li>암호 : <%=vo.getPwd() %></li>
<li>이름 : <%=vo.getName() %></li>
<li>이메일 : <%=vo.getEmail() %></li>
<li>성별 : <%=vo.getGender() %></li>
<li>취미(배열) : <%=vo.getHobby() %></li>
<li>취미(배열데이터사용) :
<%
if (vo.getHobby() == null) {
out.print("선택없음(null)");
} else {
for (String hobby : vo.getHobby()) {
out.print(hobby + " ");
}
}
%>
</li>
</ul>
<hr>
<h2>Bean 데이터 EL 사용</h2>
<p>EL은 null값 사용 안함</p>
<ol>
<li>아이디 : ${vo.id }</li>
<li>암호 : ${vo.pwd }</li>
<li>이름 : ${vo.name }</li>
<li>이메일 : ${vo.email }</li>
<li>성별 : ${vo.gender }</li>
<li>취미(배열) : ${vo.hobby }</li>
</ol>
</body>
</html>
result_param.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>EL param</title>
</head>
<body>
<h2>EL 사용해서 form 데이터 표시(param, paramValues)</h2>
<p>아이디 \${param.id} : ${param.id}</p>
<p>암호 : ${param.pwd}</p>
<p>이름 : ${param.name}</p>
<p>성별 : ${param.gender}</p>
<p>취미 : ${param.hobby}</p>
<p>취미(배열객체) : ${paramValues.hobby}</p>
<p>취미(배열데이터) :
${paramValues.hobby[0]}
${paramValues.hobby[1]}
${paramValues.hobby[2]}
${paramValues.hobby[3]}
</p>
</body>
</html>
JSTL
<c:set />
<c:out />
<c:remove />
if는 있는데
else는 없다!
choose ~ when ~ otherwise
반복문 forEach
강사님풀이
마지막 1~10 숫자합계 다음과 같은 방식으로도 가능하다.
forEach 배열 사용시
forTokens
main.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>시작(요청)페이지</title>
</head>
<body>
<h1>시작(요청)페이지 [ JSTL02_main_req.jsp ]</h1>
<a href="JSTL02_redirect_req.jsp">redirect 처리 페이지 호출_JSTL02_redirect_req.jsp</a><br>
<a href="JSTL02_redirect_req.jsp?id=lee">redirect 처리 페이지 호출_JSTL02_redirect_req.jsp?id=lee</a><br>
</body>
</html>
redirect.jsp
<%@ 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>
<html>
<head>
<meta charset="UTF-8">
<title>redirect</title>
</head>
<body>
<h1>응답페이지 [ JSTL02_redirect.jsp ]</h1>
<p>페이지 전환 : redirect - 파라미터값 전달</p>
<h2>ID : ${param.id}</h2>
<c:redirect url="JSTL02_resp.jsp">
<c:param name="id">${param.id }</c:param>
<c:param name="name" value="싼쵸" />
<c:param name="age">3</c:param>
<c:param name="address">서울시 강남구</c:param>
</c:redirect>
</body>
</html>
resp.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>최종응답페이지</title>
</head>
<body>
<h1>최종응답페이지 [ JSTL02_resp.jsp ]</h1>
<h2>ID : ${param.id }</h2>
<h2>이름(param.name) : ${param.name }</h2>
<h2>나이(param.age) : ${param.age }</h2>
<h2>주소(param.address) : ${param.address }</h2>
</body>
</html>
format 사용하기
forEach_List_Set_Map
forEach
List
Set
Map
'코딩 > Servlet, JSP, MyBatis' 카테고리의 다른 글
Day69_230405_ JSP, MyBatis 방명록 (0) | 2023.04.05 |
---|---|
Day68_230404_JSP, MyBatis 방명록 (0) | 2023.04.04 |
Day66_230331_ JSP (action tag, EL tag, useBean, setProperty) (0) | 2023.03.31 |
Day65_230330_ JSP (CRUD_회원정보) (0) | 2023.03.30 |
Day64_230329_ JSP(JDBC CRUD) (0) | 2023.03.29 |