티스토리 뷰

Servlet JSP

서블릿 프로그램 만들기

Programmers 2021. 4. 19. 15:29
반응형

Servlet이란?
Server Application Let: 어플리캐이션조각이라고 하며, 수 많은 기능들이 따로 구현되어 있음

예) 사용자가 하나의 list를 요청하면 list라는 서블릿만 실행해서 결과를 보여준다.
사용자가 하나의 reg를 요청하면 reg라는 서블릿만 실행해서 결과를 보여준다.
... 전체 프로그램을 모두 실행시킬 필요가 없다!

보통은 이클립스와 같은 프로그램으로 서블릿 코드를 쉽게 작성하지만 기본을 알기위해서 요로캐 해보자!
서블릿 코드 작성준비물
: Notepad++(메모장), JDK, 톰캣

*참고: WAS란? Web Application Server

먼저 노트패드에 서블릿 코드를 쓰자!
Nana.java

import javax.servlet.*; //javax.servlet을 사용. 컴파일러가 위치를 찾을 수 없기때문에 위치를 직접 지정해주어야 함!
import javax.servlet.http.*;
import java.io.*;

public class Nana extends HttpServlet //실제로 Nana라는 클래스이름은 중요하지 않다. WAS에서는 약속되어있는 인터페이스나 추상클래스명을 참조한다. 
{
	public void service(HttpServletRequest request //WAS에서는 정해져있는 service 함수를 호출한다. HttpServlet내의 함수는 정해져있다.
						, HttpServletResponse response)
						throws IOException, ServletException
	{
		System.out.println("hello Servlet"); //
	}
}

이렇게 만들어진 클래스를 Nana 서블릿이라고 부른다.
주석처리된 부분들을 보고 내용을 참조하면 된다. 일단 직접 손으로 자 타이핑했다. 연습연습!
그리고 사용하는 JSP디렉토리(나의 경우 C:\JSP) 내에 파일을 Nana.java(클래스명과 동일)라고 저장한다.

그리고 컴파일 하기 위해서 cmd창을 뛰어서 해당 JSP디렉토리에서 javac Nana.java를 실행해보자!
*참고: cmd란? 명령프롬프트(윈도우 검색창에 cmd치면된다)
*참고: javac란? java compiler 자바 컴파일러

javac Nana.java 오류

실행하면 아래에처럼 에러가 뜬다. 영어를 cannot find symbol: HttpServletReauest ; 오타다... 수정하면되고~
여기서 중요한건 아래의 import javax.servlet does not exist 이게  뭔말이냐? import할 javax.servlet이 없다는거네
왜냐하면 이건 jdk내에 있는게 아니라서 자바가 찾을 수가 없단다. 그래서 직접 디렉토리를 지정해줘야한다.
말이 어려운데 그냥 컴파일 할 때 이 심볼의 위치를 넣으면 된다.

javac 출력결과

javac라고 쳐주면 명령어들이 주루룩 뜬다. 여기서 우리가 필요하건 class path를 옵션으로 넣어주는거다.
--class-path, -classpath, -cp 뭐든 써도 된다. 일단 보자 어떻게 쓰는지..

자~ 깔끔하게 실행되었다.
javac -cp 디렉토리주소\servlet-api.jar Nana.java 이렇게 치고 다른 오류가 난다면 오타를 체크해봐야한다.
그리고 다시 윈도우에서 JSP폴더에 들어가보면 Nana.java와 함께 Nana.class가 생선된 것을 확인 할 수있다!
여기까지 컴파일 완료~!

자 그러면 이 파일을 여기서 그냥 실행할 수 없다! 그리고 웹안의 디렉토리 아무데서나 실행 할 수있는 것도 아니다.
Nana.class파일을 톰캣에서 사용하기 위해서는 이 경로에 두어야한다.
tomcat디렉토리\webapps\ROOT\WEB-INF\classes
여기서 중요한건 WEB-INF라는 디렉토리가 없으면 만들고, classes라는 디렉토리도 만들어줘야한다.
또 절때 오타가 나면 안된다. 이건 정해진 코 룰? 이다 암튼 룰(Rule)이다. 자 여기다가 Nana.class파일 넣고~~
예) C:\JSP\apache-tomcat-9.0.45\webapps\ROOT\WEB-INF\classes

*참고: WEB-INF라는 폴더는 사용자가 볼수 없다. 절때! 그렇기 때문에 이 디렉토리는 외부에서는 접속이 불가란 말이다.

자 그러면 이 class를 어떻게 사용하는지에 대해서 알아보자!
먼저 C:\JSP\apache-tomcat-9.0.45\webapps\ROOT\WEB-INF내의 web.xml파일에 코드를 삽입해주어야 한다.

<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>na</servlet-name>
	<servlet-class>Nana</servlet-class>
  </servlet>
  
  <servlet-mapping>
	<servlet-name>na</servlet-name>
	<url-pattern>/hello</url-pattern>
  </servlet-mapping>
  
 <!--서블릿 코드 끝-->
 

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

</web-app>

서블릿 코드를 설명하자면
<servlet> 실행할 서블릿 코드
<servlet-mapping>사용자가보는 매핑서블릿코드

순서대로보면
사용자가 /hello 호출 -> servlet-mapping내의 na를 찾고 -> servlet내의 na를 매핑해서 -> servlet내의 servlet-class의 Nana를 받아온다~

결과적으로 사용자가 /hello를 호출하면 Nana를 받아오는거다!

자~ 이제 실행하려면 web.xml을 수정했기때문에 Tomcat을 다시 껏다 실행시켜주자!
자 다시 웹창에 localhost:8080/hello를 치면~

localhost:8080/hello 출력창

이렇게 오류없이 새하얀 화면이 뜬다면 성공!?

Nana.java파일을 다시 확인해보면 

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
	{
		System.out.println("hello Servlet");
	}
}

System.out.println("hello Servlet");이라는 명령어가 있다. 이건 사용자에게 출력하는게 아니라 서버에 출력하는 메세지다.
자~ 서버를 확인해보자!

자~ 맨 아래에 hello Servlet이 보이는가! 성공맞다!
자 그러면 이제 사용자한테 한번 보여주자! 다음강에서~~~

반응형
댓글
공지사항