[Java 풀스택 과정 강의] 3월 20일

부트캠프 일지/Java 풀스택 과정 강의
2026.03.20
※ TIL와는 별개로 적는 개인 개발 일지라서 말은 좀 편하게하는 페이지입니다.
일지이기 때문에 일기의 성격이 더 강합니다.

 

 

포워딩

포워딩이란, 서블릿 프로그래밍에서 서블릿끼리 혹은 서블릿과 JSP 사이에 연동 작업이 필요할 때의 기능이다. redirect와 refresh 등의 방법이 있으며, 우리는 여기에 추가로 dispatch를 배웠다. 각 방식에 대해서는 다음과 같다.

 

Redirect 리다이렉트

엄밀히 말하면 리다이렉트는 포워딩과는 다르지만 같이 넣어놓았다. 클라이언트가 요청을 보내면 서버는 상태 코드(3xx)와 함께 새로운 URL을 응답으로 보낸다. 브라우저는 이 응답을 받고 새로운 URL로 다시 접속한다.

 

새로운 요청이 발생하는 것이므로 기존의 request 객체 데이터는 사라진다. response.sendRedirect('url') 의 명령어를 사용한다.

 

 

Refresh 리프레시

Refresh는 응답(response) 헤더 정보로서, 일정 시간이 지난 후 페이지를 다시 불러오거나 다른 페이지로 이동시키는 방식이다. 브라우저가 헤더의 Refresh 값을 읽고, 지정된 시간이 지나면 스스로 새로운 요청(GET 방식)을 보내는 원리이다.

 

Redirect와 마찬가지로 기존의 request 객체 데이터는 사라진다.  response.addHeader("Refresh","초;url"); 처럼 사용한다.

 

 

Dispatch 디스패치

정확히 디스패치는 포워딩객체로서, RequestDispatcher 라는 클래스를 사용한다. 좁은 의미에서의 포워딩은 바로 이 디스패치를 이용한 방식으로, 위 둘과 다르게 URL이 변하지 않아, 별도 명시하지 않으면 사용자는 페이지가 이동했는지 알 수 없다.

 

기존의 request와 response 객체를 그대로 넘겨주기 때문에 데이터를 공유할 수 있다. RequestDispatcher dispatch = request.getRequestDispatcher("url");로 생성 후, dispatch.forward(request, response);처럼 사용한다.

 

 

 

바인딩

데이터 바인딩이라고도 한다. 백엔드 프로그래밍- 정확히는 Servlet 환경에서는 데이터를 묶어 특정 영역(Scope)에 저장하는 방식이다. 주로 setAttribute(key, value)를 사용하며, 불러올 때는 getAttribute(key)를 사용한다. Scope에 따른 차이는 이번 시간에는 배우지 않았기 때문에(실 수업에서는 page 단위로 scope하였다) 다루지 않는다.

 

주의할 점은 getAttribute를 사용할 때는 저장된 값을 Object 타입으로 반환하기 때문에, 명시적으로 형변환해줘야 한다.

 

 

JDBC 조회

다음 시간에 이어서하게 될 텐데, 여기서도 MVC를 사용하게 되는데, 그건 다음 시간에 다룬다. 이번에 JDBC에서 핵심적인 것은 바로 VO이다. VO는 Value Object의 준말로, 쉽게 말해 데이터를 담는 바구니라고 말할 수 있다. request.setAttribute("id", "hong"), setAttribute("name", "홍길동") 이런 식으로 하나하나 지시어를 적는 것은 불편하기 때문에, VO라는 바구니 안에 넣어 한꺼번에 전달하고자 하는 것이다.

 

이 VO는 실제로 java에서는 DTO와 비슷한 존재로, 둘이 혼용되어 사용되기도 한다. 따라서 DTO처럼 Private 필드를 사용하고, Getter와 Setter로 이루어져 있다.

 

public class MemberVO {
    private String id;
    private String pwd;
    private String name;
    private String email;

    public MemberVO() {

    }

    public MemberVO(String id, String pwd, String name, String email) {
        this.id = id;
        this.pwd = pwd;
        this.name = name;
        this.email = email;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getPwd() {
        return pwd;
    }

    public void setPwd(String pwd) {
        this.pwd = pwd;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }
}