본문 바로가기

KOSTA

KOSTA 교육 (JSP, WS, WAS,Container, Servlet)

배운 내용

  1. WS(Web Server)
  2. WAS(Web Application Server)
  3. Container
  4. Servlet
  5. JSP

 

1. WS(웹 서버 / Web Server)

클라이언트의 요청을 받아 정적인 페이지를 HTTP 프로토콜을 통해 전송한다.

  • 클라이언트의 요청 중 자체적으로 처리가 불가능한 정보는 WAS에 처리를 요청한다.
  • 대표적인 웹 서버의 종류로는 아파치(Apache)와 IIS(Internet Information Server)를 들 수 있다.

2. WAS(웹 어플리케이션 서버 / Web Application Server)

웹 서버에서 처리할 수 없는 동적인 정보를 처리하여 웹 서버에 정적인 정보를 제공한다.

  • 요청한 페이지의 로직이나 데이터베이스와의 연동을 처리한다.
  • 대표적인 WAS로는 BEA사의 웹로직(WebLogic), IBM의 웹스파이어(WebSphere), SUN사의 iPlanet, Oracle 9iAS, 국산으로는 제우스(jeus) 등이 있다.

WS와 WAS의 구성 예시 (출처 : http://gap85.tistory.com/)

  • 위의 그림과 같이 사용자 요청 → WS → WAS(동적처리) → WS → 사용자 응답 순으로 이루어진다.

3. Container

Servlet의 생명 주기를 관리하고 JSP를 Servlet으로 변환하는 기능을 수행한다.

  • Servlet container : 표준 API에서 제공하는 추상 클래스와 인터페이스를 구현한 클래스 제공한다.
  • JSP : JSP를 Servlet으로 변환하는 역할을 한다.

4. Servlet

자바를 기반으로 하는 웹 애플리케이션 프로그래밍 기술이다.

  • 자바 코드 내에 HTML이 들어가있는 형태로서 코딩이 어렵다.
  • 비즈니스적으로서 있어 JSP와는 달리 계산적인 요소가 있다.

계산식 예시

  • HttpServlet 클래스를 무조건 상속한다.
  • public 으로 클래스 선언을 한다.
  • doGet 혹은 doPost 메소드를 선언하고 Request, Response 매개 변수 값을 받는다.

Servlet 클래스 작성 예시

서블릿 예제

Servlet 예시

  • 어노테이션을 이용하여 Mapping을 한다.
  • PrintWriter는 자바 프로그램에서 파일로 텍스트 출력할 때 사용한다.
  • response.getWriter 메소드를 사용하여 PrintWriter의 웹 브라우저 데이터를 출력한다. 여기서 out 변수에 넣으면 response에 들어가게 된다.
  • out.println();으로 HTML코드를 입력하여 출력한다.

 

5. JSP

자바를 기반으로 하는 웹 애플리케이션 프로그래밍 기술이다.

  • Servlet과는 반대로 HTML문서에 자바 코드가 삽입되는 구조를 가지고 있다.
  • ${} 문법은 익스프레션 언어로 데이터 이름, 간단한 식을 사용
  • <% %> 태그를 가지는 문법을 사용한다.(지시자, 스크립팅)
  • XML 태그 문법은 복잡한 자바 문법을 단순하게 만들어준다.

문법 요소

지시자 1

  • 위의 지시자는 사전에 설정해야하는 부분이다.
  • 스크립틀릿 안에는 자바 코드가 들어간다.
  • 익스프레션은 total값을 나타내야 할 때 ${total}로도 나타낼 수 있다.

지시자 2

  • JSP 페이지를 서블릿 클래스로 변환할 때 필요한 정보들을 기술하기 위해 사용하는 문법이다.
  • <%@ %> 태그로 나타내는 지시자이다.
  • <%@지시자이름 애트리뷰트%> 순으로 작성한다.
  • Page 지시자는 JSP 페이지 전체에 적용되는 정보를 기술하기 위해 사용한다.
    (contentType : text/html, XML 생성 가능 | import 사용)
  • Include 지시자는 다른 JSP 페이지나 HTML 문서를 불러 현재 JSP 페이지의 일부로 만들기 위해 사용한다.(file 애트리뷰트를 사용할 수 있다.)
  • Taglib 지시자는 JSP문법 중 하나인 액션을 사용할 때 필요하고 기존의 액션태그가 아닌 사용자 지정 태그를 사용한다.

스크립팅 문법 ! 예시

  • <%! %> 사이에 변수와 메소드 선언이 가능하고 선언된 요소들은 멤버 변수로 선언이 된다.

내장 변수

JSP 페이지의 내의 변수를 선언하지 않고 바로 사용가능한 변수이다.

request

서블릿 클래스에 있는 doGet, doPost 메소드의 첫 번째 파라미터와 동일한 역할을 한다.

  • sendRedirect 메소드는 URL의 메시지를 웹 브라우저로 보낸다.

out

서블릿 클래스 안에서 getWriter 메소드를 호출해서 얻은 PrintWriter 객체의 역할을 한다.

  • HTML 문서를 만들 수 있기 때문에 println, print, printf 를 하기 위해 사용한다.

application

웹 애플리케이션에 관련된 여러 가지 기능을 제공한다.

  • getContextPath : URL 경로 리턴
  • getRealPath : 파일 경로명을 파일시스템 전체 경로로 바꾼다.

내장 변수 종류별 기능

파일 입출력

파일을 읽기 위한 기능으로 자바의 FileReader, FileInputStream을 사용한다.

파일 입출력 예제

  • page로 import하여 FileReader를 선언한다.
  • path로 경로를 txt 파일로 지정해주고 application 내장 변수로 getRealPath하여 파일 시스템 전체 경로를 파악한다.
  • 해당 파일의 내용을 br에 담고 str을 빈 값으로 초기화 한 후, while문을 사용하여 readLine()으로 null값이 아니라면 str에 넣는다.

다른 JSP페이지 호출

Forward
JSP 페이지 안에서 다른 JSP 페이지를 호출할 때 사용하는 메소드이다.

  • RequestDispatcher 인터페이스에 속하기 때문에 객체가 있어야 한다.

Result.jsp 호출 예시

forward 예시

  • 객체를 구한 후 객체에 대해서 forward 메소드 호출 가능하고 request, response 변수를 파라미터로 넘겨준다.
  • request.setAttribute(“데이터 이름”, 데이터 값)라는 메소드로 JSP 페이지를 넘겨주기 전 request 변수 안에 데이터를 저장해야한다. 그리고 값을 가져오려면
    캐스트연산자 변수명 = (캐스트 연산자)request.getAttribute(“데이터 이름");
    를 선언하여 가져온다.

Include
JSP 페이지 안에서 다른 JSP 페이지를 호출할 때 사용하는 메소드이지만, 호출된 JSP가 끝나면 실행 흐름의 제어가 다시 본래의 JSP페이지로 되돌아온다.

  • Forward와 마찬가지로 RequestDispatcher 객체가 필요하다.

Today.jsp 호출 예시

include 예시

  • setAttribute로 데이터 저장, getAttribute로 데이터 가져오는 과정은 Forward와 동일하다.

JSP 예제

JSP, Servlet숫자 2개 더하기 예제 1

  • setCharacterEncoding메소드를 통해 utf-8로 변환시켜준다.
  • Integer.parseInt로 getParameter로 가져온 매개변수 값을 정수로 형변환 해준 후 result값에 담는다.
  • setAttribute(“데이터 이름", 데이터 값); 으로 result값을 가져온다.
  • RequestDispatcher로 jsp파일로 경로의 객체를 생성하고 forward로 이동한다.

JSP, Servlet 숫자 2개 더하기 예제 2

  • form 태그를 생성하여 action에 Servlet으로 경로를 선언하고 메소드는 post로 선언한다.
  • 각 숫자(num1, num2)를 입력하고 계산 submit을 한다.

JSP, Servlet 숫자 2개 더하기 예제 3

  • 결과를 익스프레션 언어로 하여 단순하게 호출한다.

JSP 숫자 2개 더하기 예제 결과

JSP 숫자 2개 더하기 예제 1

  • forward 액션을 통해 해당 JSP에서 다른 JSP로 보내준다.
  • 이 때 <% %> 안에 자바코드를 작성한다.
  • 여기서 HTML body에 작성된 결과 2로 나올지 고민해본다.

JSP 숫자 2개 더하기 예제 2

  • form 태그에서 action을 forward를 선언한 JSP 파일로 선언하고 출력한다.

JSP 숫자 2개 더하기 예제 결과

  • 결과는 2가 나오지 않고 1이 나오는 것을 알 수 있다.

JSP 예시 1

  • 각 파일별 내용을 나타낸다.

JSP 예시 2

  • body에 parameter값을 body를 선언하여 body가 null값이면 body = main.jsp로 선언해준다. 그래서 null값이 아닐 때 body 값이 바뀌게 된다.

JSP 예시 3

  • header 태그와 footer 태그에 include를 통해 jsp 파일을 가져온다.
  • ul, li 태그 선언을 하고 a태그로 URL을 생성하고 template.jsp에 ?를 사용하여 body=main.jsp, join.jsp를 담아간다.
  • 그래서 a태그를 클릭 시 body에 main.jsp, join.jsp의 내용이 표시되게 된다.

JSP 예제 결과