220307 액션태그_include, 자바빈_useBean
* 액션 태그 : 스크립트, 주석, 디렉티브와 함께 jsp 페이지를 이루는 요소
: 페이지 사이의 제어, 이동시키거나 (forward)
: 다른 페이지 실행 결과를 현재 페이지에 포함시키거나 (include)
: 자바빈을 jsp 페이지에서 사용할 수 있는 기능을 제공 (useBean)
1. <jsp: forward> : 페이지의 흐름을 제어할 때 (현재 페이지에서 다른 페이지로 이동시킬 때) 사용
2. <jsp: include> : 페이지를 모듈화(페이지 불러오기)할 때 사용
- 일반적인 사용
<jsp: include page = "포함될 페이지" flush = "true | false" />
<jsp: include page = "포함될 페이지" flush = "true | false"></jsp: include>
- 매개변수 존재할 때
<jsp: include page = "포함할 페이지" flush = "true | false">
<jsp: param name = "pName1" value = "var1"/> //name="변수명"
<jsp: param name = "pName2" value = "var2"/> //value="값"
</jsp: include>
※ flush 속성: 포함될 페이지로 이동할 때 현재 페이지가 지금까지 출력 버퍼에 저장된 결과를 어떻게 처리할 것인지 결정하는 것
true: 지금까지 버퍼에 저장한 내용을 출력(플러시)
false: 출력하지 않음 (일반적으로 지정)
- include 디렉티브와의 차이점
* include 디렉티브: 단순하게 특정 소스의 내용을 텍스트로 포함, 주로 조각 코드를 사용할 때 사용
-> 디렉티브 태그를 이용하는 경우, 호출한 파일-호출시킨 파일이 하나의 파일처럼 동작
<%@ include file = "포함될 페이지명" %> (ex. <%@ include file = "header.jsp"%>
* <jsp: include> 액션 태그: 페이지(html, jsp, Servlet)의 처리결과까지 포함, 페이지를 모듈화할 때 사용(템플릿 페이지 등), 매개변수 전달 가능
즉 디렉티브 태그는 메인에 붙여서 메인을 완성시키는 쓰임(자바클래스 하나의 파일처럼)인데 액션 태그는 메인에서 불러오되 그 개개의 파일이 각자 동작을 처리할 수 있고 그 결과를 가져올 수 있음(매개변수, 모듈화)
- java Servlet 파일 저장 위치
* include 디렉티브: 한 개의 파일로 java Servlet 파일 생성
* include 액션태그: 각각의 파일이 java Servlet 파일로 생성 (모듈화)
※★★★ 자바빈(JavaBean) : 자바로 작성된 컴포넌트 클래스
- 장점
1. 폼 데이터 처리에 용이 ---> 폼에서 넘어오는 많은 데이터를 저장하고 전달할 수 있음
2. 재사용성 ★---> 여러 jsp 파일에서 사용할 수 있음
3. 컴포넌트 기반 구현 ---> jsp, javaBean(DTO), DTO 클래스 분리-각 컴포넌트 별로 기능을 수행
- 작성법
1. 자바빈의 멤버변수=property(프로퍼티)
2. 프로퍼티: 값을 저장하기 위한 필드, private로 선언 (정보 은닉)
- jsp의 내용을 db에 저장하거나 db에 저장된 내용을 jsp에 출력할 때 중간 데이터 저장소로 사용
- setXX() 메소드로 값을 저장하고, getXX() 메소드로 호출 (이때 XX=프로퍼티명, 첫글자는 대문자)
- 하나의 프로퍼티 당 한 쌍의 setter, getter 메소드가 존재
- setter, getter 메소드는 주로 public 접근 제어자를 사용
3. 생성자는 거의 사용하지 않고, set, get 메소드를 이용해 매개변수를 프로퍼티로 전달할 것.
+) jsp 모델1 아키텍쳐
폼 -> jsp page로 request -> javaBean(DTO)에 중간 저장된 값을 DAO로 넘김 ->
business logic(DAO)로 db에 연동하고 data store 접근해 정보 가져옴 ->
javaBean(DTO)에서 중간 저장하고 page로 넘김 -> jsp page에서 폼으로 response
+) 패키지의 java Resources - src에 javaBean 패키지-SimpleBean.java 클래스 생성!
(.java 파일은 어차피 webcontent에서 쓸수 없기 때문에... src로 옮겨줘야함
private String msg 만든 후 source-generate getter and setter -> 둘 다 만들기
※ 중요!!! 추가로 매개변수를 더 가져올 경우 여기에 변수+get,set 다 추가해줘야 함!!!
★★★ 자바빈 액션태그
3. <jsp: useBean> : 자바빈을 사용할 때
<jsp: useBean id="" class="" scope=""/> : 자바빈 객체 생성
(id=객체명, class=속성명(패키지 포함)
scope=유효범위(page(default),request,sesstion,application))
4. <jsp: setProperty> : 자바빈의 속성값을 저장할 때
<jsp: setProperty name="" property="" value=""/> : 생성된 자바빈 객체에 프로퍼티 값 저장
ex.
<input type="text" name="msg" size="20" maxlength="30"> 로 받은 텍스트를 받아올 때
<jsp:setProperty name="sb" property="msg" />
---> input의 name을 property와 일치시켜야 함
input name="msg"의 값이 property="msg"를 통해 객체명이 "sb"인 property 변수에 저장됨
+) 매개변수마다 하나하나 set으로 불러와야 하나요?
---> <jsp:setProperty name="sb" property="*"/> 이걸 사용하면 sb 객체에 모든 property 값을 저장할 수 있음 (name값이 일치하는 모든 메소드 값을)
5. <jsp: getProperty> : 자바빈의 속성값을 읽어올 때
<jsp: getProperty name="" property=""/> : 자바빈 객체에 저장된 프로퍼티 값을 가져옴
---> name="sb"인 property 변수에 저장된 값을 가져오는 것 (위의 예시에서 input name="msg"의 값이 가져와짐)
+) 좀 더 간단하게? 가져오는 방법?
<%= sb.getMsg() %> 이렇게 하면.. 좀 더 간단하게 출력할 수 있다
원래
<%@ page import="javaBean.SimpleBean" %>
<% SimpleBean sb1=new SimpleBean(); %>
이렇게 객체를 생성해두고 출력하는 게 정석이지만 <jsp:useBean>이 객체를 생성하기 때문에 이걸로 생성된 객체는 그냥 사용할 수 있음~!
6. <jsp: plug-in> : 애플릿을 사용할 때 (지금은 애플릿을 사용하지 않음)