-
[ Servlet / JSP ] 4. 커넥션풀, forward스타터스 백엔드 3기 2023. 1. 5. 15:11
하루입니다.
Connection Pool
- 웹은 다수의 클라이언트가 동시에 1개의 서버에 접속하는 구조이다.
- 서버에 다수의 db가 접속한다.
- db에 요청이 올 때마다 접속하는 건 시간과 메모리의 비용이 크다.
- 시간과 메모리를 아끼기 위해 웹서버를 미리 생성한다.
- 생성한 걸 재사용하자.
- 이를 위해 Connection Pool을 사용하자.
- 자바가 javax.sql.DataSource 인터페이스 API를 제공한다.
- 실제 구현 클래스가 필요한데, 톰캣을 사용할 것이다.
- context.xml에 db 정보를 부여한다.
- tomcat 서버를 사용해서 실제 구현 클래스 객체를 생성한다.
- JNDI(Java Naming and Directory Interface) 방식 자바클래스의 dataSource를 사용한다.
- JNDI는 디렉터리 서비스에서 제공하는 데이터 및 객체를 발견(discover)하고 참고(lookup) 하기 위한 자바 API이다.


connection에 걸리는 시간 보기 : 10000번 반복


- 처음 10000개는 만들어내나, 이후로는 Connection이 없다는 예외가 발생하며 실행이 중단된다.
- 4641 (1/1000초) 소요된다.DateSource(ConnectionPool)에 걸리는 시간 보기 : 10000번 반복


- 계속해서 연결을 만들어낸다.
- 364 (1/1000초) 소요된다.
https://harutocoding.tistory.com/89
[ model2 ] 내부이동과 리다이렉션
하루입니다. 내부이동(forward)과 리다이렉션은 뭐가 다를까요 리다이렉션 상태코드 302. url 바뀐다. 데이터를 변경할 때 ㅡ 수정, 추가, 삭제할 때 사용한다. 궁금점 : 왜 내부이동 안 시키지 이유 1
harutocoding.tistory.com
확장 API
다른 파일 이동 방식
forward
- 서버 내 서블릿끼리의 작업이다.
- 요청은 a가, 응답처리는 b가 한다.
- 즉, 요청받는 서블릿과 응답하는 서블릿이 다르다.
- a는 응답 불가하다. 응답은 b가 한다.
- b가 a의 결과 + b가 수행한 결과를 합쳐서 브라우저에 제공한다.
- url은 변경되지 않고 a이다!

sendRedirection
- 링크 변경된다.

forward (RequestDispatcher) 실습
1. 한 servlet에서 응답과 요청을 한번에 사용하는 경우

2. 요청 servelt과 응답 servlet을 따로 두는 경우
- ForwardTest1(요청), ForwardTest2(응답) 서블릿을 만들었다.
- ForwardTest1에서는 request를 관리한다. id 파라미터를 받고 toUpperCase()를 사용해 바꾼 값을 request 객체의 upperId라는 이름에 setAttribute를 사용해 담는다.
- RequestDispatcher를 사용해 응답 서블릿을 /forward2 로 보낸다.
- RequestDispatcher에 요청객체, 응답객체를 보낸다.

- url을 확인하면 /forward1인 것을 확인할 수 있다.

주의점!
- getAttribute는 request 객체의 속성에서 upperId를 꺼내오는 것이다. 파라미터값이 대문자로 변환된 것을 알 수 있다.
- getParameter는 그대로의 값이다. 파라미터값이 소문자 그대로 출력되는 것을 알 수 있다.

http://localhost:8081/servlettest/forward1?id=qwer로 접속

http://localhost:8081/servlettest/forward2?id=qwer로 접속

servlettest - forward - ForwardTest3 ForwardHTML
'스타터스 백엔드 3기' 카테고리의 다른 글
[ Servlet / JSP ] 5. 필터 (0) 2023.01.05 [ Servlet / JSP ] 4. 쿠키와 세션 (0) 2023.01.05 [ Servlet / JSP ] 2. 기초 (0) 2023.01.04 [ Servlet / JSP ] 1. 기초 (0) 2023.01.03 221230. DB 10. JDBC (수정, 삭제) (0) 2023.01.03