TIL#35

DuBu·2023년 7월 26일
0

일본IT JAVA 연수과정

목록 보기
53/61
post-thumbnail

JSP action tag

<jsp:forward>:
이 태그는 현재 실행 중인 JSP 페이지의 제어를 다른 리소스(다른 JSP 페이지, 서블릿 등)로 전달하는 데 사용됩니다. 일반적으로 사용자의 요청을 다른 페이지로 리디렉션하는 데에 쓰이며, 포워드를 통해 요청과 관련된 데이터를 새로운 페이지로 전달할 수도 있습니다. 이렇게 함으로써 웹 애플리케이션의 기능을 모듈화하고 코드를 재사용할 수 있게 됩니다.

<jsp:forward page="/newPage.jsp"/>

<jsp:include>:
이 태그는 현재 JSP 페이지에 다른 리소스(다른 JSP 페이지, HTML 파일 등)의 내용을 포함시키는 데 사용됩니다. 포함되는 리소스의 내용이 현재 페이지의 해당 위치에 표시됩니다. 주로 웹 페이지의 헤더, 푸터, 혹은 다른 일반적으로 반복되는 부분을 모듈화하여 여러 페이지에서 동일한 내용을 사용할 수 있게 합니다.

<jsp:include page="/header.jsp"/>

<jsp:param>:
이 태그는 <jsp:forward>나 <jsp:include>와 함께 사용되어 전달할 매개변수를 지정하는 데 사용됩니다. 이를 통해 포워드되는 페이지나 포함되는 페이지에 데이터를 전달할 수 있습니다. 주로 포워드되는 페이지가 요청을 처리하는 데 필요한 추가 정보를 전달하는 데 사용됩니다.

<jsp:forward page="/newPage.jsp">
    <jsp:param name="id" value="123"/>
</jsp:forward>

response.sendRedirct()

response.sendRedirect() 함수는 웹 애플리케이션에서 사용되는 메서드로, 클라이언트의 요청을 다른 URL로 리디렉션(재지정)하는 데 사용됩니다. 이를 통해 서버는 클라이언트에게 다른 페이지로 이동하라고 알려주고, 클라이언트는 새로운 URL로 다시 요청을 보내게 됩니다.

리디렉션은 일반적으로 사용자가 로그인하거나 페이지를 요청했을 때 해당 페이지가 다른 곳으로 이동해야 할 때 유용하게 사용됩니다. 또한, 사용자를 보다 최신 정보를 제공하는 새로운 버전의 페이지로 리디렉션할 때도 사용될 수 있습니다.

response.sendRedirect() 함수는 서블릿에서 사용되며, HTTP 응답에 302 상태 코드를 설정하여 리디렉션을 나타냅니다. 이때, 새로운 URL은 response.sendRedirect() 함수의 매개변수로 전달됩니다.

예시)

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class MyServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 다른 페이지로 리디렉션
        response.sendRedirect("https://www.example.com/newPage");
    }
}

위 예제에서 doGet 메서드는 사용자가 MyServlet에 접속하면 다른 URL인 "https://www.example.com/newPage"로 리디렉션합니다. 클라이언트는 새로운 URL로 다시 요청을 보내게 되며, 해당 페이지가 표시됩니다.

GET 방식과 POST 방식의 차이.

GET 방식과 POST 방식은 HTTP 프로토콜을 통해 서버에 데이터를 전송하는 방식입니다.

GET 방식:
데이터를 URL의 파라미터로 전송합니다.
URL에 데이터가 노출되므로 보안에 취약할 수 있습니다.
브라우저에서 캐싱될 수 있어 같은 요청이 반복되면 캐시된 결과를 가져옵니다.
길이 제한이 있으며, 대부분의 브라우저에서 약 2,048자 정도로 제한됩니다.
주로 데이터를 조회하는데 사용합니다.

POST 방식:
주로 데이터를 서버로 전송할 때 사용합니다.
HTTP 요청의 본문에 데이터를 담아 전송하므로, URL에는 노출되지 않아서 보안성이 높고, 데이터 양에도 제한이 없습니다.
주로 로그인 정보나 민감한 데이터 전송에 사용합니다.

forward 와 redirect 의 차이

  • 클라이언트로 하여금 다시 요청한 페이지로 접속하게끔 하는 방법

Forward:

  • 서버 내에서 이루어지는 페이지 전환 방식입니다.
  • 클라이언트는 이동하지 않고 현재의 요청과 상태를 그대로 유지한 상태에서 서버가 다른 페이지로 응답을 보내줍니다.
  • 주로 서버 내부에서 작업을 처리하고 결과를 출력하는 용도로 사용됩니다.
  • 클라이언트에게 새로운 요청 주소가 노출되지 않습니다.
  • forward는 request객체를 그대로 쓸 수 있음.

Redirect:

  • 클라이언트에게 다른 페이지의 URL로 이동하도록 요청하는 방식입니다.
  • 서버는 클라이언트에게 특정 URL로 다시 요청하도록 응답합니다.
  • 주로 완전히 새로운 요청을 만들어야 할 때 사용됩니다.
  • 클라이언트에게 새로운 요청 주소가 노출됩니다.
  • 리다이렉트를 쓰게 되면 request객체는 다시 생성되어 쓰지 못함

쿠키와 세션의 차이

쿠키 (Cookie):

  • 클라이언트의 로컬에 저장되는 작은 데이터 조각입니다.
  • 클라이언트의 상태 정보를 유지하고 서버와 클라이언트 간의 상태를 연결하는 용도로 사용됩니다.
  • 클라이언트가 직접 관리하며, 만료 기간을 설정할 수 있습니다.
  • 4kb로 용량이 제한적이며, 300개까지 데이터 정보를 가질 수 있습니다.
  • 보안에 취약할 수 있으며 중요한 정보를 담아서는 안됩니다.

세션 (Session):

  • 서버데이터를 저장하는 기술로, 일반적으로 쿠키를 이용하여 세션 ID를 클라이언트에게 보내고, 서버에서 이 세션 ID에 해당하는 데이터를 관리합니다.
  • 클라이언트에는 세션 ID만 저장되고, 실제 데이터는 서버에 저장되므로 비교적 안전합니다.
  • 일정 시간(세션 유효 시간) 동안 유지되며, 클라이언트가 브라우저를 닫거나 세션이 만료되면 삭제됩니다.

4가지 scope(영역) 메모리 관련

  • 전역 (Global) 스코프: 프로그램의 모든 부분에서 접근 가능한 영역입니다. 전역 변수는 어디서든지 사용할 수 있지만, 프로그램의 생명주기 동안 메모리를 점유하므로 남용은 피해야 합니다.

  • 지역 (Local) 스코프: 변수가 선언된 블록 또는 함수 내에서만 접근 가능한 영역입니다. 해당 블록이나 함수가 실행될 때 생성되고, 실행이 끝나면 소멸합니다. 이렇게 함으로써 변수 충돌을 방지하고 메모리를 효율적으로 사용할 수 있습니다.

  • 인스턴스 (Instance) 스코프: 객체 지향 프로그래밍에서 객체의 속성으로 선언된 변수들이 해당 객체의 인스턴스 스코프에 속합니다. 즉, 객체가 생성될 때 변수가 초기화되고, 객체가 소멸하면 변수도 소멸합니다.

  • 블록 (Block) 스코프: 일반적으로 중괄호 {}로 둘러싸인 코드 블록 내에서 선언된 변수들은 해당 블록 스코프에 속합니다. 예를 들어, if 문이나 for 문 내에서 선언된 변수는 블록 스코프를 가지며, 블록을 벗어나면 해당 변수는 소멸합니다. 이를 통해 블록 밖에서의 변수 접근을 제한할 수 있습니다.

1개의 댓글

comment-user-thumbnail
2023년 7월 26일

공감하며 읽었습니다. 좋은 글 감사드립니다.

답글 달기