이번에는 JSP 액션태그 useBean, setProperty, getProperty를 활용하여 데이터를 저장하고 추출해오는 과정을 알아보자.
우선 Beans라는걸 알아보자.
- Java Beans (IDE에서 대부분 사용, 컴포넌트 형태로 제작된 자바 모듈)
- JSP Beans (JSP와의 연동을 위해 만들어짐, Bean 액션을 통해 JSP에서 손쉽게 연동, DB 연동 및 뷰 데이터 교환에 사용)
- Enterprise Java Beans (Java2 Enterprise Edition에서의 컴포넌트, 분산환경 고려, 기업형 앱 개발에서 비즈니스 로직 및 데이터 처리를 담당)
이 중 오늘 가장 밀접한 것은 JSP Beans.
웹서버에서 DB와 연동하는 방식에서 beans가 이용되는데 아래 두 모델이 있다.
모델1에서는 DB와 Beans가 직접적으로 접근이 됨
모델2에서는 DB와 Beans 사이에 DAO라는 것을 통해 접근함
Beans (자바의 클래스이다!)
- 구성: 멤버변수, getter&setters 메서드
특정 기능을 수행하는 별도의 메소드를 가질 수 있다. (모델 1에서는 자주쓸 수 있긴 하나 모델2는 잘 안씀)
JSP 모델 2에서는 뷰 컴포넌트로만 활용이 권장된다. (비즈니스 로직으로는 X)
- Beans의 멤버변수와 DB테이블의 컬럼 이름이 매칭된다.
(Beans 액션태그에서는 한 줄만 써주면 수개의 데이터들을 한번에 자동 매칭 시켜주는 기능이 있는데,
이 때 멤버변수와 DB테이블의 컬럼 이름이 매칭되지 않을 경우 자동매칭이 되지 않는다. 꼭 매칭시켜주자!)
- 멤버변수의 경우 클래스 외부에서의 접근을 막기 위해 private으로 선언해준다.
- 멤버변수 이름, HTML form의 name값, DB테이블의 컬럼명을 일치시켜준다
<액션태그 예시>
jsp:useBean
id: 빈즈 클래스 인스턴스명으로 사용할 멤버변수 (MyBean myBean = new MyBean(); 에서 myBean. 즉 내가 부르고 싶은 이름)
scope: 빈즈 클래스 범위 (page, request, session, application 등이 온다.)
class: 빈즈 클래스 클래스명(패키지가 있다면 경로를 같이 써준다)
+참고
Scope의 범위
page: 현재 JSP 페이지 내
request: request가 최종 포워딩되는 페이지까지
session: 세션을 유지할 때까지
application: 웹 어플리케이션이 종료될 때까지
<jsp:useBean id="myBean" scope="request" class="MyBean"/>
자바 코드로 쓴다면 이렇게 된다.
MyBean mybean = (MyBean)request.getAttribute("mybean");
if(mybean == null){
mybean = new MyBean();
request.setAttribute("mybean", mybean);
}
jsp:setProperty
name: id와 동일. 매개변수
property: 필드이름(예를들어 내가 HTML form태그에 쓴 name값과 동일하게.)
필드 이름을 하나씩 써서 원하는 값들만 하나하나 불러올 수도 있고
아까 위에서 말한 전체 자동매칭이 필요하다면 필드 이름 대신 *('모든 것'을 의미)를 써주어 전부 저장할 수 있다.
<jsp:setProperty name="mybean" property="userid"/>
<jsp:setProperty name="mybean" property="*"/>
자바 스크립트릿으로 쓴다면 다음과 같다.
<% mybean.setUserid(request.getParameter("username"));
mybean.setPasswd(request.getParameter("userpasswd"); %>
jsp:getProperty
setProperty와 동일한 방식으로 써서 값을 가져온다.
그러나 다른 점은 getProperty의 경우 전체매칭이 되지 않으므로 하나씩 불러와서 사용해야 한다.
<jsp:getProperty name="mybean" property"username"/>
<예제 코드>
BeanTest.java 클래스
BeanTest.jsp
위 예제에서는 (주석처리된)스크립트릿으로 했던 동작들을 그대로 jsp 액션태그로 해도 동일한 결과가 나온다.
이 예제에서는 java 클래스에서 name 을 Jelly로 설정해 준 것을 Belly로 바꾸는 동작과
그 바꾼 값을 가져오는 동작을 해보았다.
먼저 java 클래스를 만들고 jsp에서 주석처리된 부분을 해 본 뒤
그 부분을 주석처리해주고 jsp액션태그를 활용해서 연습해보자.
방문해주셔서 감사합니다.
'WORKS > Java + JSP + Spring' 카테고리의 다른 글
[JSP] JSP : model1 모델1, model2모델 2 / MVC 패턴 ? (0) | 2022.03.13 |
---|---|
[JSP] JSP 액션태그 useBean, setProperty, getProperty 활용: 회원가입 홈페이지 데이터 전달 / Js 유효성검사 연결 (0) | 2022.02.18 |
[JSP] JSP : session 이용 장바구니 기능 만들기 (0) | 2022.02.17 |
[JSP] 에러페이지 설정하기 | 404 not found | JSP Error Page (0) | 2022.02.14 |
[JSP] JSP action tag / jsp 액션태그 (include, forward) (0) | 2022.02.11 |
댓글