이 폴더의 파일들은 모두 main 과 sub 이 쌍으로 작성됨
01
attribute 로 객체를 전달하기
<% %> 안에 자바코드로 작성 - request.setAttribute("attr1", "avengers");
main 에서 setAttribute("name","value") 작성, sub 에서 getAttribute("name") 작성
즉 name 에 value 를 전달, set 으로 값을 넣고 get 으로 값을 꺼낼 수 있다
다른 파일로 전달 가능
like, include 안의 param 태그와 같은 역할을 한다 & 마찬가지로 쿼리스트링에 표시되지 않음
근데 왜 main 실행했는데 main 입력받아서 sub 이 실행되지?
include 가 뭐였더라 https://tokkicode.tistory.com/44 include 로 그 파일(sub)을 현재 파일(main)에 삽입할 수 있다
그래서 sub 도 실행되는 것처럼 보임
02
attribute 는 object 를 전달하므로 숫자연산을 하기 위해서는 반드시 형변환을 할 것!
<% Integer a = (Integer) request.getAttribute("name"); %>
★ expression language (el) 로 ? ★
el은 ${name } 와 같이 작성하면 됨
형변환? 그냥 ${num1 } + ${num2} = ${num1+num2 } 이렇게 작성하면 됨
아래는 sub 코드 ↓
<div>
<%
Integer n1 = (Integer) request.getAttribute("num1");
Integer n2 = (Integer) request.getAttribute("num2");
%>
<%= n1 %> + <%= n2 %> = <%= n1 + n2 %> <br>
</div>
<div>
${num1 } + ${num2 } = ${num1 + num2}
</div>
↑ 형변환은 <%%> 안에서 자바코드로, <%=%> 써가며 숫자 하나하나 받기, 그런데 el 은 그냥 작성한 것을 알 수 있다 (다만 div 요소 안에 작성했음을 고려)
03
- attribute 로 배열 전달하기 -
문자열 배열 arr 를 만들고 값 4개 넣음, setAttribute 로 arr1 에 배열을 넣음, sub 파일 삽입함
sub 파일은 item 이라는 문자열 배열을 만들고 getAttribute로 arr1 을 받아서 배열 item 에 넣어줌
그리고 for 반복문을 이용하여 item 들을 꺼냄 (list 로)
04
이번엔 구체화
main1, main2 각각 다른 배열을 만들고 setAttribute 로 전달, 둘다 sub을 include 삽입, 둘 중 뭘 실행하느냐에 따라 내용이 달라짐
배열을 받아서 메뉴를 만드는 sub 파일 (style css 이용, body 에서 배열 내용을 리스트로 받은건 03과 동일)
05
이번엔 배열 아닌 arraylist 이용
마찬가지로 setAttribute 이용해서 전달함, main1,2 가 전달한 내용은 다름, sub 에서 구현
06
<%@ page import="sample01.MyBook" %> 가 추가됨!!
"sample01.MyBook" 파일 있어야 06~08 실행됨
'course 2021 > JSP' 카테고리의 다른 글
JSP08 - 07redirect (0) | 2021.11.17 |
---|---|
JSP07 - 06forward (0) | 2021.11.17 |
JSP05 - 04path (0) | 2021.11.17 |
JSP04 - 03module (0) | 2021.11.17 |
JSP03 - 02request (0) | 2021.11.17 |