반응형
1. PRG(Post-Redirect-Get) 이란?
PRG(Post-Redirect-Get) 패턴은 웹개발에서 주로 사용되는 디자인 패턴의 하나로, 주로 중복제출 방지하기 위해 사용된다. 리다이렉트를 하지 않고 페이지를 새로고침 할 경우 가지고 있던 객체가 다시 전달되면서 중복 제출이 이루어질 수 있기 때문에 이를 초기화하고 새로운 url로 사용자를 전달한다.
2. PRG 패턴의 동작 방식
1. POST : 폼을 POST방식으로 서버에 요청
2. Redirect : 서버에서 요청을 처리후 클라이언트에 다른 URL로 리다이렉트 요청
3. GET : 새로운 URL을 GET요청을 통해 서버에 새로운 페이지를 요청
아래는 이미지는 회원가입을 PRG패턴으로 나타낸 예시이다.
3. 사용하는 이유
중복제출 방지
- PRG패턴의 가장 큰 장점은 중복제출을 방지에 있다. 리다이렉트를 진행하지 않고 forward 방식으로 리턴을 받을 경우 사용자가 새로고침을 진행하면 중복해서 폼이 제출되게 된다. 예를 들어 글쓰기 완료 후 새로고침을 한다면 동일한 글이 중복적으로 등록되는 경우가 발생할 수 있다는 것이다.
예시코드
다음은 회원가입을 진행하면 로그인 페이지로 이동하게 하는 코드를 간략히 나타냈다.
post(회원가입 정보) -> redirect(로그인 페이지) -> get(페이지 반환)
회원가입 서블릿
@WebServlet("/signup")
public class SignUpServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 폼 데이터 처리
// 회원가입 진행
// 회원가입 완료
// 리다이렉트
response.sendRedirect("/login");
}
}
로그인 서블릿
@WebServlet("/login")
public class TodoListController extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 로그인 페이지를 불러서 전달
request.getRequestDispatcher("/WEB-INF/todo/login.jsp").forward(request,response);
}
}
반응형
'Back-end > WEB' 카테고리의 다른 글
[WEB] 쿠키(Cookie)란? 자바로 쿠키 생성, 삭제, 읽기 방법은? (2) | 2024.07.05 |
---|---|
[Web] forward, redirect 방식의 의미와 차이 (0) | 2024.07.01 |
[Web] Servlet, Jsp란? (0) | 2024.06.25 |