본문 바로가기
☕ Java 웹 프로그래밍/Servlet & JSP

[Servlet&JSP] 처음이자 마지막으로 동적인 페이지를 서블릿으로 직접 만들기

by 일단연 2023. 6. 2.

* 본 글은 [뉴렉처]의 Servlet&JSP 프로그래밍 강의를 듣고 정리한 글입니다.

 

2020 Servlet&JSP 프로그래밍

 

www.youtube.com

 

 처음이자 마지막으로 동적인 페이지를 서블릿으로 직접 만들기 

  • 다음부터는 JSP로 만듦

  • service( )메소드에 동적인 페이지를 만드는 코드 넣기
  • GET 요청을 처리하는 doGet( )메소드와 POST 요청을 처리하는 doPost( )메소드가 있음
  • 기존 서블릿과 동적 페이지를 만드는 서블릿을 하나로 합침

 

동적인 페이지(서버 페이지) 만들기 - CalcPage.java

  • 1) Calc3.java에서 출력을 위한 설정만 두고 나머지는 다 지움
    • 출력을 위한 설정
      • response.setContentType("text/html; charset=UTF-8");
        response.setCharacterEncoding("UTF-8");
  • 2) response가 가지고 있는 getWriter( )메소드를 이용해 PrintWriter 객체 out 생성
    • PrintWriter out = response.getWriter( );
  • 3) CalcPage.java에 calc3.html의 코드를 모두 붙여넣기
    • 서블릿에 갑자기 html 코드를 넣었으니 오류 발생
  •  
  • 4) 오류를 해결하기 위해 PrintWriter 객체 out으로 문자열 출력 전용 메소드 write( )를 html 코드 모든 줄에 붙임
    • html 코드 줄 앞에는 out.write(” 를, 뒤에는 "); 를 붙이면 됨
      • out.write(” 를 먼저 붙이면 이클립스가 자동으로 들여쓰기를 해서 코드 형태를 이상하게 만듦
        out.write(”을 붙이는 작업보다 "); 를 붙이는 작업을 먼저 하는 게 좋음
  • 5) 쌍따옴표 안에 쌍따옴표가 들어가니까 범위가 깨져서 오류 발생
    • 안쪽에 들어가는 쌍따옴표 안에 문자열이 들어간다는 걸 표시하기 위해 \ 사용
    • 변경 전 - out.write("<meta charset="UTF-8">");
      변경 후 - out.write("<meta charset=\"UTF-8\">");
    • 요령) 바꾸고 싶은 값을 선택하고 Ctrl+F를 누르면 아래와 같은 창이 떠서 값을 일괄적으로 바꿀 수 있음

Ctrl + F 화면

  • 6) 서블릿에서 html 코드 안에 연산식을 넣으면 연산식을 계산한 결과를 산출 > 동적인 페이지의 필요성이 여기서 발생
    • 문자열 출력 전용 메소드 write( ) 대신, 여러 종류의 데이터를 다양한 서식에 맞춰 출력하는 printf( )메소드 사용
      • printf( )메소드에서 f는 fomatted (서식화된 출력을 지원한다는 의미)
    • 서블릿에 넣을 코드: out.printf("<td class = \"output\" colspan=\"4\">%d</td>", 3+4);
printf( )
System.out.printf ("출력 서식", 출력할 내용);
%d 정수형 출력
%s 문자열 출력
%f 실수형 출력
%c 문자형 출력
%n 줄 바꿈
%b boolean 출력

 

동적인 페이지(서버 페이지) 만들기 - CalcPage.java 실행 결과

  • CalcPage.java 결과
    • calc3.html과 화면에 출력되는 결과는 같음
    • But, URL이 /calcpage로 다름
      • calc3.html은 URL이 /calc3.html

CalcPage.java의 태그에 연산식 입력 - 결과: 연산식을 계산한 값을 출력

 

  • 비교) calc3.html 결과
    • calc3.html의 태그에 연산식을 넣으면 그냥 연산식이 출력됨
      • <td class = "output" colspan="4">3 + 4</td>

CalcPage.java의 태그에 연산식 입력 - 결과: 연산식을 계산한 값을 출력