Notice
Recent Posts
Recent Comments
Link
«   2026/06   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
Tags more
Archives
Today
Total
관리 메뉴

개발공부 일지

학원수업_38day [HTML,CSS,JSP,Servlet(5day) - web ] 본문

학원수업/Web(HMTL,CSS,JSP,Servlet)

학원수업_38day [HTML,CSS,JSP,Servlet(5day) - web ]

짜몽- 2022. 9. 23. 18:32

*전날 복습*

웹컨테이너역할 : java class

 

Web Container ex) 지하철, 버스 로 이동 

 

jsp -> 템플릿엔진


순서

1. Servlet (웹,서버에서 작동하는 자바프로그램) , JSP(템플릿엔진,서버상에서 웹페이지를 잘 만들수 있도록 하는 기술) 는

Server-side 로, 실행되어 HTML, css ,Java script로 이루어진 웹 document 를 만드는 일을 한다. 

 

2. HTML, css ,Java script 는 client-side 로, 클라이언트 브라우저에서 해석을 하여 browser 로 보낸다

 

3. 최종 브라우저에서 보여진다.

 

browser <=  HTML, css ,Java script(outstream) <= Servlet , jsp 

 

Server-sice (Servlet JSP?) : HTML, CSS, Java script 로 이루어진 웹 document 를 만드는 일을 한다.

Client-side ( HTML , CSS , Java Script ) : 클라이언트 브라우저에서 해석을 하여 브라우저로 보낸다

 


 

거의 대체적으로 ATTP / ftp / smtp

바로 attp 로 가지않고 이렇게 설계된이유

파일운송 프로토콜, 메일 프로토콜 같은것도 지원해야 하니까 attp Servlet을 다시 만든 것

 

Servlet 은 왜 interface 구조로 갖고있는가?

=> 다형성을 위해.

이런 계층구조를 취한다는것

Hello jsp -> 웹컨테이너에 올라가면

다양한 WAS제품군들이 있음 -> 제품군 : apache tocat , j boss, web lgic... )=> 구현체

-> 목적은 ? ---------> Servlet API 를 위해서이다.

범용적으로 쓸수있다.

전체적으론 껍데기라 볼수있다.

 

다양한 구현체들이 implements 를 하고있다

 

인터페이스 

장점 : 생산성(개발자들이 어떤걸 써도 되기에)이 높아진다.

          데이터베이스가 바껴도 손을 댈 필요가없어 유지보수가 좋아진다.

 

java web application 과 : apache tocat , j boss, web lgic 로 인해 rose capilng 결합도를 낮춰준다.


**html form 과 Servlet 연동**

 

HMTL Servlet or JSP
XML Annotation


Action :

 처리할 서버 프로그램 url web.xml 또는 @WebServlest(url-pattern)에 지정

 

Method : http request method (get 과 post )

- doGet(request,response)  

: 정보 조회용,  url 상에 전달하는 정보가 노출(url 상에 데이터 전송) , 전송 데이터 용량에 제한

 

- doPost(request,response)

: 정보 전송용 , url 상에 정보가 노출되지 않음 , 전송 데이터 용량에 제한이 없음 
     별도의 한글처리가 필요 (http request body 영역으로 데이터 전송) 
    (ex - 로그인시 , 파일 업로드시에는 post 방식을 이용해야 함 ) 


Post 방식일 경우에는 request.serCharacterEncoding("utf-8");

//(어떤요청방식으로 할것인가? 생각하면서 method 쓰기)

  !!!!!!!!!아래에 작성되있는 원리는 무조건 이해하고 넘어가야함 !!!!!!!!!

<form action="url-pattern" method="method="get or post"> <!-- ==> String data=request.getParameter("food");// food 는 name -->
 	 	<input type="text" name="food">
 	 	<button type="submit">전송</button>
 	</form>
<form method="get" action="CheckboxMenuServlet" onsubmit="checkMenu(event)">
<input type="text" name="customerName" placeholder="주문자명" required="required"><br>
<input type="checkbox" name="menu" value="쌀국수">쌀국수<br>
<input type="checkbox" name="menu" value="짜장면">짜장면<br>
<input type="checkbox" name="menu" value="콩나물국밥">콩나물국밥<br>
<button type="submit">주문</button>
</form>

 

URL 로 표현한다면?

http://127.0.0.1:8888/webstudy7/url-pattern?food=김밥&count=5 



**Servlet 기본 개념 **

HTTP : HyperText Transfer Protocol 웹 통신 규약 


HTTPS : HTTP Secure -> 보안  http protocol 의 보안 , 암호화된 버전

Web Server : HTTP 에 의거해 (HTML(html,css,javascript)*문서를 서비스 하는 서버)
웹 브라우저 클라이언트에 *정적인* 컨텐트를 서비스하는 서버 

 

Web Container : java web 기술인 Servlet 과 JSP 가 실행되는 환경 제공 

Web Application Server (WAS) : Web Sever + Web Container
 데이터베이스 서버 및 타 서버와 연동 
 다양한 비즈니스 로직을 처리하여  *동적인* 컨텐트를 클라이언트에게 제공하는 웹 어플리케이션 서버 
 



- 서블릿 계층구조 ( Servlet Hierarchy )


최상위 인터페이스
<<interface>>
Servlet 주요 LifeCycle 메서드 init() -> service() -> destroy()


<<abstract class>>
GenericServlet : Servlet Interface를 구현 (implements)하는 abstract class
   프로토콜에 독립적인 class
   일반적인 서버 프로그램이 가져야 하는 기능을 자식에게 물려주고
   자식 차원에서 구현해야 하는 service() 메서드는 abstract로 선언해
   구현을 강제한다 
 
  <<abstract class>>
  HttpServlet : GenericServlet 을 상속받는 abstract class
  Http Protocal 에 최적화된 멤버를 자식 서블릿 클래스에게 물려준다
  일반적으로 개발하는 모든 서블릿과 JSP 는 이 HttpServlet을
  상속받는다



  Servlet API 설계방식 특징
 : 일반 웹어플리케이션 개발 진영에서는 

표준화된 Servlet API (ServletRequest, ServletResponse, HttpSession 등)를 이용해 개발 ,

실제 동작은 Servlet API, 즉 Interface 를 구현한

다양한 WAS 제품군(Apache-Tomcat,JBOSS, Weblogic...)들이 동작 된다
 

다양한 WAS 에 관계없이 표준화된 하나의 방식으로 자바 웹 개발이 가능 -> 생산성 향상
구축된 웹어플리케이션이 기존 WAS 에서 다른 WAS 환경으로 변경되어도
영향이 없다 -> 웹어플리케이션과 WAS 의 결합도 낮아짐 -> 유지보수성 향상
 


 ** Servlet Life Cycle**


서블릿 jsp 의 최상위 인터페이스 Servlet의 abstract method 인
init() -> service() -> destroy() 가 있음

이 세가지 라이프 사이클 메서드를 WAS ( Web Container ) 가 호출하여 실행된다.
  

init() : 객체 생성 후 서블릿 초기화 작업을 위해 한번 실행

service() : client 요청시마다 실행, 요청에 응답을 매번 수행한다
destroy() : 서비스 해제 직전에 한번 실행 
 EX)  5명의 클라이언트가 동일한 서블릿에 요청한 상태 라면?
  init() : 1번 
  service() : 5번
  destroy() : 0번 -> 서비스 종료 전에 한번 실행