공부한 내용 목차 정리
1. 자바빈 액션태그 : JSP 스크립트 태그를 변경하여 자바빈 태그로 사용하기
2. EL 태그 : 자바빈 액션태그의 한계와 EL 태그 이용 , JSP 스크립트태그를 변경하여 EL태그로 사용하기
3. JSTL 사용법 : EL기반의 조건문, 반복문 처리 가능함, JSTL용 라이브러리가 설치 되어 있어야함
1. 자바빈 액션태그 : <jsp:useBean>, <jsp:getProperty>, <jsp:setProperty>
- JSP 스크립트
이전에 JSP 스크립트를 형태로 사용한 것을 자바빈 액션태그로 변경하여 사용해보겠다.
<%
List<String> list = (List)request.getAttribute("list");
if(list == null){
list = new ArrayList();
request.setAttribute("list", list); }
%>
getAttribute 로 list를 받아오고 list가 null일 때 새로 list 를 만들어 값을 setAttribute 한다.
이러한 스크립트 태그를 자바빈 액션태그로 변경해보았다.
- 자바빈 액션태그
<jsp:useBean id = "list" class = "java.util.ArrayList" scope = "request"/>
- JSP스크립트
<%Customer loginInfo = (Customer)session.getAttribute("loginInfo"); if(loginInfo == null){ loginInfo = new Customer(); session.setAttrobute("loginInfo", c); } %>
- 자바빈 액션태그
<jsp:useBean id ="loginInfo" class = "com.my.customer.vo.Customer" scope="session"/>
<jsp:getProperty> - JSP스크립트
<%=loginInfo.getName() %>
- 자바빈 액션태그
<jsp:getProperty name = "logininfo" property= "name"/>
- JSP스크립트
<%
OrderInfo orderInfo = (OrderInfo) request.getAttribute("orderInfo");
if(orderInfo == null){
orderInfo = new OrderInfo();
requset.setAttribute("orderInfo" ,orderInfo);
} %>
- 자바빈 액션태그
<jsp:useBean id = "orderInfo" class= "com.my.order.vo.OrderInfo" scope = "request"/>
- JSP스크립트
<%=orderInfo.getOrderNo() %>
- 자바빈 액션태그
<jsp:getProperty name = "orderInfo" property = "orderNo"/>
문제점 : has a 관계의 property를 사용하고자 할 때 getProperty 태그를 사용할 수 없다.
- JSP스크립트
<%=orderInfo.getOrderCustomer().getId() %>
- 자바빈 액션태그
아래와 같이 사용할 수 없다.
<jsp:getProperty name = "orderInfo" property = " has a관계에서는 할 수 없음"/>
2. EL 태그 (Expression Language)
- el태그 사용법 ( has a관계의 property 표현)
- 값이 NULL 일경우 빈문자열로 출력해준다. 흔히 발생하는 에러 null point exception 을 처리할 수 있다.
- EL 태그에서 반복문을 사용해야 할 경우에는 JSTL과 같이 사용하면 된다.
<%--Expression Language--%>
<%-- EL은 값이 NULL 인경우 " " 로 변환해서 출력된다. --%>
requestScope.orderInfo.orderCustomer.id = ${requestScope.orderInfo.orderCustomer.id}
<br>
<%--아래는 request.getParameter("a")와 같은 표현이다. --%>
param.id = ${param.a}
<br>
<%--request 객체얻기 --%>
<br>
pageContext.request.contextPath = ${pageContext.request.contextPath}
위에서 자바빈 액션태그의 문제점을 EL 태그를 사용하면 해결할 수 있다.
requestScope.orderInfo.orderCustomer.id = ${requestScope.orderInfo.orderCustomer.id}
3. JSTL 사용법 : EL기반의 조건문, 반복문 처리 가능함,
JSTL용 라이브러리가 설치
톰켓 10 버전을 사용하면 JAKART 버전으로 JSTL을 설치해야한다.
String opt = request.getParamenter("opt");
if(opt = null || opt.equals("")){
out.print("작업을 선택하세요");
}
아래의 태그로 바꿀 수 있다.
JSTL에서 EL문법을 사용하여 요청전달데이터에서 OPT가 없을 경우 빈값을 가리키다.
<c:if test="${empty param.opt}">작업을 선택하세요</c:if>
if(otp.equals("add")){
}else if(opt.equals("list")){
}else if(opt.equals("modify")){
}else if(opt.equals("remove")){
}
param.opt = ${param.opt }
<c:choose>
<c:when test="${param.opt == 'add' }">추가작업을 선택했습니다. </c:when>
<c:when test="${param.opt == 'list '}">목록작업을 선택했습니다. </c:when>
<c:when test="${param.opt == 'modify' }">수정작업을 선택했습니다. </c:when>
<c:when test="${param.opt == 'remove' }">삭제작업을 선택했습니다. </c:when>
<c:otherwise> 작업을 선택하세요.
</c:otherwise>
</c:choose>
변수선언
<c:set var= "opt" value="${param.opt }"></c:set>
<c:set var ="list" value= "${requestScope.list }"/>
<%--
List<Cuostmer> list = (List)request.getAttribute("list");
for(Cuostmer c : list){
}
--%>
<%
//request.setAttribute list 에 대입함
// var은 요소하나하나를 반복수행의미, requestScope.list 는 c 변수를 의미함
// requestScope.list는 위의 변수선언으로 list로 변경했기에 아래 ${list}로 표현
//아래의 코드 반복문 처리됨
//varStatus 인덱스를 사용하고 싶을 때 (번호가 나옴)
// count: 반복수행의 수를 말함
%>
<table>
<tr>
<th>번호 (index:count)</th>
<th>아이디</th>
<th>이름</th>
</tr>
<c:forEach items="${list }" var="c" varStatus="status">
<tr>
<td>${status.index }:${status.count }</td>
<td>${c.id}</td>
<td>${c.name }</td>
<tr>
</c:forEach>
</table>
<%//반복문 마지막에 , 빼고 7번 반복주기 %>
<c:forEach begin="1" end="7" var="i">
<c:if test="${i>1}">
,
</c:if>
${i}
</c:forEach>
'sevlet' 카테고리의 다른 글
[22.01.03] front servlet 공부 (0) | 2022.01.03 |
---|---|
JSP 흐름도& 실습 (0) | 2021.12.06 |
getAttribute & setAttribute 실습 (0) | 2021.12.03 |
서블릿 request , response 실습 (0) | 2021.12.02 |