SOCO
컴파일, 클래스 생성, 실행, 출력(2) 본문
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 |