본문 바로가기
WEB/✿JSP

[JSP] 🔗모델1 구조(1)

by W_W_Woody 2022. 1. 14.

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)의 프로퍼티(≒멤버변수) 에 저장한다. (이 또한 단독태그 형태)

setProperty

⑤. <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

댓글