관리 메뉴

클라이언트/ 서버/ 엔지니어 "게임 개발자"를 향한 매일의 공부일지

표현 언어와 JSTL 4 - 표현 언어로 내장 객체 접근하기 2 : 서블릿 클래스로 접근하는 방법 본문

웹 · 앱 개발/JSP & Servlet

표현 언어와 JSTL 4 - 표현 언어로 내장 객체 접근하기 2 : 서블릿 클래스로 접근하는 방법

huenuri 2024. 11. 29. 17:14

이번에는 실습을 진행하며 내장 객체에 대해서 좀 더 학습해 보겠다. 오늘도 공부를 많이 못할 것 같지만 조금씩 진행해 볼 것이다. 가끔은 천천히 가야 하는 때도 있다.


 

 

 

 

 

[직접 해보기] 표현 언어의 내장 객체 명시적으로 사용하기

다음의 파일을 작성하고 결과를 출력해보겠다.

 

 

 

 

내장 객체를 명시하지 않으면 가장 협소한 범위 내에서 사용 가능한 pageScope 객체에서부터 속성을 찾아온다. 6장에서 회원 정보를 저장하는 자바 빈 객체의 프로퍼티를 액션 태그를 사용하여 출력했다. 표현 언어는 액션 태그보다 간단하게 프로퍼티를 얻어올 수 있다. 6장 예제를 표현 언어로 리뉴얼해 보자.

 

 

 

표현 언어로 프로퍼티 값을 얻는 방법을 학습하기 위해 우선 자바 빈부터 준비해 놓도록 하자. 6장에서 자바 빈을 만들었던 방식으로 회원 정보를 저장하는 자바 빈을 만들어 보겠다.


 

 

 

 

[직접 해보기] 자바 빈 클래스 만들기

 

1. 프로젝트에서 클래스 만들고 필드 선언하기

 

 

이렇게 작성하면 자바 빈의 실행 단위인 클래스가 이클립스에 의해 Memberbean.java란 파일 이름으로 자동 생성된다. 자동 생성된 이 파일에는 회원 정보를 저장할 필드가 필요하다. 이제 필드를 선언한다. 이 필드들은 데이터 은닉이라는 개념에 입각해 직접 접근하지 못하도록 private 접근 제한자로 선언한다.

 


 

 

 

 

2. getter, setter 작성하기

필드는 직접 접근하지 못하기 때문에 자바 빈에 정보를 조회하고 저장하기 위해서는 getter, setter를 작성해야 한다. 이 코드는 이클립스에서 자동으로 만들어 준다.

 

 

이걸 만들 때는 단축키 Ctrl + Shift + s로 사용하는 것이 편리하다. Select All은 선택한다.

 

 

 

 


 

 

 

 

 

3. 생성자 자동 생성하기

자바에서 객체를 생성할 때 자동 호출되는 메서드를 생성자라고 한다. 생성자 역시 이클립스에서 자동으로 생성해 준다. 매개 변수가 있는 생성자를 만들기 위해서는 MemberBean 클래스 내부에서 Generate Constructor Using Fields를 선택하면 된다.

getter, setter를 만드는 메뉴와 같아서 이건 실행할 필요가 없었다. 근데 나중에 보니 메뉴만 같고 다시 선택을 하는 거여서 내용을 추가했다.

 

 

 

 

 

필드 이름만 같고 메뉴가 다르다는 것을 기억하자. 처음에는 같은 건 줄 알고 만들지 않았다가 다시 추가하느라 좀 힘들었다. 이전의 코드를 전부 지우고 작성했기 때문이다.


 

 

 

 

 

4. 기본 생성자 추가하기

매개 변수가 있는 생성자를 만들면 매개 변수 없는 기본 생성자가 사라지기 때문에 기본 생성자도 추가한다. 이번에는 Generate Constructors From Superclass를 선택한다.

 

 

Generate를 선택하면 다음과 같이 기본 생성자가 추가된다.

 

 

 


 

 

 

 

5. toString() 메서드 오버라이딩하기

자바 빈 객체에 저장된 필드 값을 접근해서 사용하는 레퍼런스 변수만 기술해도 출력될 수 있도록 하기 위해서 toString() 메서드를 오버라이딩 해야 한다. 이 역시 이클립스에서 자동으로 해준다. 이번에는 Generate toString()을 선택한다.

이 책에는 선택창이 OK로 되어 있지만 실제로 실행해 보면 Generate로 되어 있다. 아마도 책은 구버전이라서 그런 것 같다.

 

 

 

 


 

 

 

 

6. 작성한 코드 확인하기

지금까지 추가한 내용을 정리해 보면 다음과 같다.

 

 

 

이렇게 생성된 자바 빈을 EL에서 어떻게 표현하는지 설명하겠다. EL 식에서 자바 빈의 필드에 저장된 정보를 얻어올 때는 프로퍼티 이름을 사용한다.

 

 

자바 빈 객체의 이름 뒤에 마침표를 찍고 그다음에 프로퍼티 이름을 쓴다. 이렇게 점 연산자로 접근하면 자바 빈 객체의 정 보를 얻어 오기 위한 getter가 호출된다. 마침표 뒤에 기술한 프로퍼티 이름이 name이면 getName()이, userid이면 getUserid()가 호출된다.

표현 언어에서는 점 연산자 외에도 배열과 컬렉션의 요소를 검색하는데 사용되는 대괄호 연산자를 사용하여 자바 빈의 필드에 저장된 정보를 얻어올 수 있다.

 

대괄호 내의 값인 속성의 이름은 큰따옴표 또는 작은따옴표로 둘러싸야한다.


 

 

 

 

 

[직접 해보기] 표현 언어로 자바 빈 객체 속성 값 얻어오기

 

1. 서블릿 클래스 생성하기

회원 정보를 저장한 자바 빈 객체를 생성하기 위한 서블릿 클래스를 생성한다.

 

 

패키지 이름은 책과 다르게 설정하는 편이다.


 

 

 

 

2. 서블렛 클래스 작성하기

 

 

계속해서 빨간 줄이 사라지지 않아 한참을 고민했는데 알고 보니 import를 각각 해주어야 하는 거였다. 이제 깨끗해졌다.

조금 전에 작성한 MemberBean의 클래스 이름이 같아야 한다. 이름을 다르게 작성해서 조금 전에 이것도 수정해 주었다. 이 클래스로 이름은 전수빈, 아이디는 pinksubin으로 회원 정보를 초기화하여 member란 이름의 객체를 생성한다.

request의 속성에 회원 정보를 저장한 자바 빈 객체인 member를 저장한다.


 

 

 

3. 자바 빈즈 프로퍼티를 출력하는 JSP 페이지 작성하기

 

 

MemberServlet 서블릿 클래스의 doGet() 메서드에서 생성한 객체를 request의 속성에 회원 정보를 저장한 자바 빈 객체인 member를 저장한다. 그런 다음 JSP 페이지인 09_el.jsp로 포워딩하였기 때문에 자바 빈의 프로퍼티 값(필드에 저장된 정보)을 얻어올 수 있다. 

 

이번 예제를 실행하기 위해서는 서블릿 클래스를 요청해야 한다. 주소 입력란에 클래스 이름을 입력하거나 서블릿 클래스를 선택한 후 서블릿을 요청하면 된다.

 


 

 

 

 

 

학습을 마치고

점심을 먹고 공부가 정말 하기 싫어 빈둥거리다가 4시가 다 되어서야 공부를 시작했다. 근데 왜 이렇게 어렵던지 많이 헤맸다. 코드를 작성했는데 빨간 줄이 뜨며 실행이 안 될 때가 가장 힘든 시간이지만 이 시간을 이기고 나면 다음에 같은 문제를 만났을 때 자신감이 생기고 문제를 해결할 수 있는 힘이 길러진다.

누군가 개발자는 오류 코드를 많이 내면서 실수를 통해 많이 배울 때 성장한다는 이야기를 들은 적이 있다. 앞으로 난 실수를 두려워하지 않고 디버깅을 하고 그러면서 많이 배워나가기로 다짐해 본다.

 

여기까지는 JSP와 친해지며 꼼지락꼼지락 하는 시간으로 많이 보냈다. 이제 다음 포스트에서는 JSTL에 대해서 공부하게 된다. 분명 8월 초쯤 JSP 수업 연장선으로 JSTL 수업이 며칠 있었는데 이 영상은 수업 자료에 올라와있지 않았다. 담임 선생님께 요청을 드려도 대부분 내가 한 이야기는 반영이 안 되는 편이다.

일주일쯤 지난 후에 뒷북을 치며 다 해결된 다음에 몇 마디 해주는데 하나도 도움이 되지 않는 이야기들 뿐이었다. 아무튼 이번 여자 담임선생님에 대한 불만과 실망이 정말 크다. 한두 번 이야기하고는 그냥 내버려 두었다. 어차피 기대도 하지 않았다.

 

나중에는 나도 정말 화가 나서 어차피 보지도 않고 씹을 카톡 나도 차단시키고 다른 남자 담임 선생님과 부담임 선생님께 연락했었다. 그분들은 답장을 잘해주는 편이다. 근데 생각해 보니 내가 카톡 차단시킨 것도 몰랐을 것 같다. 내게 전혀 관심이 없었으니 말이다. 마지막이라 그래도 감사하다는 카톡을 길게 써서 보냈지만 난 이런 사람들과 다시는 만나고 싶지 않은 마음이다.

지난 1년 2개월 동안 개발 공부를 하며 세 곳의 교육 기간을 거쳐 정말 많은 사람들을 만났다. 그러면서 어떤 사람과 관계를 맺어야 하고 함께 일할 수 있는지 깨닫기도 했다. 대부분은 앞에서는 하하거리면서 뒤에서는 가식을 떠는 사람들이 많았다. 그리고 이제는 그런 사람들을 구별할 수 있게 되었다.