쌍용 강북 교육센터 국비학원 Day 60일차
forward 액션태그
<jsp:forward page="이동할 JSP 페이지명">
-> 액션태그는 하나의 JSP 페이지에서 다른 JSP페이지로 요청 처리를 전달할때 사용한다.
- 데이터를 공유하면서 페이지를 이동하기 때문에 forward 액션 태그가 있는 페이지의 URL 주소에서 다른 페이지의 결과를 출력
- 사용자가 입력한 값에 따라 접속하는 페이지가 다른 경우에 사용하면 좋다.
- page 속성의 값으로는 이동할 페이지 기술한다.
- 이동된 URL이 화면에 나타나지 않기 때문에 사용자는 이동했는지 알 수 없다.
forward는 간결하고 구조적으로 웹/JSP 프로그래밍을 할 수 있고 또한, 각 조건을 처리하는 JSP를 분리하여 기능별로 모듈화 할 수 있게 해준다.
forward 액션 태그의 처리 과정
- 웹 브라우저에서 웹 서버로 a.jsp 페이지 요청
- 요청된 a.jsp 페이지의 액션태그를 수행
- <jsp:forward page="b.jsp"/> forward 액션 태그를 만나면 출력 버퍼의 내용을 제거하고 프로그램 제어를 b.jsp로 이동(forward)시킴 (요청흐름이 이동함)
- b.jsp 페이지 수행
- b.jsp 페이지를 수행한 결과를 웹 브라우저에 응답
※ include 액션 태그와 마찬가지로 forward 액션 태그에 의해 연결된 페이지 간에는 동일한 request, response 객체를 공유하므로 계속 사용할 수 있다.
JavaBean
JSP에서 객체를 가져오기 위한 기법으로 데이터 전달 오브젝트 파일 DTO (Data Transfer Object) 라고도 한다.
자바로 작성된 컴포넌트들 즉, getter, setter 메소드로 구성된 클래스(Class)를 일반적으로 말한다. JSP 프로그래밍에는 DTO (Data Transfer Object) 나 DAO (Data Access Object) 클래스의 객체를 JSP페이지에서 사용하기 위해 사용한다.
JSP 페이지가 화면 표현 부분과 로직들이 같이 존재하여 복잡한 구성을 가급적 피하고, JSP 페이지의 로직 부분을 분리해서 코드를 재사용함으로써 프로그램의 효율을 높이기 위해서 사용한다.
<jsp:useBean />
자바빈 객체를 생성하기 위한 태그이다.
<jsp:useBean id="빈 이름" class="자바빈 클래스 명" scope="사용범위" />
- id : 생성할 객체 (인스턴스)의 이름을 정의 (생략불가)
- class : 객체를 생성할 클래스명을 정의 (패키지명.클래스명으로 설정)
- scope : 자바빈 객체가 공유되는(저장되는) 범위를 지정 page, request, session, application 중 하나의 값을 가지고 생략시 기본값은 page이다.
※ id속성은 객체의 참조 변수 이름, getAttribute()로 값을 꺼낼때 사용하는 이름, 객체를 생성할경우 보관소에 저장하는 key값의 이름 등으로 사용한다.
<jsp:setProperty />
자바빈 클래스의 속성 값을 설정하기 위한 태그로 DTO의 set 메소드로 생각하면 편하다.
<jsp:setProperty name="빈 이름" property="속성명" value="설정할 값" />
<jsp:setProperty name="빈 이름" property="속성명" param="파라미터명" />
- name : useBean을 이용해 생성한 객체 이름을 명시
- property : 값을 저장할 프로퍼티의 이름을 명시
- value : 저장할 값을 정의, 표현식 사용가능
※ property 속성의 값을 * 로 지정할 수 있다. 이럴 경우 각각의 프로퍼티의 값을 같은 이름을 갖는 파라미터의 값으로 설정한다. (밑의 사진참고)
<jsp:getProperty />
자바빈 클래스의 속성값을 가져오기 위한 태그로 DTO의 get 메소드로 생각하면 편하다.
<jsp:getProperty name="빈 이름" property="속성명" />
- name : 값을 가져올 빈의 id
- property : 가져올 속성의 이름
JavaBean의 설계 규약
- 멤버변수마다 별도의 getter, setter 메서드가 존재해야 한다.
- get 메소드는 매개변수가 존재하지 않아야한다.
- set 메소드는 반드시 하나 이상의 매개변수가 존재해야 한다.
- 생성자는 매개변수가 존재하지 않아야 한다. 즉, 기본생성자만 존재해야 한다. 하지만 파라미터가 있는 생성자를 선언할 경우 기본생성자가 삭제가 되어지기 때문에 기본생성자를 선언해 중복으로 선언해주면 사용이 가능하다.
- 멤버변수의 접근제어자는 private이고 각 getter, setter 메서드의 접근제어자는 public , 클래스의 접근제어자는 public 으로 정의한다.
<jsp:useBean> 의 scope
자바빈즈를 객체화 시킨 후 이 객체를 어느 범위까지 사용할지를 결정하는 것이다.
1. scope="page"
- scope 속성 기본값이므로 특별히 지정하지 않으면 이 값이 적용된다. 이 객체는 요청된 JSP 페이지 내에서만 사용되고, 실행 종료와 함께 객체는 자동으로 소멸된다. 그러므로 다른 JSP 페이지에서는 사용될 수 없다. 또한 요청된 JSP 페이지를 부를때 마다 이 객체는 매번 새로이 생성된다.
2. scope="request"
- 이 객체는 요청된 JSP 페이지내에서 사용된 후 , 이 JSP 페이지와 연결된 다른 JSP 페이지까지 사용되어진다. 연결된 다른 JSP 페이지에서 실행 종료와 함께 객체는 자동으로 소멸된다. request 영역에서 이 객체가 있으면 생성된 객체를 사용하고 없으면 객체를 새로이 만들어 request 영역에 올려둔다.
3. scope="session"
- 이 객체는 세션이 종료(소멸) 할 때 까지 객체는 소멸하지 않고 사용된다. 세션이 종료(소멸) 되는 순간 이 객체는 자동으로 소멸된다. session 영역에서 이 객체가 있으면 생성된 객체를 사용하고 없으면 객체를 새로이 만들어 session 영역에 올려둔다.
4. scope="application"
- 이 객체는 웹 어플리케이션이 종료될때까지 소멸되지 않고 사용되어진다. 이 객체는 웹 어플리케이션이 종료될때 자동으로 소멸되어지는 것이므로 웹 어플리케이션의 공동으로 사용되어지는 객체이어야 한다. application 영역에서 이 객체가 있으면 생성된 객체를 사용하고 없으면 객체를 새로이 만들어 application 영역에 올려둔다.
참고 출처 - https://choitaetae.tistory.com/96
'Web > JSP' 카테고리의 다른 글
쌍용강북교육센터 국비 학원 Day 63일차 JSP (MVC 패턴) (0) | 2023.04.03 |
---|---|
쌍용강북교육센터 국비 학원 Day 62일차 JSP 구현 (0) | 2023.03.31 |
쌍용강북교육센터 국비 학원 Day 61일차 JSP (JSTL - 커스텀 액션, EL) (0) | 2023.03.30 |
쌍용강북교육센터 국비 학원 Day 59일차 JSP (Servlet, Filter, Action) (0) | 2023.03.28 |
쌍용강북교육센터 국비 학원 Day 58일차 JSP (JSP 란?, Web Server, Web Container) (0) | 2023.03.27 |