개발공부 일지
학원수업_38day [HTML,CSS,JSP,Servlet(5day) - web ] 본문
학원수업_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번 -> 서비스 종료 전에 한번 실행



'학원수업 > Web(HMTL,CSS,JSP,Servlet)' 카테고리의 다른 글
| 학원수업_40day [HTML,CSS,JSP,Servlet(7day) - Cookie / Session] (0) | 2022.09.27 |
|---|---|
| 학원수업_39day [HTML,CSS,JSP,Servlet(6day) - ServletConfig, Servletcontext] (0) | 2022.09.26 |
| 학원수업_37day [HTML,CSS,JSP,Servlet(4day) - web ] (0) | 2022.09.23 |
| 학원수업_36day [HTML,CSS,Javascript (3day) - web 구동원리 ] (0) | 2022.09.22 |
| 학원수업_35day [HTML,CSS,Javascript (2day) - div,span ] (0) | 2022.09.21 |