문서가 고정되어있지않고 달라져야한다면 ?

요구되는 시점에 문서를 만들어야하는 경우가 생긴다.

동적인문서가 서버쪽에있다가 클라이언트쪽으로 갈것이다.

웹서버 톰캣이 사용자요청을 받는다.

 

톰캣이 정적인 static문서(홈디렉토리에있는 문서)와 동적인 dynamic문서(프로그램)를 받는다.

톰캣이 로드할 수 있는 컨테이너가있고, 프로그램을 실행하게한다. 실행환경 WAS(web application server)

톰캣은 웹서버보다 WAS의 기능이 중요하다.

아파치웹서버는 확장성을 가지고있어서 PHP,닷넷등 다양한 애플리케이션을 묶어서 구현할때 유용

자바만으로 개발할때는 톰캣으로 충분

홈디렉토리는 정적인문서를 서비스하기위해 웹서버가 갖게되는 디렉토리

WAS가 사용하게될 동적인 문서를 만들 서브프로그램 만들기

이클립스로 만들 수 있지만, 메모장으로도 가능하다.

메모장작성->WAS가 함수호출, 객체를 참조

(WAS : 어플리케이션이 동작할 수 있도록 도와줌)

 

사용자에게 돌려주는 내용은 없지만 사용자가 요청을하면 톰캣이 로드를해서 실행해줄 수 있다는것을 검증해보자

사용자요청이오면 서버쪽 콘솔에 "hello Servlet"이 뜨게된다.

톰캣이 내것은 실행 해 줄 수있느냐가 중요->사용자에게 출력하는 방법 배울예정

클래스명은 자유롭게 만들 수있다. Nana

톰캣이 Nana클래스를 실행 해 줄 수있다.

실행할 수있는 요건

1. 내가 만든 클래스를 참조할 수 있어야한다

2. 톰캣과 내가만든 클래스를 이어주는 참조형이 있어야한다(HttpServlet)

->톰캣은 약속되어있는 함수를 호출한다.

함수(서비스)를 우리는 구현하지않아도 된다. 서비스함수를 재정의해서 함수실행을 확인할것이다.

 

서블렛안에있는 클래스들을 임포트 서블렛안의 자손(http)는 따로 써줘야한다.

메모장으로 java파일을 만들고 저장 후 cmd창에서 컴파일을 한다. javac Nana.java

메모장 작성 Nana.java

다음과 같은 에러가 나타난다. 심볼이없다.

자바가 가진 라이브러리 안에서 HttpServlet을 찾을 수 없기 때문이다.

 servlet-api.jar라이브러리가 필요하다

1. 이 라이브러리를 자바파일이 있는곳에 두던지

2. 자바파일의 디렉토리를 지정해야한다.

자바컴파일러는 외부라이브러리를 추가할 수 있는 설정이있다.

라이브러리 디렉토리를 넣고 컴파일했으나 동일 오류 발생

같은 오류가 발생했다. 톰캣의 10버전의 문제였다. 톰캣9을 다시 받는다.

9버전의 경로를 복사하고 9버전에있는 servlet-api.jar로 경로를 바꾸고 컴파일한다. 

dir로 class파일 생성여부를 확인한다.

Nana.class 컴파일된 코드를 실행할때는 일반적인 콘솔어플리케이션처럼 실행하지않고 웹어플리케이션이니까 톰캣에 의해서 실행되게해야한다. 

클라이언트가 브라우저창에 url로 이름을 명령 ->서버쪽에서는 요구를 인식하고 실행하게해준다.

패키지명을 추가하고 다시번역해준다.

일반적인 정적인 문서의 경우 ROOT에 넣으면된다. 프로그램파일은 web-inf에 넣어야한다.

web-int \ classes \ com \ newlecture\ web 프로그램배포하는작업

내가직접실행하는게아니라 원격의 사용자가 실행을 요청(url주소를통해)

만들고 배포라는작업

톰캣한테 내가만든클래스 객체화되도록요청해야한다

xml 파일을 비주얼스투디오로 연다.

 

경로이름은 아무거나 저장가능 /aa/bb/cc/min으로 하면 하나의 이름이지, 경로가 아니다. 

사용자가 url로 요청하면 na라는 변수를 가진 servlet을 실행시킨다. 

사용자는 /min이라는 이름으로 요청하고 서버는 na라는 이름의 서블렛클래스를 실행한다 

실제로 /min이라는 파일이있지않다. 요청을 받는 웹서버는 /min파일을 찾아보고 없으면 WAS에게 넘기면

맵핑정보를 찾아서 /min에 해당하는 서블릿코드를 실행한다.

  • <servlet-class>패키지명+클래스이름
  • 첫번째 <servlet> 메모리에 올림
  • 두번째 <servlet-mapping> url매핑 :na라는 이름을 갖는 서블릿을 /min이라는 요청이오면 실행

 

브라우저에 설정한 /min을 넣으면 cmd창에 hello Servlet이 뜬다.

사용자가 url로 요청시 서버 cmd에 hello Servlet이 뜬다.

web.xml 이란 ?

  • Web Application의 Deployment Descriptor(환경파일 : 배포서술자, DD파일)로서 XML 형식의 파일
  • 모든 Web application은 반드시 하나의 web.xm l파일을 가져야 함
  • 위치 : WEB-INF 폴더 아래

서블릿설정

<servlet> : 서블릿 객체 설정

<servlet-name> : 객체의 이름 </servlet-name>

<servlet-class> : 객체를 생성할 클래스 </servlet-class>

</servlet>

+ Recent posts