서블릿 클래스 만들기
mport 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.println("Hello Servlet");
}
}
자바는서는 main( ) 함수를 시작으로 프로그램을 만들었지만 서블릿에서는 service( ) 함수를 통해 프로그램을 만든다.
컴파일 하기
▶▷ cmd 창에서 서블릿 클래스인 Nana.java가 있는 폴더로 cd 명령어를 통해 이동(ex. cd C:\jsp\code)
▶▷ javac -cp servlet-api.jar가 있는 경로 서블릿 클래스명
(ex. javac -cp C:\jsp\tools\apache-tomcat-9.0.73\lib\servlet-api.jar Nana.java)
▶▷ dir명령어를 통해 .class 파일 확인
서블릿 객체 생성과 실행
WEB-INF안에 classes 폴더 생성 후 아까 컴파일 후 만들어진 .class 파일을 가져온다.
여기서 WEB-INF안은 사용자에 의해 요청될 수 있는 디렉토리가 아니고 서버쪽에서만 사용할 수 있다.
클라이언트 쪽에서 안에 내용을 볼 수도 요청할 수도 없다는 것이다.
그렇다면 WEB-INF에서 사용자가 요청하는 방법은 무엇일까?
URL과 매핑된 서블릿 코드를 찾아서 실행할 수 있도록 매핑을 하는 것이다. 매핑하는 방법은 다음과 같다.
C:\jsp\tools\apache-tomcat-9.0.73\webapps\ROOT\WEB-INF
위의 경로로 가면 WEB-INF 폴더 안에 web.xml 파일이 있다. 그 파일을 아래와 같이 수정하도록 한다.
<servlet>
<servlet-name>na</servlet-name>
<servlet-class>Nana</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>na</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
hello라는 URL에 오면 na라는 서블릿을 실행 해달라. 이 서블릿은 Nana 클래스를 의미한다.(매핑)
즉, hello는 사용자에게 제공하는 url이고 Nana는 실행할 서블릿 코드라는 뜻이다.
브라우저를 통해 http://localhost:8000/hello 입력하면 브러우저 창에 출력되는 것이 아니라 톰캣 창에
hello Servlet이 출력된다. 이유는 출력을 따로 설정하지 않았기 때문이다.
서블릿 문자열 출력
서블릿 문자열을 출력하는 방법으로 stream 계열을 사용하는 것과 wirter 계열을 사용하는 방법 2가지가 있다.
Nana.java를 아래와 같이 수정한다.
1) stream 계열 사용
OutputStream os = response.getOutputStream();
PrintStream out = new PrintStream(os, true);
out.println("Hello Servlet");
2) wirter 계열 사용 (문자를 쓰는데 그것이 다국어라면 printWriter를 사용함)
PrintWriter out = response.getWriter();
out.println("Hello Servlet");
수정하고나서 컴파일을 하고 .class 파일을 덮어씌운 후 브라우저 창을 통해 보면
Hello Servlet이 출력되는 것을 볼 수 있다.
'강의 정리하기 > JSP와 Servlet' 카테고리의 다른 글
상태 유지를 위한 방법 (0) | 2023.03.27 |
---|---|
예제 (0) | 2023.03.27 |
GET , POST 요청과 필터 (0) | 2023.03.19 |
URL 매핑 및 인코딩 (0) | 2023.03.19 |
웹 서버 프로그램 및 톰캣 설치(+Context) (0) | 2023.03.17 |