본문 바로가기

Backend/Servlet

(13)
쿠키와 세션 쿠키와 세션 : 개념 / 공통점 / 차이점 클라이언트와 서버 간에 정보를 교환 시, 클라이언트 PC 또는 서버의 메모리에 저장해 두고 사용하면 프로그램 속도를 향상시킬 수 있음 공통점 : 웹 통신간 유지하려는 정보 저장을 위해 사용 (로그인 정보 등) 차이점 : 저장위치, 저장형식, 용량제한, 만료시점 등 쿠키 : 개인 PC에 저장 세션 : 접속중인 웹 서버에 저장 HTTP 프로토콜 서버-클라이언트 통신 시 stateless 방식으로 통신 브라우저에서 새 웹페이지를 열면 기존의 웹페이나 서블릿에 관한 어떤 연결 정보도 유지되지 않음 새로 열린 페이지에서 어떤 정보도 알 수 없음 페이지가 서로 독립적이어서 서로의 상태를 알 수 없음 웹 페이지 사이에 또는 서블릿 간에 상태 및 정보 공유를 위해서는 웹 페이..
서블릿 포워드와 바인딩 서블릿 포워드 서블릿에서 다른 서블릿이나 JSP, 웹 브라우저로 요청을 전달하는기능 요청에 대한 추가 작업을 다른 서블릿에게 수행하게 하는 역할 요청에 포함된 정보를 다른 서블릿이나 JSP와 공유 요청에 정보를 포함시켜서 다른 서블릿에 전달 모델2 개발 시 서블릿에서 JSP로 데이터 전달하는 데 사용 서블릿 포워드 방법 1. redirect HttpServletResponse 객체의 sendRedirect() 메소드 사용 웹 브라우저에게 재요청하는 방식 형식 : sendRedirect(“포워드할 서블릿 또는 JSP”); 2. refresh HttpServletResponse 객체의 addHeader() 메소드 사용 웹 브라우저에게 재요청하는 방식 형식 : response.addHeader(“Refresh..
커넥션 풀 (DBCP : DataBase Connection Pool) Connection Pool 등장 배경 기본 데이터베이스 연동 방법의 문제점 : 애플리케이션에서 데이터베이스 연결 과정에서 시간이 많이 소요 해결 방안 애플리케이션 실행 시 미리 Connection 객체를 생성해 놓고, 미리 데이터베이스 연결을 해 놓음 애플리케이션은 데이터베이스 연동 작업 발생 시 이 미리 생성되어 있는 Connection 객체를 이용해서 작업 커넥션 풀 (DBCP : DataBase Connection Pool) 일정량의 DB Connection 객체를 Pool에 저장해 두고, 클라이언트 요청이 있을 때마다 가져다 사용하고 반환 클라이언트에서 다수의 요청이 발생될 경우 요청 마다 DB Connection 객체를 생성하게 되면 데이터베이스에 부하가 발생하기 때문에 커넥션 풀 기법 이용 ..
서블릿 DB 연동 서블릿의 비즈니스 로직 처리 데이터베이스 관련 작업 다른 서버 연동해서 데이터 얻는 작업 등 예) 회원 등록 요청 처리 (DB에 회원 정보 저장) 예) 로그인 처리 (DB에 있는 회원 정보와 입력하여 전송된 로그인 정보가 일치하는지 검사) 예) 쇼핑몰 주문 처리 작업 비즈니스 로직 처리 과정 클라이언트로부터 요청 데이터베이스 연동과 같은 비즈니스 로직 처리 결과를 클라이언트에게 응답 HTML로 요청 -> 서블릿에서 요청 받음 -> DAO에서 비즈니스 로직 처리. 결과 반환 -> 서블릿에서 결과 받아서 클라이언트에게 응답 -> 클라이언트에서 결과 출력 ((+) 스프링에서 처리하는 과정 : JSP로 요청 -> 컨트롤러가 요청 받음 -> DAO에서 비즈니스 로직 처리. 결과 반환 -> 컨트롤러가 결과 받아서 ..
DTO vs VO DTO (Data Transfer Object) 데이터 저장 (전송) 담당 클래스 Controller, Service, View 등 계층간 데이터 교환을 위해 사용되는 객체 비즈니스 로직을 갖지 않는 순수한 데이터 객체 getter, setter 메소드만 포함 가변의 성격 (setter를 사용해서 데이터 변경 가능) VO (Value Object) 데이터 저장 담당 클래스 DTO와 혼용해서 사용되지만 VO는 값(Value)를 위해 사용되는 객체로 불변(read only)의 속성 보통 getter의 기능만 포함 일반적으로 DTO와 같은 용도로 사용 우리도 VO로 사용하지만 getter/setter 모두 포함시켜서 사용할 것임
자바스크립트로 서블릿에 요청하기 예제 자바스크립트로 서블릿에 요청하기 예제 1, 2, 3 공통 : LoginServlet3.java package sec03; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class loginServlet3 */ @WebSer..
서블릿 응답 처리와 MIME-TYPE 서블릿 응답 처리 방법 doGet() 또는 doPost() 메소드 안에서 처리 javax.servlet.http.HttpServletResponse 객체 이용 setContentType()을 이용해서 클라이언트에게 전송할 데이터 종류(MIME-TYPE) 지정 클라이언트(웹 브라우저)와 서블릿 통신은 자바 I/O 스트림 이용 (서버에서 클라이언트로 데이터 전송 시 자바 I/O 스트림 이용) PrintWriter 클래스 사용 PrintWriter out = response.getWriter(); out.print(data); data : 웹 브라우저로 보내는 데이터 HTML 형식으로 출력되어야 하므로 data에 HTML 태그 포함시켜서 전송 HTML 문서 형식을 제대로 작성해서 전송 전송된 HTML 형식으로..
GET / POST 방식 GET 방식 서블릿에게 데이터를 전송할 때, 데이터가 URL 뒤에 name=value 형태로 전송됨 여러 개의 데이터를 전송할 때는 ‘&’로 구분해서 전송 보안에 취약 전송할 수 있는 데이터는 최대 255자 (길이 제한) 기본 전송 방식으로 쉬움 웹 브라우저에서 직접 입력해서 전송 가능 (디폴트 GET 방식) 서블릿에서는 doGet() 메소드 이용해서 처리 doGet() html 내 form 태그의 method 속성이 get일 경우 호출되는 메소드 웹 브라우저의 주소창 URL을 이용하여 서블릿 요청한 경우에도 defalut로 호출되는 메소드 매개변수로 HttpServletRequest, HttpServletResponse를 받음 웹 브라우저에서 요청 시, doGet() 호출 -> request 객체와 r..
서블릿 요청 API 서블릿 기본 기능 클라이언트로부터 요청을 받음 데이터베이스 연동과 같은 비즈니스 로직 처리 처리된 결과를 클라이언트에게 응답 서블릿 요청과 응답 수행 API javax.servlet.http 패키지에 포함 요청 관련 API : javax.servlet.http.HttpServletRequest 클래스 응답 관련 API : javax.servlet.http.HttpServletResponse 클래스 doGet() / doPost() 메소드에서 request, response 객체 사용 태그로 서블릿 요청 태그를 이용해 브라우저에서 서블릿으로 사용자의 요청이나 데이터를 전송 서블릿 데이터를 웹 브라우저로 전송 태그 action 속성 : 서블릿 또는 JSP 이름 지정 method 속성 : GET 또는 POST..