07. 처음으로 서블릿 프로그램 만들어보기

강철의사나이·2021년 12월 27일
0

Servlet은 서버 어플리케이션을 만드는 것이다.
서버 어플리케이션은 기능별로 코드가 나눠져 있고
필요에 따라 기능별로 코드가 선택적으로 실행될 수 있다.
웹이라는 환경을 통해서 프로그램을 실행하기에 그렇다.

사용자가 list를 요청하면 list라는 servlet만 실행하고
reg를 요청하면 reg만 실행한다.
그전까지는 로드되지 않는다.
수많은 조각이 있고 기능이 있는데 요청에 따라 실행된다.

효율성을 위해 웹이라는 환경에서 사용되는 서버프로그램이다보니 필요에 로드될 수 있도록 조각나 있다.
= Servlet

서버어플리케이션이라고 모든 것을 한 번에 다 개발할 필요없고 필요한 것을 하나씩 만들면 된다.

어떻게 만들 것인가?

지금까지 다룬 자바어플리케이션은 메인함수(main())를 시작으로 프로그램을 만들었지만
이제부터는 서비스(service())라는 함수로 프로그램을 만든다.
나머지는 다 똑같다.
자바 콘솔 어플리케이션과 거의 흡사하다.
출력과 입력을 받기 위한 부분만 추가된다.

클래스를 만든 후에 콘솔 어플리케이션을 만든 후에 출력을해도 여러가지를 해도 되지만
void 다음에 오는 함수가 메인이 아니다.
클래스 이름을 어떻게 할 것인가가 문제다.

우리가 만드는 servlet 클래스들은 모두 로드가 된다.
was에 의해서 로드가 되고 실행이 되고 결과를 돌려준다.

was는 클래스 이름에 관심이 없다.
클래스 이름을 다 알 수 없기 때문에
중요한 것은 약속된 인터페이스명, 추상클래스명을 사용할텐데 extends인 것을 보니 추상 클래스이다.

추상 클래스의 자료 형식으로 얘가 servlet을 참조함.
추상 클래스를 통해서 호출하는 함수는 정해져 있는 service 함수이다.

클래스명은 원하는대로 아무렇게나 쓰면 되고
NaNa라고 명명한다.

그다음 void다음 service는 반드시 HttpSevlet을 통해서
구현되게 되어있는 약속된 이름이므로 service를 사용할 것이다.

이렇게 만들어진 클래스를 Nana servlet이라고 한다.
상속받는 모든 구현 클래스들은 전부 servlet클래스이므로
Nana servlet이라고 한다.

컴파일하고, 사용자 요청을 하면 실행할 수 있게끔 환경도 구성해야 한다.
메모장으로 옮겨서 컴파일까지 해보자.
이클립스로도 편하게 할 수는 있지만
맨땅에 메모장으로 처음이자 마지막으로
메모장-JDK-Tomcat이라는 도구를 통해서 맨땅으로 해본다.]

메모장에 을 적고 번역을 해야 한다.
즉, 컴파일을 해야 한다.

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

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

클래스 명과 동일한 이름으로 대소문자도 구분해서 파일을 저장해야 한다.

앞으로 만들 코드들을 관리하기 위해서라도
D드라이브에 jsp폴더를 만들고 Nana.java로 저장한다.

이제 콘솔창에서 컴파일을 해보자

javac Nana.java를 실행하면 오류가 발생한다.

cannot find symbol
HttpServlet

Servlet이라는 라이브러리를 이해할 수 없다.
그 밑에 HttpServletRequest request도 보면
Servlet 라이브러리에서 오류가 발생한다.

Nana.java를 코딩할 때
기본적인 것들은 java가 제공하는 JDK라이브러리지만
serlvet 라이브러리는 JDK에 포함되지 않는 라이브러리이다.

따라서 얘를 사용할 때 serlvet가 존재하는 라이브러리를 지정해서 컴파일 해야 한다.

컴파일할 때도 옵션이 있다.
cmd에 javac를 입력하면 사용방법이 잘못 됐기 때문에 사용방법을 알려준다.

옵션이라는 것이 있고, 컴파일은 소스파일을 얘기한다.

그 밑으로 옵션이 굉장히 많지만 그 중에서 class-path에 주목하자.
세개 전부 똑같으므로 가장 간편한 -cp< path >을 사용하는데
(path는 붙여 쓴다.)
path에 클래스 또는 라이브러리가 존재하는 경로를 지정해야
source files에서 소스코드를 컴파일 하다가 관련 라이브러리를 찾는데 문제가 없다.

그래서 우리가 cp라는 옵션을 줘서 servelt 라이브러리를 이용하고자 한다.

그렇다면 servlet 라이브러리는 어디에 있을까?

우선 톰캣을 설치한 폴더로 가서 lib 폴더로 들어가서
위치를 복사한다.

다음 cmd를 실행한 뒤 javac입력, 오른쪽 클릭을 하면 복사한 주소를 붙여넣기 할 수 있다.

다음 역슬래쉬 \ 한 뒤 servlet-api 파일명도 복사해서 붙여 넣는다.

C:\a01_javaexp\apache-tomcat-9.0.46\lib\servlet-api

그러면 이제 컴파일 할 수 있는 환경이 됐다.
하지만 이 경로를 그대로 cmd에 넣어서 실행하면 오류가 난다.

이 경로를 그대로 사용하는 것이 아닌 경로 앞에 cp옵션을 사용해서 이 경로가 라이브러리 폴더라는 것을 알려야 한다.
그리고 JAR 뒤에 띄어쓰기 한 번 한 후 Nana.java를 입력해준다.

오류 메세지가 뜨지 않으면 컴파일을 성공한 것이고,

javac -cp C:\a01_javaexp\apache-tomcat-9.0.46\lib\servlet-api.jar Nana.java


Nana.class를 확인할 수 있다.

0개의 댓글