본문 바로가기
서블릿 JSP

Servlet 웹 입/출력

by 영카이브 2024. 2. 20.

웹은 서버에서 클라이언트로 즉 원격으로 출력결과를 보내고 입력을 받는다. 

 

Servlet 문자열 출력

1. Nana.class를 수정한다. 

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!!"); 
	}
}

 

HttpServletRequest : 서블릿을 만들 때 필요한 요청도구

HttpServletResponse : 서블릿의 출력도구 

OutputStream os = response.getOutputStream();
PrintStream out = new PrintStream(os,true);       

OutputStream을 이용하여 PrintStream 객체를 생성, PrintStream은 다양한 데이터 타입을 문자열로 출력할 수 있는 편리한 메서드를 제공한다. 이 생성자의 두 번째 인자로는 autoFlush를 나타내며, true로 설정하면 println() 메서드 호출 시 자동으로 버퍼를 비워내어 데이터를 출력합니다.

 

2. 다시 cmd에 해당 명령어 실행 

 

3. 수정된 Nana.class파일을 D:\dev\tools\apache-tomcat-9.0.86\webapps\ROOT\WEB-INF\classes로 가서 덮어쓴다. 

4. 톰캣 재실행

5. 브라우저에서 http://localhost:8080/hello 실행 , 클라이언트단에 출력되는 것을 확인 

코드수정 - 컴파일 - 배포 - 톰캣 서버 재시작 - 브라우저 요청 의 순서를 갖는다. 

 

참고) outputStream 대신 Writer를 쓴 이유 :  다국어가 가능 

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!!"); 
	}
}

 

 

이클립스 사용해 문자열 출력

웹 개발에서는 서블릿 코드를 효율적으로 관리하기 위해 프로젝트 파일 또는 프로젝트 정보 파일을 사용한다.

이 파일에는 프로젝트의 구조, 컴파일된 내용, 문서화된 내용 등이 포함된다. 이 정보를 프로젝트 관리 도구나 IDE에서 사용하여 프로젝트를 관리하고 지원한다 이를 통해 개발자는 프로젝트를 보다 효율적으로 관리하고 작업할 수 있다.

 

코드수정 - 컴파일 - 배포 - 톰캣 서버 재시작 - 브라우저 요청 의 순서가

코드 수정 + Ctrl + F11 로 완료된다. 따라서 수정이 용이하다. 

 

이클립스로 Servlet 생성 및 동적 페이지 요청하기 과정은 이렇다. 

https://forsaken.tistory.com/entry/Servlet-JSP-Servlet-%EC%83%9D%EC%84%B1-%EB%B0%8F-%EB%8F%99%EC%A0%81-%ED%8E%98%EC%9D%B4%EC%A7%80-%EC%9A%94%EC%B2%AD

 

 

위를 참고한 나의 코드

WEB-INF에 web.xml 복붙하고 Source에서 코드 수정

* com.servlet.web 는 pacakge
  <servlet>
    <servlet-name>na</servlet-name>
    <servlet-class>com.servlet.web.Nana</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>na</servlet-name>
    <url-pattern>/hello</url-pattern>
  </servlet-mapping>

public class Nana extends HttpServlet{
	@Override
	protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		PrintWriter out = resp.getWriter();
		out.println("Hello!! sarah");
	}
}

 

 

 

 

 

 

참고 자료 출처 : 

https://www.youtube.com/watch?v=sF4wwzlj_yQ&list=PLq8wAnVUcTFVOtENMsujSgtv2TOsMy8zd&index=9

https://www.youtube.com/watch?v=0fASNgpvkOQ&list=PLq8wAnVUcTFVOtENMsujSgtv2TOsMy8zd&index=12