JSP 웹 어플리케이션의 구조는 크게 모델 1 구조와 모델 2 구조로 나뉜다.
JSP에서 모든 로직과 출력을 처리하느냐 아니면 JSP에서는 출력만 처리하느냐에 따라서 모델 1 구조와 모델 2 구조로 구분된다.
모델 1 구조
모델 1 구조는 JSP를 이용한 단순한 모델이다. 보통 처음 JSP를 배울 때 사용하는 구조가 모델 1 구조인
데, 그 처리 구조는 아래와 같다.
모델 1 구조는 웹 브라우저의 요청을 JSP가 직접 처리한다.
웹 브라우저의 요청을 받은 JSP는 자바빈이나 서비스 클래스를 사용해서 웹 브라우저가 요청한 작업을 처리하고 그 결과를 클라이언트에 출력한다. JSP 페이지에서 웹 브라우저가 요청한 것들을 처리한다는 것은 JSP 페이지에 비즈니스
로직을 처리하기 위한 코드와 웹 브라우저에 결과를 출력하는 코드가 섞인다는 것을 의미한다.
예를 들어, 앞서 방명록 예제를 보면 하나의 JSP 페이지에서 서비스 클래스를 통해서 (글쓰기, 읽기 등의) 원하는 작업을 수행하고 그 결과를 출력했는데, 이것이 모델1 구조의 전형적인 예이다.
자바빈 & <jsp:useBean> 액션 태그
- 자바빈(JavaBeans) = VO/DTO
웹 프로그래밍에서 데이터의 표현을 목적으로 사용, 데이터 베이스 연동
기존에 VO(Value Object)/DTO(Data Transfer Object)를 JSP에서는 자바빈이라고 부른다.
src/main/java 경로에 패키지를 만들어서 그 안에 자바빈을 만든다.
기존에 멤버변수를 JSP에서는 프로퍼티라고도 부른다.
public class MemberVO {
//멤버변수 = 프로퍼티
private String id;
private String password;
private String name;
}
1. 클래스를 만들고 private한 필드를 만든 후
public class Member {
private String name; /* 값을 저장하는 필드 */
2. public한 메서드를 만들어준다. (get메서드, set메서드 사용)
public String getName() { /* 필드의 값을 읽어오는 값 */
return name;
}
public void setName(String name) { /* 필드의 값을 변경하는 값 */
this.name = name;
}
}
*set메서드(setter)는 데이터를 셋팅하는 역할
*get메서드(getter)는 데이터를 읽어오는 역할
자바빈(VO)을 사용하려면 import를 해줘야 한다.
<%@ page import="kr.web.member.MemberVO 경로" %>
- <jsp:useBean> 태그 : JSP에서 자바빈 객체를 생성할 때 사용
<jsp:setProperty> 액션 태그와 연계해서 많이 사용한다.
<jsp:useBean id=”빈이름” class=”자바클래스이름” scope=”범위”/>
- id : jsp 페이지에서 자바빈 객체에 접근할 때 사용할 이름을 명시함
- class : 패키지 이름을 포함한 자바빈 클래스의 완전한 이름을 입력함
- scope : 자바빈 객체가 저장될 영역을 지정.(page,request,session,application 중 하나 , 기본값은 page)
- <jsp:setProperty> 액션 태그 : 자바빈 객체의 프로퍼티 값을 설정
<jsp:setProperty name=”자바빈” property=”이름” value=”값” />
- name : 프로퍼티의 값을 변경할 자바빈 객체의 이름. <jsp:useBean> 액션 태그의 id 속성에서 지정한 값을 사용
- property : 값을 지정할 프로퍼티의 이름
- value : 프로퍼티의 값. 표현식을 사용할 수 있음
- <jsp:getPropety> 액션 태그 : 프로퍼티의 값을 출력하기 위해 사용
<jsp:getProperty name=”자바빈” property=”이름” >
- name : <jsp:useBean>의 id 속성에서 지정한 자바빈 객체의 이름
- property : 출력할 프로퍼티의 이름
자바빈에서 일반적으로 <jsp:getPropety> 는 잘 안쓰고 메서드를 직접 호출하는 방법 많이 씀
1. 액션 태그 이용없이 VO(자바빈)사용하기
VO를 생성한 후 클라이언트.jsp 만들고 서버. jsp 를 만들어보자
①. 자바빈을 사용하려면 우선 import를 해줘야한다.
<%@ page import="kr.web.member.MemberVO" %>
②. 전송된 데이터를 인코딩 처리해준다.(form의 method가 post 방식일 경우)
<% request.setCharacterEncoding("utf-8"); %>
자바빈을 생성해서 전송된 데이터를 request로부터 추출해서 set메서드를 이용해 자바빈의 프로퍼티에 저장
③. 자바빈 객체 생성 (import가 되어있어야 사용 가능)
<% MemberVO member = new MemberVO(); %>
④. request로부터 전송된 데이터 추출하여 자바빈의 프로퍼티에 저장
<%
member.setId(request.getParameter("id"));
member.setPassword(request.getParameter("password"));
%>
⑤. <body>에서 <%=데이터를 읽어온다.%>
*set메서드(setter)는 데이터를 셋팅하는 역할
*get메서드(getter)는 데이터를 읽어오는 역할
아이디 : <%= member.getId() %> <br>
비밀번호 : <%= member.getPassword() %> <br>
∴ 클라이언트jsp(Form)에서 정보입력 → VO(자바빈)으로 정보이동 → 서버.jsp에서 정보 불러오기
2. 액션 태그 이용하여 VO(자바빈)사용하기
①. 액션태그에 풀네임으로 명시하므로 import 안한다
②. 전송된 데이터를 인코딩 처리해준다.(form의 method가 post 방식일 경우)
<% request.setCharacterEncoding("utf-8"); %>
③. useBean 액션 태그를 명시하여 객체를 생성 (import X)
시작태그 끝에 '/ '를 넣어서 단독태그 형태로 만들어준다.
식별자를 넣어주고 (자바빈)클래스 를 넣어준다.
<jsp:useBean id="member" class="kr.web.member.MemberVO"/>
식별자는 참조변수역할을 한다.
④. 데이터를 넣어주기 위해서 setProperty 액션 태그 사용
<jsp:setProperty property="*" name="member"/>
property = 자바빈의 프로퍼티(≒멤버변수)
name = 자바빈의 식별자
setProperty는 request에 저장된 데이터의 파라미터네임과 자바빈의 프로퍼티명을 대조해서 일치하면
전송된 데이터를 자바빈(VO)의 프로퍼티(≒멤버변수) 에 저장한다. (이 또한 단독태그 형태)
⑤. <body>에서 getProperty 액션 태그를 사용해서 데이터를 읽어온다.
*set메서드(setter)는 데이터를 셋팅하는 역할 → setPorperty 액션태그
*get메서드(getter)는 데이터를 읽어오는 역할 → getPorperty 액션태그
아이디 : <jsp:getProperty property="id" name="member"/>
비밀번호 : <jsp:getProperty property="password" name="member"/> <br>
자바빈에 접근해야하니까 자바빈 식별자member
'WEB > ✿JSP' 카테고리의 다른 글
[JSP] 🔗모델1 구조(2) 실습 (0) | 2022.01.15 |
---|---|
[JSP] 🔗JDBC와 커넥션 풀 (0) | 2022.01.15 |
[JSP] 🔗/AJAX(2) DB연동 (0) | 2022.01.13 |
[JSP] 🔗AJAX(1) (0) | 2022.01.13 |
[JSP] 🔗JDBC실습 - 상품게시판 (0) | 2022.01.12 |
댓글