728x90
반응형
📌 JSP와 Servlet의 차이점은 무엇인가?
JavaServer pages(JSP)와 Servlet은 모두 Java를 기반으로 하는 웹 애플리케이션 개발을 위한 기술이지만 몇 가지 차이점이 있다.
[ 문법 및 구조 ]
- JSP
- HTML 안에 Java 코드를 삽입하는 방식으로 동적 웹 페이지를 생성한다.
- Servlet
- Java 코드 안에 HTML 코드를 삽입하는 방식으로 동적 웹 페이지를 생성한다.
[ 유지보수 및 디자인 ]
- JSP
- 코드가 섞이기 쉽기 때문에 디자인과 비즈니스 로직을 분리하기 어렵다.
- Servlet
- 코드의 구조화와 분리가 더 쉽다.
[ 방식 ]
- JSP
- 내부적으로 서블릿으로 변환되어 실행된다.
- Servlet
- 자바 클래스로 직접 작성되어 실행된다.
일반적으로 JSP는 프론트엔드와 백엔드의 통합이 필요한 경우, 서블릿은 비즈니스 로직을 처리해야 하는 경우에 사용된다.
두 기술을 혼용하여 하나의 웹 애플리케이션을 개발하는 경우도 흔히 있다.
📌 JSP를 기본 제공하는 객체는 무엇이 있나?
[ request 객체 ]
- 클라이언트로부터 서버로 전달되는 요청 정보를 처리하는 데 사용된다.
- HTTP 요청에 대한 매개변수, 헤더, 쿠키 등의 정보를 얻을 수 있다.
<%
String parameterValue = request.getParameter("parameterName");
%>
[ response 객체 ]
- 클라이언트로 응답을 보내는 데 사용된다.
<%
response.setContentType("text/html");
response.getWriter().println("<html><body>Hello, World!</body></html>");
%>
[ out 객체 ]
- response.getWriter()를 통해 얻은 출력 스트림을 담은 객체.
- 클라이언트에게 출력을 보내는 데 사용된다.
<%
out.println("Hello, World!");
%>
[ session 객체 ]
- 클라이언트에 대한 세션 정보를 담고 있다.
<%
session.setAttribute("username","devch");
%>
[ application 객체 ]
- 웹 애플리케이션 전체에서 공유되는 정보를 저장하는 데 사용된다.
- 여러 사용자 간에 데이터를 공유할 때 유용하다.
<%
application.setAttribute("counter",0);
%>
[ pageContext 객체 ]
- 페이지 스코프, 요청 스코프, 세션 스코프 등과 같은 다양한 스코프에서 속성을 설정하고 검색하는 데 사용된다.
<%
pageContext.setAttribute("message", "Welcome!", PageContext.REQUEST_SCOPE);
%>
📌 4개의 JSP scope에는 무엇이 있나?
- 페이지 스코프 (Page Scpoe)
- 한 페이지 내에서만 유효한 스코프이다.
- 같은 페이지 내의 여러 부분에서 공유되는 데이터를 저장할 때 사용한다.
- 요청 스코프 (Request Scope)
- 현재 HTTP 요청 내에서만 데이터가 유효한 스코프이다.
- 같은 요청에 대한 여러 서블릿이나 JSP 페이지 간에 데이터를 전달할 때 사용한다.
- 세션 스코프 (Session Scope)
- 사용자 세션이 유지되는 동안 데이터가 유효한 스코프이다.
- 여러 요청 간에 사용자 정보와 같은 데이터를 유지하고자 할 때 사용된다.
- 애플리케이션 스코프 (Application Scope)
- 웹 애플리케이션이 유지되는 동안 데이터가 유효한 스코프이다.
- 여러 사용자 간에 공유되는 전역 데이터를 저장할 때 사용된다.
📌 세션과 쿠키의 차이는 무엇인가?
[ 저장 위치 ]
- 쿠키
- 클라이언트 측에 저장되어 브라우저를 통해 전송된다.
- 사용자의 로컬 컴퓨터에 저장되며, 만료 기간이 지나거나 사용자가 수동으로 삭제하지 않는 이상 유지된다.
- 세션
- 서버 측에 저장되어 서버에서 관리된다.
- 세션 데이터는 서버 메모리나 데이터베이스에 저장되며, 사용자에 대한 정보는 클라이언트에 전달되지 않는다.
[ 보안 ]
- 쿠키
- 클라이언트에 저장되므로 보안에 취약할 수 있다.
- 클라이언트에서 수정 가능하며, 중요한 정보를 담고 있을 경우 보안 문제가 발생할 수 있다.
- 세션
- 서버에서 데이터를 관리하므로 클라이언트는 세션 데이터에 직접 접근할 수 없다.
- 세션은 브라우저 쿠키와는 별도로 유지되기 때문에 일반적으로 더 안전하다.
[ 용량 제한 ]
- 쿠키
- 브라우저마다 쿠키 크기에 제한이 있으며, 한 도메인 당 쿠키 수에도 제한이 있다.
- 세션
- 서버 메모리나 데이터베이스의 용량이 한계에 도달하면 세션 관리에 문제가 생길 수 있다.
📌 세션 과정을 설명하라.
[ 세션 시작 ]
사용자가 웹 애플리케이션에 접속하면, 세션이 시작된다.
[ 세션 식별자 부여 ]
세션 시작 시에는 사용자를 고유하게 식별하는 세션 식별자(session ID)가 생성된다. 이 식별자는 일반적으로 쿠키를 통해 클라이언트에게 전송되거나 URL 매개변수를 통해 전달된다.
[ 서버에서의 세션 관리 ]
클라이언트로부터 받은 세션 식별자를 사용하여 서버는 해당 사용자의 세션 데이터를 식별하고 로드한다.
[ 세션 종료 ]
사용자가 로그아웃하거나 브라우저를 종료하면 세션은 종료된다.
세션 종료 시에는 해당 세션에 할당된 자원이 해제되고 데이터는 정리된다.
주니어 자바 개발자를 위한 100가지 질문 (6. Java Web)_2
📌 쿠키를 사용할 수 없을 때 세션을 대신 사용할 수 있을까? 세션은 서버 측에서 관리되며, 사용자의 브라우저에 저장되는 쿠키와 달리 사용자의 정보를 서버에 저장한다. 이는 쿠키가 비활성
dev-density.tistory.com
728x90
반응형
'Java' 카테고리의 다른 글
주니어 자바 개발자를 위한 100가지 질문 (7. 예외 클래스) (0) | 2024.02.16 |
---|---|
주니어 자바 개발자를 위한 100가지 질문 (6. Java Web)_2 (0) | 2024.02.15 |
주니어 자바 개발자를 위한 100가지 질문 (5. Object Copy) (0) | 2024.02.14 |
주니어 자바 개발자를 위한 100가지 질문 (4. Reflection) (0) | 2024.02.13 |
주니어 자바 개발자를 위한 100가지 질문 (3. Multi-Thread)_2 (0) | 2024.02.07 |