SOCO

컴파일, 클래스 생성, 실행, 출력(2) 본문

백/Servlet,JSP(잠시 pause)

컴파일, 클래스 생성, 실행, 출력(2)

ssooda 2021. 6. 30. 22:40

6. 클라이언트에게 출력하는 방법을 알기 전에

 

자바 프로그램과 서블릿 프로그램의 차이점

 

서블릿 : 자바를 이용해서 웹 프로그램을 만들기 => 자바 프로그래밍

 

이 담당하는 것은 UI임

UI라고 하는 것은 콘솔UI, 윈도우UI 등이 있을 수 있음

 

프로그래밍이 됨으로써,

입력과 출력을 담당하는 부분이 웹으로 바뀌는 것임

웹은 서버에서 클라이언트로(원격에 있는 곳으로) 출력 결과를 보여줌

또는 클라이언트로 부터 입력을 받을 수 있음

 

서블릿은 웹을 활용한다는 점에서

기존 자바와 입력과 출력에 대한 내용이 다르므로 이 부분을 이해해야함

 

처음에 작성한 코드 다시 보기!

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;

public class Nana extends HttpServlet
{
	public void service(HttpServletRequest request, HttpServletResponse response) 
    throws IOException, ServletException
    {
    	System.out.prinln("Hello Servlet");
     }
}

service라는 함수는 request객체와 response객체  2 개의 인자를 전해줌

request객체의 자료형은 Http, Servlet을 만들 때 필요한. Requeset요청도구(입력)

response객체의 자료형은 Http, Servlet을 만들 때 필요한 Response출력도구(출력)

 

사용자에게 출력해주기 위해 response의 도구를 살펴봐야함

---------------------

 

6. 클라이언트에게 출력하는 방법

 

1) response.getOutputStream();

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;

public class Nana extends HttpServlet
{
	public void service(HttpServletRequest request, HttpServletResponse response) 
    throws IOException, ServletException
    {
    	OutputStream os = response.getOutputStream();
     }
}

입/출력을 할 떄는 stream을 쓰는 게 기본임

파일입출력, 콘솔입출력, 네트워크입출력 모두 Stream을 씀.

 

2) printStream 객체

우리는 문자열을 출력할 것이므로

os 스트림 객체를 바로 쓰는 것보다는

printStream객체로 하는 게 바람직함

 

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;

public class Nana extends HttpServlet
{
	public void service(HttpServletRequest request, HttpServletResponse response) 
    throws IOException, ServletException
    {
    	OutputStream os = response.getOutputStream();
        PrintStream out = new PrintStream(os, true); //새로운 객체 생성
     }
}

printStream객체는 기본적인 출력스트림 객체(os)를 이용해서

쉽게 문자를 출력할 수 있도록 print 계열의 함수를 제공하는 객체임

 

true를 붙여주는 이유는 기다리지 말고 바로 프린트 단위로 출력하라는 옵션임

 

3) out.println("Hello Servlet!")

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;

public class Nana extends HttpServlet
{
	public void service(HttpServletRequest request, HttpServletResponse response) 
    throws IOException, ServletException
    {
    	OutputStream os = response.getOutputStream();
        PrintStream out = new PrintStream(os, true);
        out.println("Hello Servlet!");
     }
}

out이라는 객체는 PrintStream객체이고

println함수를 포함하고 있음

 

기존의 System.out객체 처럼 println 등을 쓸 수 있음

 

기존의 System.out.println은 서버 쪽 콘솔에 출력되었다면

이제는 원격에 있는 클라이언트에게 전달되는 것임

 

4) 문제/불편함

수정을 한 번 하려면

소스 코드 고쳐야함

컴파일 다시해야함

배포도 다시해야함

서버 다시 실행해야함(톰캣 startup.bat)

브라우저에 주소 다시 입력해야함

 

수정을 한 번 하면 모든 걸 다 다시 해야함

 

따라서 이 모든 걸 보다 쉽게 할 수 있는 통합개발환경이 필요함

 

이클립스를 이용해서 수정하고, 개발하게 됨

이클립스에서는 ctrl+F11하나로 다 끝남 !

 

이클립스에서 웹개발할 때는

서블릿코드를 바로 만드는 방식으로 하는 것이 아님

 

 

5) 추가

일반적으로 문자열을 출력할 때는 PrintStream을 기본적으로 쓸 것이므로

PrintStream을 기본적으로 제공해주는 getter가 있음

*getter : get으로 시작하는 메서드

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;

public class Nana extends HttpServlet
{
	public void service(HttpServletRequest request, HttpServletResponse response) 
    throws IOException, ServletException
    {
       PrintWriter out = response.getWriter();
        out.println("Hello Servlet!");
     }
}

 

자바에는 Stream계열이 있고, Writer계열이 있음 

영어 이외의 문자를 쓰려면 PrintWriter쓰는 게 기본임

 

' > Servlet,JSP(잠시 pause)' 카테고리의 다른 글

매핑  (0) 2021.07.01
이클립스 IDE 준비하기  (0) 2021.07.01
컴파일, 클래스 생성, 실행, 출력 (1)  (0) 2021.06.30
톰캣 startup.bat 바로꺼짐 해결  (0) 2021.06.30
톰캣  (0) 2021.06.24