Servlet 19

세션

Session ** 웹 페이지들 사이에서 공유하는 정보를 서버에 저장해두고, 웹 페이지들을 매개한다는 점에서 세션도 쿠키와 다르지 않다. 다른 점이라면 쿠키는 클라이언트 PC에 저장되고, **세션은 서버 메모리에 저장된다는 점이다. 쿠키에 비해 보안이 좋기 때문에 로그인처럼 보안을 요구하는 데이터를 다룰 때 세션을 이용한다. 세션은 브라우저 당 하나가 생성된다. 세션의 특징 데이터를 서버 메모리에 저장한다. 블아줘의 세션 연동은 쿠키를 이용한다. 쿠키보다 보안에 유리하다. 서버에 부하를 줄 수 있다. 브라우저 당 하나의 세션SessionID이 생성된다. 세션은 유효시간을 가진다.(기본 30분) 로그인 유지, 장바구니 등에 주로 사용한다. 세션 생성 과정 브라우저로 사이트에 접속한다. 서버는 접속한 브라우..

Servlet-JSP 2020.09.10

쿠키

세션 트래킹 HTTP프로토콜 방식으로 통신하는 웹 페이지는 서로 어떤 정보도 공유하지 않는다. 쿠팡 메인 페이지에서 로그인하고 주문 페이지에서 또 다시 로그인하지 않아도 되는 이유는 세션 트래킹Session Tracking이라는 웹 페이지 연결기능을 구현했기 때문이다. HTTP프로토콜은 서버-클라이언트 통신 시 스테이트리스stateless방식으로 통신한다. 브라우저에서 새 웹 페이지를 열면 이전 웹 페이지에 대한 어떤 정보도 새 웹페이지는 알 수 없다. stateless란, 각각 웹 페이지 정보, 상태를 다른 웹페이지와 공유하지 않는 방식을 말한다. 따라서 웹 페이지를 서로 연결하기 위해 세션 트래킹을 이용해야 한다. 웹 페이지를 연동하는 방법은 몇 가지가 있다. hidden 태그 URL Rewritin..

Servlet-JSP 2020.09.10

ServletContext & ServletConfig

이미지 출처 : https://www.oreilly.com/library/view/head-first-servlets/9780596516680/ch05s10.html ✔ javax.servlet.ServletContext 특징 서블릿 - 컨테이너 연동을 위해 사용한다. 컨텍스트(웹 애플리케이션)마다 하나의 ServletContext가 생성된다. 서블릿끼리 자원을 공유하는 데 사용한다. 컨테이너 실행 시 생성되고 종료 시 소멸한다. 제공하는 기능 서블릿에서 파일 접근 자원 바인딩 로그 파일 컨텍스트에서 제공하는 설정 정보 제공 ServletContext의 메서드 /*주어진 name을 이용해 바인딩된 value를 가져온다.*/ getAttribute(String name) /*바인딩된 속성들의 name을 반..

Servlet-JSP 2020.09.10

바인딩

바인딩 웹 프로그램 실행 시 자원(데이터)을 서블릿 관련 객체에 저장하는 방법 GET방식으로 많은 데이터를 전달하기에 한계가 있다. 많은 양의 데이터를 전달할 때 바인딩binding을 사용한다. 그냥 key-value다. /*데이터를 각 객체에 바인딩한다.*/ setAttribute(String name, Object obj) /*각 객체에 바인딩된 데이터를 name으로 가져온다.*/ getAttribute(String name) /*각 객체에 바인딩된 데이터를 name으로 제거한다.*/ removeAttribute(String name) 예제 보내는 쪽 @WebServlet("/bind") public class BindingTestServlet extends HttpServlet { public vo..

Servlet-JSP 2020.09.10

Connection Pool

커넥션 풀 웹 애플리케이션이 실행됨과 동시에 연동할 데이터베이스와 미리 연결 해둔다. 필요할 때마다 미리 연결해놓은 상태를 이용해 빠르게 데이터베이스 관련 작업을 할 수 있다. 요약하자면 미리 데이터베이스와 연결 시킨 상태를 유지하는 기술을 커넥션 풀이라 부른다. JDBC의 문제점은 오래 걸린다는 것이다. Connection Pool객체를 이용하면 미리 연결된 상태를 유지하므로 빠르게 작업할 수 있다. 커넥션 풀 동작과정 톰캣 컨테이너 실행 Connection pool 객체 생성 커넥션 객체 DBMS 연결 데이터베이스와 연동 작업 시, ConnectionPool이 제공하는 메서드를 호출 톰캣은 자체적으로 ConnectionPool을 제공한다. JNDI Java Naming and Directory Int..

Servlet-JSP 2020.09.10

포워드

Forward 하나의 서블릿에서 다른 서블릿 또는 JSP와 연동하는 방법을 포워드라고 한다. 요청에 대한 추가 작업을 다른 서블릿에서 수행하게 한다. 요청에 포함된 정보를 다른 서블릿, JSP와 공유할 수 있다. 요청에 정보를 포함시켜 다른 서블릿에 전달할 수 있다. Model2 개발 시 서블릿에서 JSP로 데이터를 전달하는 데 사용한다. 네 가지 포워드 1.redirect HttpServletResponse객체의 sendRedirect() 이용 웹 브라우저에 재요청하는 방식 예시 sendRedirect("/board/register"); 2. Refresh HttpServletResponse의 addHeader() 이용 웹브라우저에 재요청 예시 response.addHeader("Refresh",경과시..

Servlet-JSP 2020.09.10

GET & POST

📚 자바 웹을 다루는 기술을 정리한 내용입니다. GET 방식 서블릿에 데이터를 전송할 때 데이터가 URL 뒤에 따라 붙는다. 여러 개의 데이터를 전송할 때는 '&'로 구분한다. 보안 취약 전송할 수 있는 데이터는 최대 255자 기본 전송 방식이며 사용이 쉽다. 웹 브라우저에 직접 입력해서 전송할 수도 있다. 서블릿에서는 doGet()으로 전송 받은 데이터를 처리한다. POST 방식 서블릿에 데이터를 전송할 때는 TCP/IP 프로토콜 데이터의 HEAD영역에 숨겨진 채 전송된다. 보안에 유리하다. 전송 데이터 용량이 무제한. 전송 시 서블릿에서 다시 가져오는 작업을 해야 하므로 속도가 GET보다 느리다. 서블릿에서는 doPost()를 이용해 처리한다. 아무튼 GET방식이든 POST방식이든. 어..

Servlet-JSP 2020.09.10

Request - Response

서블릿의 기본 기능 톰캣과 같은 Web Application Server(이하 WAS)가 처음 나왔을 때 웹 브라우저 요청을 쓰레드 방식으로 처리하는 기술이 서블릿이었다. 서블릿은 자바로 웹 프로그래밍을 하는 데 있어서 가장 기초가 되는 내용이다. 서블릿 기본 기능 수행 과정 클라이언트로 요청을 받는다. 데이터 베이스와 연동 하여 비즈니스 로직을 처리한다. 처리된 결과를 다시 클라이언트에게 돌려준다. HttpServletRequest & HttpServletReponse HttpServletRequest 요청을 돕기 위한 클래스 HttpServletResponse 응답을 돕기 위한 클래스 요청과 응답 login.html 아이디 : 비밀번호: 확인 LoginServlet.java package com.co..

Servlet-JSP 2020.09.10

Servlet

📚 자바 웹을 다루는 기술을 정리한 내용입니다. Servlet이란? 이전에 정적인 웹을 너머서 동적 웹 프로그래밍을 위한 자바 클래스다. 클라이언트 요청에 따라 서버에서 동적으로 서비스를 제공하는 클래스 서블릿은 일반적인 자바와 달리 톰캣과 같은 JSP/Servlet 컨테이너에서 실행된다. 서블릿의 동작 과정이다. 클라이언트가 요청하면 web server는 WAS에 위임한다. WAS는 각 요청에 해당하는 서블릿을 실행한 다음 결과를 반환하여 클라이언트에게 전송한다. 특징 서버 쪽에서 실행되면서 기능 수행 정적 웹 문제를 보완하여 동적 기능 제공 쓰레드 방식으로 실행 컨테이너에서 실행 Servlet API 계층 구조 두 인터페이스 Servlet, ServletConfig를 추상클래스 GenericServl..

Servlet-JSP 2020.09.10