서블릿이란 한마디로 자바로 개발된 CGI프로그램이다. 서블릿 = server + applet-> server에서 돌아가는 작은 applet(자바 프로그램) 자바EE기술중에서 jsp와 서블릿 기술만 구현한 서버를 서블릿 컨테이너라고 한다. 웹 서버가 있고 웹 애플리케이션이 있다. 이때 이 프로그램이 자바로 개발되었으면 서블릿인것이다. CGI프로그램에는 펄,PHP등 유명한것들이 있다. CGI 프로그램이 무엇인가? CGI프로토콜이 뭔지 우선 설명하겠다. CGI프로토콜이란, 웹 서버와 웹상에서 돌아가는 프로그램 사이의 통신 규약이다. 즉, 웹 서버와 웹 앱이 서로 데이터를 어떻게 주고 받을것인지에 대한 프로토콜이다. 그리고, 이 프로토콜을 지킨 웹에서 돌아가는 응용프로그램이 CGI프로그램이다. 자바로 구현된 C..
서블릿 컨테이너(톰캣)는 서블릿의 생명주기를 관리한다. 서블릿을 생성,실행,소멸하는 역할을 한다.서블릿 컨테이너는 DD(Deployment Descriptor)파일이라고 불리는 web.xml을 참고하여 어떤 URL이 클라이언트로부터 들어왔을때 그 URL을 처리 할 수 있는 서블릿을 찾게 된다. 근데 만약에 그 서블릿이 메모리에 로드 되어 있지 않다면, 로드 시킨다. 근데 이미 로드 되어 있는 서블릿이 있다면 그 서블릿을 재활용 한다. 그렇기 때문에, 서블릿이 처음 생성 될때는 init() service()가 차례로 호출 되는데 똑같은 URL로 요청을 하게 되면 service()만 호출 하는 것이다. service()콜백 메소드는 서블릿이 실행될때 호출 된다. 또한 WAS가 종료 될때 서블릿에 대해 des..
객체 지향의 4대 특성 캡! 상추다 라고 외우자. 캡슐화상속추상화다형성 캡슐화란 비슷한 속성과 메소드를 하나의 클래스로 묶은것이다. 그리고, 클래스 내부를 외부에 공개하지 않음으로써 외부에서 이 클래스를 맘대로 수정하는 일을 못하게 한다.(정보은닉) 클래스 내부에 접근하는 유일한 방법은 public 메소드를 통한 방법 뿐이다. 이 public 메소드는 클래스를 설계한 사람이 만든것이기 때문에 이 클래스가 설계자가 의도한 대로만 동작하게끔 할 수 있다. 만약 멤버 변수가 private이 아닌 public이어서 정보은닉이 되어 있지 않다면? 객체 외부에서 맘대로 멤버 변수를 수정 할 수 있기 때문에 그 멤버 변수를 이곳 저곳에서 참조하게 되면 유지보수 하기가 굉장히 힘들게 될것이다. 상속이란 부모 클래스의 ..
붕어빵틀과 붕어빵? 컴퓨터 공학과 4학년인 지금.. 그동안 책을 보거나 학교에서 강의를 들을때 클래스와 객체의 관계를 붕어빵틀과 붕어빵에 비유 한것을 많이 보았다. 그때 당시에는 이 비유를 듣고 클래스가 뭐고 객체가 무엇인지 한번에 알 수 있어서 굉장히 좋은 비유라고 생각했다. 하지만, 사실은 이것은 오히려 객체지향을 제대로 이해하는데 방해가 되는 비유이다. 즉, 붕어빵틀(클래스)이 붕어빵(객체)를 만들어 낸다고 배웠었다.우리가 A라는 클래스에서 a라는 객체를 생성할때 다음과 같이 생성한다.(동적 할당)A a = new A();같은 논리로 붕어빵틀 붕어빵 = new 붕어빵틀(); -> 붕어빵틀을 만들었더니 붕어빵이 나왔다 (????) 뭔가 좀 이상하다. 붕어빵틀은 붕어빵을 만들어내는 팩토리이지, 클래스와..
JSP 설계 모델에는 2가지 모델이 있다. 모델1방식과 모델2방식.데이터 입력, 데이터 처리, 데이터 출력 각각을 어느 곳에서 처리하느냐에 따라서 모델1과 모델2방식이 구분된다. 모델1 모델1 방식은 JSP가 데이터 입력과 출력을 담당하고, 자바빈이 데이터 처리를 담당한다.여기서 사용되는 자바빈은 데이터를 담는 역할 뿐만 아니라, 로직을 처리하기도 하기 때문에 데이터 빈+ 서비스 빈의 역할을 동시에 하고 있는 자바빈이다. 즉, JSP 혼자서 거의 모든 업무를 처리한다.모델1방식은, 매우 빠르게 개발해야 하며 유지보수가 필요하지 않은 경우에 사용하는것이 좋다. 즉, 남들과 코드를 공유 할일이 없고 나만 그 코드를 보는 경우에는 모델1을 사용해도 상관없다. JSP가 더러워도 나는 그 코드를 알아 볼 수 있기..
필터 필터는 웹 컴포넌트(jsp,서블릿)와 웹 브라우저 사이에 존재한다. 정확히는 웹 컨테이너 내부에 여러개의 웹 컴포넌트들이 있는데 웹 컨테이너와 웹 컴포넌트 사이에 존재한다. 사용자가 현재 로그인 상태인지 아닌지에 따라 보여줘야 할 페이지가 다를 수 있다. 이때 필터에 사용자가 로그인 상태인지 확인하는 코드를 작성하게 되면 로그인 여부에 따라 다른 페이지를 보여 줄 수 있다.위와 같은 구조로 구성 되어 있다. 래퍼 기본적으로는 사용자가 보낸 요청을 임의로 수정할 수 없지만 그 요청을 감싸는 래퍼 클래스를 만들면 수정할수 있다.래퍼 클래스는 요청 래퍼 클래스와 응답 래퍼 클래스 2가지 종류가 있다. 웹 컨테이너는 웹 브라우저로부터 요청을 받게 되면 request객체와 response객체를 만들게 된다...
익스프레션 언어 익스프레션이란 식이라는 의미이다. 식이라는것은 y=x+1처럼 연산자(+)와 피연산자(x,y)로 이루어진것을 의미한다.익스프레션 언어란 ${cnt+1} 와 같이 표현하며 cnt는 어떤 자바 변수가 아니라 attribute이다. 기존 JSP의 로 나타내는 익스프레션 문법 과는 다르다. 이곳에서의 cnt는 자바 변수를 의미한다.즉, 익스프레션 언어란 식으로 표현된 언어라는 뜻이다. 기존 JSP 에서는 Attribute를 다음과 같은 방법으로 가져왔었다.하지만 이 JSP는 HTML내에 포함되기 때문에 디자이너도 이 파일을 보게 되는데, 디자이너는 코드를 볼줄 모르기 때문에 저 구문이 쉽게 읽혀지지않으며 혼란을 줄 수 있다.그렇기 때문에 새롭게 JSP에 추가된 문법이 바로 익스프레션 언어이다. 다..
- Total
- Today
- Yesterday
- hydrate
- await
- computed
- typescript
- useEffect
- mobx
- state
- reducer
- useRef
- react hooks
- Babel
- type alias
- rendering scope
- storybook
- reactdom
- design system
- Polyfill
- return type
- webpack
- javascript
- Action
- promise
- async
- Next.js
- atomic design
- react
- es6
- reflow
- server side rendering
- props
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |