JSP(자바 서버 페이지) 2日次

JUNICHI・準一·2022년 11월 28일
0

JSP

목록 보기
2/10

JSP 面接 族譜 整理 (2日次)

1. hello.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 때문이다。

2. Servlet에 對하여 說明하시오。

  • 클라이언트 要請을 處理하고 應答하는 Servlet 클래스의 具現規則을 지킨 서버側 Java 프로그래밍技術
  • 소스 코드上에서 HttpServlet을 相續(繼承)받는 클래스를 意味한다。
    = 父母클래스인 HttpServlet의 機能을 全部 使用할 수 있다는 것을 意味한다。
    (javax.servlet.http.HttpServlet은 http프로토콜 서비스를 支援하는 클래스)
    public class HelloWorld extends HttpServlet
  • http프로토콜을 支援하는 라이브러리!
    → Http 프로토콜을 使用者(프로그래머)가 좀 더 쉽게 使用하기 爲한 캡슐化시킨 라이브러리(.class의 集合)이다。

Servlet 페이지의 作成方法

  • 프로젝트生成 : new → project → Dynamic Web Project
  • Servlet 파일 生成 : new → Servlet → Java Package、Class name、Super class를 作成後 next → URL Mapping (edit)、next → doPost、doGet을 確認後 finish
  • 파일內容 作成後 Run As → Run on Server (Alt Shift + X、R) → 서버 確認後 finish

3. web.xml에 對하여 說明하시오。

  • WAS(Web Application Server)가 始作될 때 web.xml을 읽어서 메모리에 올리고 그 設定들을 바탕으로 WAS의 設定을 構成한다。
  • 모든 WAS는 必히 하나의 web.xml 파일을 가져야하고 WAS 디렉토리마다 1個씩만 存在할 수 있다。
  • 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>

4. HTML이란 무엇인가?

  • 웹페이지를 만들기 爲한 言語(웹文書를 記述하는 言語)로 웹브라우저上에서 動作하는 言語이다。
  • Hyper Text Markup Language의 略語
    HT - HyperText文書와 文書가 링크로 連結되어있다。
    M - Markup태그로 이루어져있다。
    (웹文書를 表現하기 爲한 태그들로 構成되어있다。)
    L - Language言語
  • HTML 파일의 擴張子名으로 html 或은 htm을 使用한다。
  • w3c가 html의 國際標準化기구이다。
    https://www.w3.org/
  • 웹의 紀元

5. Get方式과 Post方式에 對하여 說明하시오。

Get方式

Post方式

  • Get方式과 달리 긴 內容(데이터)을 URL에 露出하지 않고 Body領域(HTML의 Body가 아님) 內에 숨겨서 들어간다。
    (保安이 必要한 狀況에 適合)
  • 傳送길이에 制限이 없음
    → 比較的 많은 量의 敏感한 데이터를 傳送해야할 때 使用한다。
    (樣式을 作成한 後 데이터를 傳送하거나 로그인ID、暗號를 傳送할 때)
    → 데이터를 傳送하면서 要請을 하면 다음과 같이 住所로 連結된다。→ http://localhost:8282/servlet_hello/hw

6. 컨텍스트 패스(Context Path)란 무엇인가?

  • WAS(Web Application Server)에서 웹 애플리케이션을 區分하기 爲한 path
  • JSP에서 contacst는 project를 意味 (contacst = project) (他分野에서는 contacst가 全혀 다른 意味로 使用되기 때문에 注意!)

Eclipse에서 프로젝트를 生成하면、自動으로 서버 폴더에 있는 server.xml에 追加된다。(톰캣이 컨택스트로 管理) 그리고 서버를 中斷시키면 內容이 사라진다。서버가 돌아가고 있기 때문에 server.xml에서 아래의 內容이 確認可能한 것!(서버 폴더는 함부로 건들지 말자!)

7. 下段의 客體에 對하여 說明하시오。

HttpServletRequest request, HttpServletResponse response
두 파라미터는 서버가 實行되면 必히 客體가 生成되어 넘어온다。
客體는 WAS(Tomcat)가 生成한다

  • 클라이언트(웹브라우저)가 要請을 하면 應答을 받기 爲해서는 서버는 클라이언트의 住所를 알고 있어야한다。그러기 爲해 웹브라우저는 http protocol에 맞게 數많은 情報를 서버에 傳送한다。
  • 서버는 그 情報를 받아서 가지고있고(Request客體) 應答을 보내기 爲해서 客體로 만들어 貯藏한다。
  • 應答을 보내는 內容을 Response客體에 담는다。
  • 이렇게 만들어진 客體를 프로그래머에게 넘겨 준다。(函數使用)

共通點

  • 둘 다 javax.servlet.http 패키지의 인터페이스이다。
  • ServletRequest 및 ServletResponse 인터페이스에서 派生된다。
  • 두 客體 모두 生成되어 컨테이너 別로 Servlet의 service() 메소드에 暗示的으로 傳達된다。

HttpServletRequest

  • HttpServletRequest의 役割은 使用者名 및 暗號와 같이 웹 클라이언트가 보낸 데이터를 受信하는 것
    → request 情報를 서블릿에게 傳達하기 爲한 目的으로 使用
  • 클라이언트가 서버에 데이터를 要請할 때、要請에 對한 機能과 屬性을 가지고 있는 客體、클라이언트의 IP住所、使用된 프로토콜 클라이언트 等과 같은 他 클라이언트 情報를 檢索하는 많은 getXXX() 메소드가 提供되며 브라우저名과 버전 等과 같은 클라이언트의 브라우저에 對해 알 수 있는 메소드도 包含된다。
  • HTTP 헤더와 HTTP 바디로 構成되어있다。
  • bodydml steam을 읽어들이는 메소드를 가졌다。

HttpServletResponse

  • HttpServletResponse의 役割는 웹 클라이언트에 데이터를 보내는 것
    WAS는 어떤 클라이언트가 要請을 보냈는지 알고 있고、該當 클라이언트에게 應答을 보내기 爲한 HttpServletResponse客體를 生成하여 서블릿에게 傳達
    → 서블릿은 HttpServletResponse에 content type、應答코드、應答메시지 等을 담아서 傳送한다。
  • 서블릿에 屬性을 設定하는 많은 setXXX() 메소드가 提供된다。
  • SerlvetResponse interface (java.servlet.ServletResponse)
  • HttpServletResponse interface (javax.servlet.http.HttpServletResponse)
profile
準一(じゅんいち)の開発学習用Blogです。

0개의 댓글