Dev/JSP&Servlet

3-1. Servlet 클래스 작성과 컴파일

zapi 2023. 8. 17. 23:33

코딩주의지만 이번 파트는 이론 필요한 거 같아서 최소한의 서론으로 구성하고 이외의 부분은 코딩하면서 노트하겠음 

* 서블릿(servlet) : 서블릿 클래스로부터 만들어진 객체

* 서블릿 클래스  서블릿 객체   서블릿

* 인스턴스화 : 클래스를 객체화 하는 것

 

* 서블릿 클래스 작성 규칙 3가지
① 서블릿 클래스는 javax.servlet.http.HttpServlet 클래스를 상속하도록 만들어야 한다.
 doGet 혹은 doPost 메소드 안에 웹 브라우저로부터 요청이 왔을 때 해야할 일을 기술하여야 한다.
③ HTML 문서는 doGet/doPost 메소드의 두 번째 파라미터를 이용해서 출력하여야 한다.

 

이제 본격적으로 서블릿 클래스를 작성해보자!^! // 개인적으로 조금 어려웠음

 

1. 메모장에 아래에 소스를 넣자.

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

public class HundredServlet extends HttpServlet {
	public void doGet(HttpServletRequest request, HttpServletResponse response)
		throws ServletException, IOException{
	int total = 0;
	for (int cnt = 1; cnt < 101; cnt++)
		total += cnt;
	PrintWriter out = response.getWriter();
	out.println("<HTML>");
	out.println("<HEAD><TITLE>Hundred Servlet</TITLE></HEAD>");
	out.println("<BODY>");
	out.printf("1 + 2 + 3 + ... + 100 = %d ", total);
	out.println("</BODY>");
	out.println("</HTML>");
	}
}

설명 드감 // 이론 읽고 오셈 '^'7 참고로 위에 프로그램은 1부터 100까지합

 

1.) 서블릿 클래스 작성 규칙 ①이 extends HttpServlet 하는 것임
HttpServlet 클래스를 갖고오기 위해 javax.servlet.http.*를 import 해주능거임!
// HttpServlet 클래스는 톰캣에서 서비스 해주는거임

 

public으로 선언 : 웹 컨테이너가 웹 브라우저로부터 요청을 받아서 메소드를 호출할 때 필요하기 때문!

2.) 서블릿 클래스 작성 규칙 ②는  클래스 안에 doGet메소드 선언하고 처리할 내용들 입력하기!!
// throws는 예외처리

3.) 서블릿 클래스 작성 규칙 ③은 doGet메소드의 두번째 파라미터 값을 이용하여 출력
위에 코드를 참고하면 두번째 인자값인 HttpServletResponse형 response를 이용하여 출력한다. 
Printwriter out = response.getWriter();
위에 식처럼 Printwriter 객체를 통해 out변수를 이용하여 웹브라우저로 데이터를 출력하도록 함
 // PrintWriter를 이용하기 위해 java.io.* 을 import!

2. 이제 저장할건데
1.) 파일명은 안에 선언한 클래스의 이름과 같아야한다.
2.) 어디다 할거냐면 C:에 바로 servlet파일 만들고 .java확장자로 저장할거임 :3

 

3. 이제 컴파일★ 할꺼임
컴파일은 cmd 명령프롬프트 창에서 실행할꺼 ☆

 

1.) cmd창 에서 현재있는 디렉토리보다 상위 디렉토리로 가기위한 명령어로 cd.. 를 입력

 

 

보임? 지금 저렇게 상위 디렉으로 가게됨  // C:로 가기위해서!


2.) cd servlet 명령어로 servlet 디렉토리로 이동
아까 C: 안에 servlet폴더 만든 곳으로 이동!
거기다가 .java 파일을 저장했으니까 당연!


3.) javac HundredServlet.java 명령어 실행
javac는 서블릿클래스를 컴파일하기위한 명령어임
이거 해보면 안됨 아마 javax.servlet.http 패키지가 없다거나 밑에 다라라랗 하고 뭐가 뜸. 왜냐면 import한 javax.sevlet이랑 javax.servlet.http 패키지가 JDK 라이브러리 안에 없어서 그럼
// 운영체제가 그 위치를 모르기 때문!

서블릿 클래스를 컴파일하고 싶다면
-cp 옵션으로 두 패키지가 속하는 라이브러리 경로를 같이 입력해주어야함

Must Know
 javax.servlet과 javax.servlet.http 패키지가 있는 곳은 servlet-api.jar 이다.
 servlet-api.jar톰캣 디렉토리 안에 lib파일 안에 있음

> javac -cp "servlet-api.jar가 포함되있는 경로" 컴파일하고자하는파일.java
위에 코드처럼 코맨드 해주면됨! 근데 이제 다른 문법오류 등이 있거나 하면 당연히 컴파일이 안 되니  나오는 오류정보를 잘 읽고 수정하기!

근데 위에 처럼 명령어를 주는 방법도 있지만 매번 이거 경로치는 거 쉬운일 아닌거 다들 알거다.
다른 방법으로는 servelt-api.jar파일JDK 디렉토리 안에 jre/lib/ext 서브디렉터리로 복붙 ㄱㄱ
그러면 위에 처럼 -cp 옵션과 경로명 입력을 해줄  필요가  없다. 


그냥 아무것도 안 뜨고 다음 명령어를 기다리는 라인이 뜬다면 성☆공!
다음에는 컴파일해서 생성된 .class파일을 설치하고 등록할꼬임 그럼 이만 ^ㅠ^/