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의 소스코드를 실행 시킨다는 것을 의미한다.
-
컴퓨터의 IP를 찾아 들어간다. (여기서는 localhost)
-
Tomcat이(웹 애플리케이션 서버)가 관리하는 프로그램 번호 8282를 찾아가서 jsp_hello패키지의 hello.jsp 파일을 찾음
-
hello.jsp 파일을 hello_jsp.java 파일로 변환한 후 컴파일하여 hello_jsp.class 파일을 생성한다.
-
.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> 나오기 직전에 삽입-->
'IT 면접족보 > 자바 면접족보' 카테고리의 다른 글
자바 수업 정리 -선택자, 시멘틱, servlet(26 일차) (0) | 2020.12.30 |
---|---|
자바 수업 정리 -HTML | doGet(),doPost(),Context Path(25 일차) (0) | 2020.12.30 |
자바 수업 정리 -컬렉션 클래스- TreeSet<E>,Queue<E>&Stack,Map<K, V>,정렬,찾기(23 일차) (1) | 2020.12.24 |
자바 수업 정리 -컬렉션 클래스- ArrayListE&LinkedListE, SetE&HashSetE(21 일차) (1) | 2020.12.23 |
자바 수업 정리 - Generic class & method, Collections Framework(20 일차) (0) | 2020.12.23 |