IT 면접족보/자바 면접족보

자바 수업 정리 -웹 프로그램의 동작,Tomcat, JSP와 Servlet문서 작성(24 일차)

낙산암 2020. 12. 28. 16:59

1. 아래의 용어에 대하여 설명하시오.

Web Server (= HTTP Server)

  • 클라이언트(browser)의 요청(request)에 의해 정보를 제공(response)해 주는 서버

  • HTTP 프로토콜을 사용해 클라이언트와 통신한다. (HTTP는 클라이언트-웹서버간 문서를 전송하기 위한 통신 규약)

  • 정적인 정보를 처리하며(Static processe), 동적 처리(Dynamic processe)는 웹 어플리케이션 서버(WAS)에 요청한다.

  • 대표적으로는 Aphach HTTP Server, Microsoft IIS, Nginx 가 있다.

     

WAS (Web Application Server)

  • WAS = Web Server + Web Container

    → 일반적으로 웹 서버의 기능을 내제하고 있어 웹 서버 없이도 서비스가 가능하다.

  • 웹 서버에서 처리할 수 없는 동적인 정보를 처리하여(Dynamic processes) 웹 서버에 정적인 정보를 제공한다.

    → 웹 서버의 성능을 개선하기 위해 기능을 분리한 것

  • JSP프로그램을 실행시키고 결과를 웹 서버에 전달한다. (JSP 페이지를 .java 파일로 변환하고 컴파일 해서 .class 파일을 생성한 후 Html로 응답)

    → 모든 클라이언트의 요청에 대해 매번 프로세스를 생성하지 않고 하나의 자바 가상 기계 내에서 수행한다.

  • 대표적으로 가장 많이 사용되는 프로그램은 Aphach의 Tomcat(오픈 소스)tmaxsoft(국내 기업, 상용)의 JEUS이다. (국내에서는 JEUS를 많이 사용한다.) 그 외에 IBM WEbsphere Application Server, Red Hat JBoss 등이 있다.

     

JSP(Java Server Page)

  • 서블릿을 서버 측 스크립트로 구성한 언어 (스크립트 언어)
  • HTML파일 내에 Java언어가 삽입된 문서이다. (Java 언어의 특성을 활용)
  • 웹 어플리케이션 서버가 자동으로 JSP프로그램을 실행, .java 파일로 변환하고 컴파일 해서 .class 파일을 생성한다.
  • J2EE(자바 엔터프라이즈 버전) 를 구성하는 기술 중의 하나이다. (웹 프로그래밍을 하려면 좀 더 많은 라이브러리 제공 해야 한다. 통신 규약들, 인터넷 프로토콜관련된 것들을 우리가 직접 전부 구현 할 수 없어서 전부 캡슐화 시켜서 기본적인 통신으로 할 수있도록 라이브러리로 제공한다.)
  • JSP 기술은 플랫폼에 독립적이며 오픈 소스 형태로 운영되어 다양한 기술 표준을 가진다.(많은 개발 프레임 워크가 존재한다.)

Port Number (**포트 번호)

Port 번호는 찾아간 IP주소에서 실행 하려는 프로그램 번호

데이터를 받을 프로세스(process)가 어떤 것인지 알기 위해 사용하는 식별자

= 웹 애플리케이션 서버가 관리하는 경로

 

2. 프로토콜(Protocol)이란 무엇이며,프로토콜의 종류는?

  • 네트워크상에서 컴퓨터와 컴퓨터, 통신 장비들이 통신하기 위해 약속한 통신 규약으로 각각의 목적에 맞는 통신을 위한 약속들을 말한다.

통신을 원하는 두 개체 간에 무엇을, 어떻게, 언제 통신할 것인가에 대해 미리 정의된 상호간의 약속이다.

프로토콜의 종류

  • Http(Hyper Text Transfer Protocol): 인터넷에서 하이퍼 텍스트 문서를 교환하기 위해 사용되는 프로토콜
  • FTP(File Transfer Protocol): 컴퓨터 사이의 원활한 파일 전송을 위해 사용되는 프로토콜
  • SMTP(Simple Mail Transfer Protocol): 사용자의 컴퓨터에서 작성된 메일을 받아서 다른 사람의 계정이 있는 곳으로 전송해주는 전자 우편 송신 프로토콜
  • POP(Post Office Protocol): 전송받은 메일을 저장하고 있다가 사용자가 메일 서버에 접속하면 이를 보내주는 역할을 하는 전자 우편 수신 프로토콜
  • DHCP(Dynamic Host Configuration Protocol): 클라이언트가 동적인 IP주소를 할당받아 인터넷을 사용할 수 있게 해주는 프로토콜, 고유한 IP주소를 가져야 다른 네트워크나 인터넷에 접속할 수 있는데 DHCP는 고유한 IP주소 없이 접속할 때 자동으로 새로운 IP주소를 할당해준다.

3. *.jsp 가 컴파일 되는 과정에 대하여 설명하시오.

http://localhost:8282/jsp_hello/hello.jsp 가 실행되는 과정으로 설명을 하면

먼저 이것을 구동 시킨다는 의미는 hello.jsp의 소스코드를 실행 시킨다는 것을 의미한다.

  1. 컴퓨터의 IP를 찾아 들어간다. (여기서는 localhost)

  2. Tomcat이(웹 애플리케이션 서버)가 관리하는 프로그램 번호 8282를 찾아가서 jsp_hello패키지의 hello.jsp 파일을 찾음

  3. hello.jsp 파일을 hello_jsp.java 파일로 변환한 후 컴파일하여 hello_jsp.class 파일을 생성한다.

  4. .class 파일을 전달한다.

    크롬 개발자 도구에서 실행된 내용을 살펴보면 html 부분만 보이는데 이것은 Servlet 때문이다.

4. Servlet에 대하여 설명하시오.

  • 클라이언트 요청을 처리하고 응답하는 Servlet 클래스의 구현 규칙을 지킨 서버측 자바 프로그래밍 기술

  • 소스 코드상에서 HttpServlet을 상속받는 클래스를 말한다.

    = 부모 클래스인 HttpServlet의 기능을 모두 사용할 수 있다는 것을 의미함

    (javax.servlet.http.HttpServlet 는 http프로토콜 서비스를 지원하는 클래스)

    public class HelloWorld **extends HttpServlet**
  • http프로토콜을 지원하는 라이브러리!

    → Http 프로토콜을 사용자(프로그래머)가 좀 더 쉽게 사용하기 위한 캡슐화 시킨 라이브러리(.class 의 집합)이다.

  • 서블릿을 관리해주는 것이 바로 Servlet contatiner! → Tomcat!

servlet 페이지 작성 방법

  • project 생성: new → project → Dynamic Web Project

  • servlet파일 생성: new → servlet → Java Package, Class name, Superclass 작성 후 next

    → url Mapping (edit), next → doPost, doGet 확인 후 finish

  • 파일 내용 작성 후 Run As → Run on Server (alt shift + X, R) → 서버 확인 후 finish

5. web.xml에 대하여 설명하시오.

  • WAS가 시작될 때 web.xml을 읽어서 메모리에 올라가고 그 설정들을 바탕으로 WAS의 설정을 구성한다.
  • 모든 WAS는 반드시 하나의 web.xml파일을 가져야 하고 WAS 디렉토리마다 하나씩만 존재할 수 있다.
  • WEB-INF 폴더에 존재한다.
<servlet>  서블릿 객체 설정
	<servlet-name>  객체의 이름    </servlet-name>
	<servlet-class>  객체를 생성할 클래스    </servlet-class>
</servlet>

<servlet-mapping>
	<servlet-name> 이름 </servlet-name> 일할 서블릿 객체의 이름
	<url-pattern> 패턴 </url-pattern> 클라이언트가 요청할 url 패턴
</servlet-mapping>
<servlet>
		<servlet-name>hello</servlet-name> 
		<servlet-class>edu.bit.ex.HelloWorld</servlet-class> 
										<!-- 서블렛이름 : 변수명
												edu.bit.ex.HelloWorld hello = new HelloWorld() 
							          url이 아래 /hw치고 들어오면 객체 hello를 띄워라
												패키지-클래스명 그대로 대소문자 구분됨 확인 -->
	</servlet>
	
	<!-- 여기부터 웹프로그래밍 패러다임 들어감(자바 패러다임아니고 프로토콜에 통신에 대한 패러다임)
	url 치고 들어가면 위에 객체를 띄워 주겠다. 왜 그렇게해줌? 내가 그렇게 설정했으니까. 
	그런데 이제 그것도 귀찮으니까 annotation이 자바 1.5버전 이후 제공되기 시작했다. 
	@WebServlet("/HWorld”) 이제 web.xml에 맵핑하는 코드를 안써도 저 한줄만 쓰면 되게끔 바뀐거다.
	이후 프로그램 패러다임이 바뀌었다!! -->

	<servlet-mapping>
		<servlet-name>hello</servlet-name> 
		<url-pattern>/hw</url-pattern>     <!-- 이 주소 치고들어가면 띄우겠다.-->
	</servlet-mapping>

</web-app>      <!-- 코드 마지막에 </web-app> 나오기 직전에 삽입-->