
성낙현의 JSP 자바 웹 프로그래밍
[chap07 액션태그 이론]
- 액션태그
JSP코드를 HTML 태그 같은 형태로 간단히 사용할 수 있는 JSP의 표준 태그 입니다.
일반 JSP 코드보다 HTML에 더 조화롭게 스며들고 간결하여 깔끔한 코드를 만들 수 있음
<jsp:태그명/> 형태로 사용
페이지 사이에서 이동을 제어하거나 자바빈을 생성할 때 주로 사용
태그처럼 사용하지만 JSP이므로 화면에 결과만 표시된 후 웹상 코드에서는 표시 X
- 액션태그의 특징
1) XML 문법을 따름
2) 반드시 종료태그 사용 필요
3) 액션 태그 사이에 주석 사용 시 에러 발생
4) 액션 태그에 속성 부여 시 표현식<%= %>
+ 선생님 TIP : Java 코드 안쓰고 JSP 코드만 사용하게되면서 스파게티 코드가 많이 만들어짐
- 액션태그의 종류
● <jsp:include> : 외부 파일을 현재 파일에 포함
● <jsp:forward> : 다른 페이지로 요청을 넘김니다.
● <jsp:useBean>, <jsp:setProperty>, <jsp:getProperty> : 자바빈즈를 생성/추출할 때
● <jsp:param> : 다른페이지로 매개변수로 전달, <jsp:include> <jsp:forward>와 함께 사용
- <jsp:include> vs <%@ include%>
1. 작성형식
<jsp:include> = <jsp:include page="파일경로" />
<%@ include%> = <%@ include file="파일경로 %>
2. 표현식
<jsp:include> = 사용가능 (HTML 태그와 마찬가지로 사용하니까!)
<%@ include%> = 불가
3. 포함방식
<jsp:include> = 해당 페이지 다 로딩하고 읽어가다가 <jsp:include>를 만나면 인클루드한 페이지 가서 읽어서 결과만 갖고옴.
<%@ include%> = 해당 페이지를 생성하기 전에 인클루드한 페이지 갖고와서 합쳐서 생성
4. 변수
<jsp:include> = 갖고온 페이지에서 선언한 변수 사용 불가
<%@ include%> = 갖고온 페이지에서 선언한 변수 사용 가능
5. page 영역
<jsp:include> = 엄밀히 따지면 페이지 이동이 있음 따라서 페이지 스코프롤 벗어남
<%@ include%> = 포함
6. request 영역
<jsp:include> = 포함
<%@ include%> = 포함
- <jsp:forward>
<jsp:fowrard page="파일경로" />
● request.getRequestDistpatcher().forward() 와 유사
=> 현재 페이지의 들어온 요청을 다음 페이지로 전달할 때 사용 (request 영역 공유)
=> 현재 페이지에서 다음 페이지로 이동 시 URL이 변경되지 않음
● 현재 페이지의 지시어 부분에서 buffer="none"으로 설정 시(버퍼 사용 X) <jsp:forward> 사용 불가
- <jsp:param>
<jsp:forward page="파일경로">
<jsp:param name="이름1" value="값1" />
<jsp:param name="이름2" value="값2" />
</jsp:forward>
<jsp:include page="파일경로">
<jsp:param name="이름1" value="값1" />
<jsp:param name="이름2" value="값2" />
</jsp:include>
● 값을 받아온 페이지에서 사용할 때는 request.getParameter("이름"); 으로 사용
● <jsp:include>, <jsp:forward>로 다른 페이지로 이동할 때 파라미터값을 저장해서 같이 넘겨주는 역할을 합니다.
● 넘겨줄 수 있는 값은 String 타입뿐 입니다.
- <jsp:useBean>, <jsp:setProperty>, <jsp:getProperty>
● 자바빈 : 멤버 변수(속성)과 getter/setter로만 구성된 클래스
● 자바빈 생성
<jsp:useBean id="빈즈 이름(변수)" class="사용할 클래스명(패키지 포함)" scope="저장될 영역" />
- id : 빈즈 이름을 설정 (변수명)
- class : 사용할 자바빈 클래스
- scope : 해당 빈을 저장할 영역 / 미입력 시 page(pagaContext)
● 자바빈 값 설정
<jsp:setBean name="빈즈 이름(변수)" property="속성명(필드명)" value="값" />
- name : 빈즈 이름(useBean에서 지정한 빈즈 이름)
- property : 속성명(필드명)
- value : 값
* <jsp:setBean name="빈즈 이름(변수)" property="*" />
"*" 와일드 카드로 form으로 전송받안 값의 name 속성과 일치하는 property에 값이 자동으로 설정되게 할 수 있습니다.
● 자바빈 값 추출
<jsp:getBean name="빈즈 이름(변수)" property="속성명(필드명)" />
- name : 빈즈 이름(useBean에서 지정한 빈즈 이름)
- property : 속성명(필드명)