ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [ 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
Designed by Tistory.