scone-lemon

[BE 과목평가 대비] WebArchi(MVC) Servlet/JSP : Servlet 본문

ETC./싸피 이모저모 (2021~2022)

[BE 과목평가 대비] WebArchi(MVC) Servlet/JSP : Servlet

lemon-scone 2021. 10. 10. 15:48

1. Web Architecture

 

Client - Web Server - Application Server - Database

Web Server + Application Seve = WAS (= Tomcat)

 

Client

- data 발생 (markup language, css, js ...)

- request 발생 (with data)

 

Web Server

- http server

- transfer data

 

Application Server

- Web Server 와 Database 를 연결

- Presentation using html

- Business Logic = DB 이외의 일처리

- Persistance Logic = DB 일처리

 

Server - Database (connect using JDBC)

 

WAS의 역할 : WEB에서 java를 돌릴 수 있다

Presentation : 일처리 (Logic)의 결과 ex. html, css, csv, json...

 

Process : 

1) Client가 Data 발생

2) Client가 Server에게 Data를 가지고 request

3) Server가 Data를 받아서 일처리(Logic)

4) Server가 Client에게 일처리 결과를 가지고 response

 

2. Context Root, URL mappings

 

http://localhost:8080/hs/hi/

hs = Project name

hi = Servlet name

 

helloservlet 구조

- src : file.java

- Web Content : file.jsp, file.html ...

 

3. HttpServlet

 

Public class Test implements Servlet {  } : 

프로그램 작성 시 불필요한 메소드까지도 정의해야 하는 불편함 발생

Public class Test extends GenericServlet {   } : 

Post와 Get방식을 이용해서 데이터를 가져올 때 조건문을 만들어 주어야 하는데,

Server를 Client가 호출할 때마다 계속 조건문이 도는 비효율성 발생

public class Test extends HttpServlet {   } : 

HttpServlet이 의미상의 추상클래스 (메소드가 추상클래스가 아니고 구현을 강요당하는 느낌만 전달하는 클래스(?))

필요한 메소드들만 Override 하면 됨 (ex. doGet, doPost ...)

 

4. Post vs Get (Page 이동 시)

 

url 입력 (get)

link 이용 (get)

from (get)

form (post)

 

get : 간단한 데이터 빠르게 전송

post : 주로 데이터 양이 많을 때, 아이디, 패스워드가 url 뒤에 노출되면 안될 때

 

5. Servlet Coding

 

출력?

html 이용

PrintWriter out = response.getwriter();

out.print("html 문법이 들어가는 자리");

 

한글깨짐?

response.setContentType("text/html;charset=utf-8");

 

Servlet Coding 순서 및 구조

1) data get

2) 1)의 data를 이용하여 logic 처리 (BL, DBL)

3) 2)의 결과에 따른 response page

 

여러 Client들에 대한 Thread 처리는 WAS가 알아서!

 

6. Servlet vs JSP

 

Servlet : html in java

JSP : java in html

 

7. Servlet Life Cycle

 

init() : 

서블릿이 메모리에 로드될 때 한번만 호출

(코드 수정이 이루어져서 메모리에 다시 로드되면 다시 호출)

 

destroy() : 

서블릿이 메모리에서 해제되면 호출

(코드가 수정되면 호출)

 

doGet(), doPost() : 

GET, POST 방식으로 data 전송시 호출

 

service() : 

모든 요청은 service()를 통해서 doXXX() 메소드로 이동

 

* URL, QueryString, Parameter ?

 

http://www.ssafy.com/good.jsp?parm1=val1&parm2=val2 

 

    URL

   Parameter name

   Parameter vlaue

? QueryString Begin

& QueryString Seperator