진짜 개발자
본문 바로가기

Web/JSP,Servlet

JSP - JSP태그와 내부객체 , Java Bean

728x90
JSP의 태그

1. JSP 태그

1.1 지시자 (<%@ %>)

- 지시자는 <%@ %> 와 같은 형식으로 작성된다. 주로 페이지 속성을 기입할 때 사용된다.

1.2 주석 (<%-- --%>)

- html의 주석과 달리 소스 보기시 주석이 보이지 않는다(서버에서 처리된 후 html을 반환 받기 때문)

1.3 선언 (<%! %>)

- 변수 , 메소드 선언시 사용

1.4 표현식 (<%= %>)

- 결과값을 출력할 때 사용한다. 중요한 점은 선언식이나 스크립트릿과 달리 ;을 사용하지 않는다.

1.5 스크립트릿 (<% %>)

- JAVA 코드를 HTML에 삽입하기위해 사용한다.

1.6 액션태그 (<jsp:action> </jsp:action>)

- Java Bean을 연결할 때 사용한다.

 


 

2. JSP 내부 객체

개발자가 객체를 직접 생성하지 않고도 바로 사용할 수 있는 객체를 의미한다. JSP의 내부객체JSP Container에 의해 Servlet으로 변환될 때 자동으로 생성된다. 

 

2.1 내부객체 종류

입출력 객체 : request, response, out

서블릿 객체 : page, config

세션 객체 : session

예외 객체 : exception


2.2 내부 객체 생성 확인하기

내부객체는 JSP가 servlet으로 변환되는 과정에서 자동으로 생성된다고 말했다. 이를 확인하기 위해서 servlet으로 변환된 *_jsp.java 파일을 확인해보자. 


웹 컨테이너에 의해서 servlet으로 변환되는 것이므로 당연히 tomcat의 jsp디렉토리안에 존재한다.


다음과 같이 아무 .java파일을 텍스트 편집기든 IDE든 코드를 볼 수 있는 편집기로 열게 되면 소스코드를 확인할 수 있다. 소스 코드중 _jspService() 메소드를 확인하면 JSP에서 제공되는 내부객체들이 선언되고 생성되는것을 볼 수 있다.

 


 

3. Java Bean 이란

Java Bean은 반복적인 작업을 효율적으로 하기 위해 사용한다. Java Bean은 Java의 속성, 메소드로 이루어진 클래스이다. jsp페이지를 만들고 액션태그를 이용하여 Java Bean을 사용한다.

 

3.1 Java Bean 과 Spring Bean 차이

http://www.shaunabram.com/beans-vs-pojos/

Java Bean의 경우 앞서 말한 형태로 특정 구조를 띄는 Class를 의미한다 

  1. 공용 기본 (인수 없음) 생성자가 있어야 한다.
  2. 액세서 (getter 및 setter) 메서드를 사용하여 속성에 액세스 할 수 있다.
  3. java.io.Serializable를 구현한다.


Spring Bean의 경우 

Spring에 의해 관리되는 객체이다. 좀 더 구체적으로 말해, Spring Framework 컨테이너에 의해 인스턴스화, 구성 및 관리되는 객체이다.Spring 빈은 Spring 설정 파일 (또는 어노테이션을 사용하여)에서 정의되고 Spring 컨테이너에 의해 인스턴스화 된 다음 애플리케이션에 주입된다.


3.2 Java Bean 구조

Java Bean클래스의 속성은 private로 접근을 제한하고 getter, setter를 이용해 외부의 접근 및 변경을 제한한다.(정보 은닉, 캡슐화)

 

3.3 Java Bean 목적

JSP페이지가 View(사용자에게 보여지는 부분)비지니스 로직들이 혼재하면서 복잡해지는 것을 피하기 위해 JSP 페이지의 비지니스 로직부분을 분리하여 이를 재사용하여 프로그래밍 효율을 높이는것.

 

3.4 Java Bean 사용

우선 Java bean으로 사용될 class를 생성한다. 앞서 말했듯이 Java bean은 속성, 메소드로 이루어진 클래스이며 각 속성은 private으로 접근을 제한하고 속성을 변경하고 가져오기 위한 getter,setter메소드로 이루어져있는 Java class이다.

 

JSP에서 Java Bean은 액션 태그를 이용하여 사용한다 사용법은 위와 같다. 먼저 <jsp:useBean>태그를 이용해 앞서 생성한 Student Bean 클래스를 이용하고 각각 studen1, studen2라는 id를 갖는 Bean을 선언했다. 두번째로 student1, studen2 bean의 값을 설정하기 위해 <jsp:setProperty>태그를 이용하여 name, age 속성값을 지정하였다. 마지막으로 지정한 Bean값을 이용하기 위해 <jsp:getProperty>태그를 이용했다.

 

3.4.1 <jsp:useBean>

특정 Bean을 사용한다고 명시할 때 사용.

<jsp:useBean id="student" class="사용할 Bean Class의 패키지를 포함한 경로" scope="유효범위">

id

bean의 이름을 명시

class

사용할 Bean Class를 지정

Scope

java Bean의 유효 범위를 정하는데 사용된다.

page : 생성된 페이지 내에서만 사용

request : 요청된 페이지 내에서만 사용

session : 웹브라우저의 생명주기와 동일하게 사용

application : 웹 어플리케이션 생명주기와 동일하게 사용

 

3.4.2 <jsp:setProperty>

빈의 데이터 값을 설정할 때 사용한다.

<jsp:setProperty name="student" property="name" value="jjy"/>

name

데이터를 수정할 bean의 id

property

수정할 bean클래스의 속성

value

변경할 값

 

3.4.3 <jsp:getProperty>

빈의 데이터 값을 가져올 때 사용한다.

<jsp:getProperty name="student" property="name"/>

name

데이터를 가져올 bean의 이름

property

bean으로부터 가져올 속성