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

JSP 내장 객체와 액션 태그 1 - JSP 내장 객체에 대하여 본문

웹 · 앱 개발/JSP & Servlet

JSP 내장 객체와 액션 태그 1 - JSP 내장 객체에 대하여

huenuri 2024. 8. 27. 18:58

오늘 오후 시간과 저녁에는 JSP 내장 객체에 대해서 학습해보려고 한다. 내장 객체란 무엇일까? 오늘 아침 수업때 선생님께서 20분 정도 자율학습 시간을 주셔서 이 내용을 써보며 공부하기로 했다.


 

 

 

 

JSP 내장 객체

JSP 내장 객체는 JSP 페이지에서 프로그래머가 객체를 생성하는 과정 없이 바로 사용할 수 있는 객체를 말한다. JSP에서 내장 객체를 바로 사용할 수 있는 이유는 JSP가 서블릿 파일로 변환될 때 JSP(서블릿) 컨테이너가 객체를 자동으로 생성해주기 때문이다.

객체를 생성한는 과정없이 바로 사용 가능하다는 의미가 무엇인지 간단한 메시지를 출력하는 파일을 통해 살펴보기로 하자.

 

 

 

 

지금까지 out 객체를 사용하기 위해서 다음과 같이 response 객체의 getWriter()를 호출하여 얻어온 후에 사용하였다.

PrintWriter out = response.getWriter();

 

서블릿과는 달리 JSP에서는 out 객체를 선언하지 않고 바로 사용하였는데 이는 바로 out 객체가 JSP 내장 객체이기 때문이다. JSP 내장 객체가 서블릿 파일로 변환될 때 JSP 컨테이너가 내장 객체를 자동으로 생성해 준다고 하였는데 이를 확인하기 위해 hell_jsp.java를 찾아가 보도록 하자.

 

 

 

JSP 페이지가 변환된 서블릿 파일을 살펴보면 8개의 객체들이 존재함을 확인할 수 있다. 이외에도 에러 페이지로 지정되면 만들어지는 exception 객체까지 포함해서 JSP 페이지에는 총 9개의 내장 객체가 제공된다.

 

 


 

 

 

 

out 내장 객체

out은 서버에서 클라이언트로 열려 있는 출력 스트림을 의미한다. out 객체는 JSP의 실행 결과를 클라이언트의 브라우저로 출력할 때 가장 효율적으로 사용할 수 있는 객체이다. out 객체는 JspWriter로 선언된다.

그러나 JSP에서는 출력 객체인 out이 내장되어 제공되기 때문에 서블릿보다는 편리하게 출력할 수 있게 되었다. JSP 프로그램을 작성하는 과정에서 HTML 태그가 서블릿 파일로 변환된 후에는 out 객체의 출력 메소드를 통해서 브라우저에 출력됨을 알 수 있다.


 

 

request 내장 객체

웹 서비스를 위한 클라이언트와 웹 서버 사이의 요청과 관련된 정보는 request 객체에 저장되어 관리된다. 그러므로 request 객체를 파악하면 클라이언트에서 서버로 전송되는 데이터를 알수 있다. 다음은 브라우저의 요청이 있을 때 이와 관련된 정보들을 알려주는 메소드이다.

 

 


 

 

브라우저와 웹 서버의 정보를 알아내는 JSP

 

위의 실행 결과를 보면 요청 관련 메소드가 어떻게 쓰이는지 한눈에 파악할 수 있다. 다음은 요청 파라미터 관련 메소드를 정리한 표이다.

 

 

 

서버에 있는 JSP에서는 request 객체로 이 값들을 얻어올 수 있다. 이렇게 넘겨진 값을 파라미터라고 한다. 파라미터는 클라이언트가 폼에 데이터를 입력한 후 서버에 요청할 때 전송되는 폼에 입력된 정보 형태를 말한다. 사용자가 입력한 값을 서버에서 얻기 위해서는 입력 양식의 name 속성 값을 메소드의 전달인자로 기술한다.

 

 


 

 

설문 조사 폼 만들기

좋아하는 계절을 선택 받기 위한 입력 폼을 작성한다.

 

 

 

사용자가 입력한 내용을 읽어와 출력하는 JSP 파일을 작성한다.

 

 

 

하지만 한글이 나오지 않았다. 코드를 다시 살펴보며 수정해보자!

 

 

 

이거 하나 수정하는데 왜 이렇게 어려운지.. 30분 가까이 걸렸다. 그래도 문제의 원인을 알아서 기뻤다. UTF-8로 모두 일괄 변경해야 했다. 근데 이 스펠링을 자꾸 틀리고 빼먹은 곳이 있어서 계속 오류가 났던 거였다.

왜 노트북으로 할 때는 EUC-KR로 자동 설정이 되는지 모르겠다.

 


 

 

 

학습을 마치고

이렇게 해서 오후 공부는 마쳐본다. 원래 오후 수업 때 서블릿 공부를 하려고 했는데 오늘부터는 다시 열심히 수업을 들어보았다. 파이썬 데이터 분석 수업을 정말 재미 없어했지만 그래도 어떤 것이든 필요없는 공부는 없을테니 열심히 공부해보기로 했다.

이번주 금요일까지 서블리 공부를 절반 정도 마치고 파이썬 공부도 다시 시작해보려고 한다.