파게로그

IDE 없이 간단한 Servlet 만들어보기 본문

콤퓨타 왕기초/JSP

IDE 없이 간단한 Servlet 만들어보기

파게 2020. 10. 20. 15:24

Servlet은 기능별로 코드가 나누어져 있고, 필요에 따라 필요한 코드가 선택되어 실행된다. 웹이라는 환경을 통해 프로그램을 실행해야 하기 때문이다.

기본적으로 내가 실행하고자 하는 클래스는 HttpServlet을 상속받아야 하고, service()가 구현되어야 한다.

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

public class Hello extends HttpServlet {
// 모든 Servlet class는 WAS에 의해서 로드되고 실행되고 결과를 돌려주게 되며, 클래스명은 자유롭게 할 수 있다.
    public void service(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
    // main() 함수의 역할. 이 함수의 이름은 바꿀 수 없다.
        System.out.println("Hello, Servlet!");
    }
}

 

1. 소스코드를 Hello.java로 임의의 폴더에 저장한다.

2. cmd에서 cd를 통해 해당 폴더로 이동한다.

3-1. javac Hello.java

3-2. error 발생: cannot find symbol

3-3. servlet 라이브러리는 JDK에 포함되지 않기 때문에, 이를 포함해서 컴파일 해야 한다.

4-1. javac 명령어를 통해 -cp 또는 -classpath의 명령어를 확인할 수 있다.

4-2. servlet 라이브러리의 위치(tomcatRoot/lib/servlet-api.jar) 확인

5-1. javac -cp tomcatRoot/lib/servlet-api.jar Hello.java

5-2. 성공적으로 컴파일되어 Hello.class 생성

6-1. .class 파일은 예약된 위치가 있다.

/WEB-INF/classes/Hello.class

6-2. 서블릿 클래스를 만들 때 패키지가 있었다면, 패키지명대로 폴더 깊이를 가져가야 한다.

6-3. WEB-INF 내 자료들은 클라이언트가 요청하거나 보아서는 안 된다. 사용자가 요청한 URL과 mapping된 Servlet 코드를 찾아서 실행한다.

7-1. WEB-INF/web.xml에 <servlet><servlet-mapping>을 추가해준다.

svname: servlet name

servlet-class: servlet class name(패키지명이 있으면 com.ddoongi.~~~)

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                      http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
  version="4.0"
  metadata-complete="true">

  <servlet>
    <servlet-name>svname</servlet-name>
    <servlet-class>Test1</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>svname</servlet-name>
    <url-pattern>/hello</url-pattern>
  </servlet-mapping>

  <display-name>Welcome to Tomcat</display-name>
  <description>
     Welcome to Tomcat
  </description>

</web-app>

7-2. servlet-class에 패키지명이 있다면 Hello.com.lec 이런 식으로 패키지명도 다 써줘야한다.

8. localhost:8080/svname에 접속하면, Hello.class가 실행된다(Tomcat console에서 확인).

(웹서버는 svname이라는 파일을 먼저 찾아보고, 없으면 요청을 WAS에 넘김. WAS는 mapping정보를 보고 그에 맞는 servlet code를 실행한다.)

9. 클라이언트에게 출력은? response를 이용한다. 일단 여기까지!

'콤퓨타 왕기초 > JSP' 카테고리의 다른 글

REST API 설계  (0) 2020.11.23
(IDE 없이) 클라이언트에게 출력  (0) 2020.10.20
Context site  (0) 2020.10.20
Tomcat 9  (0) 2020.10.19
Web Server, Web Server Application의 개념  (0) 2020.10.19
Comments