2021-11-02

1102 jsp, web 기술

 # 1. JSP란

- 서버사이드에서 동적컨텐츠를 생성해주는 랭귀지

- 자바 웹 어플리케이션에서 이용됨

- 서블릿 기술의 확장판이라고 볼 수 있다.

- HTML과 자바언어의 갭을 메꾸기 위하여 탄생

# JSP servlet의 장점?

- 태그라이브러리 등 지원

- HTML과 자바언어를 분리하여 깔끔한 코드 작성에 도움

# JSP 라이프사이클

- 번역 -> 컴파일 -> 메모리에 클래스가 로딩됨 -> 인스턴스 생성 -> 초기화

: 초기화 된 후, 다른 인스턴스들 (servlet request 같은) 이 jsp 인스턴스에 접근할 수 있게[ 된다.  

 -> 사용자 요청 처리 -> 소멸

( 일반적인 클래스 객체의 생성과정과 동일.)

---

# 기타

## 초기화 순서

- 스태틱 변수의 기본 초기화 (이를테면, int 가 0으로 초기화되는것. )

- 명시적 초기화

- static 블록 

### 스태틱 블록이란, 말하자면 클래스의 생성자같은 존재. 

- 인스턴스 변수 기본 초기화

- 인스턴스 변수 명시적 초기화

- 인스턴스 블록

- 생성자 

## 어떻게 하나의 컨트롤러가 여러 요청을 처리할 수 있는가 ?

- 힙영역 / 메소드 영역 별로 메모리에 로딩되기 때문이다. 

## 어떻게 톰캣은 여러 유저의 요청을 동시에 처리할수있는가?

- 현재 톰캣은  NIO기반으로 돌아간다. 

- 사용자 요청이 끝날때까지 대기하는 동기방식(이전방식) 이 아니라, 요청을 다른 워커스레드에게 넘긴다. 즉 메소드 호출하고 return 하기 때문에, 더 많은 사용자 요청을 바로바로 받아들일수있게 된다. 

## 톰캣 스레드와 커넥션 객체의 관계

- 커넥션 객체는 생성 비용이 비싸다. 

- 모든 사용자가 db 커넥션을 사용하는 것은 아니기 때문에, 사용자 요청 스레드 > 커넥션 객체 수 가 된다. 

- maxIdleconnection 과 maxconnection수는 같은 것이 좋다. 만약 maxidle < maxconn 일 경우, idle수보다 커넥션객체를 더 많이 생성해야하면 그만큼 객체를 생성했다가 없앴다가 하는 비용이 들기 때문이다. 

## 로그대신 system.out.println을 사용하면 안 좋은 이유

1) 필수적인 정보들을 얻을 수 없다. 시간 정보, 유저정보, 리퀘스트 ip 정보등.

2) 사용하는 개발자의 성향에 따라 찍히므로 형식이 통일되지 않는다.

3) syso는 시스템콜을 유발하기 때문에, os의 native IO를 사용하고, 따라서 해당 어플리케이션 외의 다른 프로세스에게도 민폐를 끼치게 된다.

4) 성능면에서 10배이상 떨어진다고 한다. (위 3번에서 이어지는 이유. 시스템콜을 하고 다시 유저 모드로 컨텍스트 스위칭하는 비용이 비싸다) 

5) 로그파일로서 따로 수집되지 않는다. 

## 스프링이 유저 웹 요청을 받아들이는 순서

- 유저요청 -> dispatcherServlet -> adaptor -> controller 가 요청을 process하고 뷰네임 반환 -> adaptor -> dispatcherServlet 이 요청 반환

- 스프링은 dispatcherServlet이 일단 모든 요청을 받아들이는. 프론트 기반? 방식을 사용중. 

댓글 없음:

댓글 쓰기

0328 fdisk, mkfs, mount, fstab

 1. 하드디스크를 붙인다. 2. fdisk -l로 하드디스크를 확인한다.  - interactiive한 커맨드모드 사용하여 (m) 붙인 하드디스크의 파티셔닝을 한다.  - 마지막에 w를 해야 실제로 반영이 된다.  3. mkfs를 하여 어떤 파일시스...