Chapter04 서블릿과 JDBC(3)

lej7122·2019년 6월 30일
0

Java-Web-Programming

목록 보기
6/7

요청 매개변수의 한글 깨짐 처리

@Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        req.setCharacterEncoding("UTF-8");
    }

HttpServletRequest의 setCharacterEncoding()은 매개변수 값의 인코딩 형식을 지정하는 메서드이다.

리프레시 - 자동으로 회원 목록을 출력하기(새로 고침)

1. 응답 헤더를 이용한 리프래시

MemberAddServlet 클래스의 doPost() 메서드에 다음과 같이 응답 헤더에 리프래시 정보를 추가한다.

resp.addHeader("Refresh", "1;url=list");

addHeader()는 HTTP 응답 정보에 헤더를 추가하는 메서드다. 'Refresh' 헤더의 값을 살펴보면 숫자 '1'은 응답 본문을 출력하고 나서 1초 뒤에 다시 서비스를 요청하라는 뜻이다. 이때 url은 다시 요청할 서비스 주소이다. URL이 '/'로 시작하지 않기 때문에 상대 경로로 계산된다. 현재경로가 /member/add 이니까 list의 최종 경로는 현재 경로를 기준으로 계산하여 /member/list가 된다.

2. HTML의 meta 태그를 이용한 리프레시

out.println("<meta http-equiv='Refresh' content='1; url=list'>");

리다이렉트

회원 정보를 등록하고 나서 그 결과를 출력하지 않고 즉시 회원 목록 화면으로 이동하게 해주는 방법이다.

리다이렉트 메서드 sendRedirect()

리다이렉트는 클라이언트로 본문을 출력하지 않기 때문에 HTML을 출력하는 코드를 모두 제거한다.

stmt.executeUpdate();
// HTML 코드 제거
resp.sendRedirect("list");

sendRedirect()에 넘기는 URL이 '/'로 시작하지 않기 때문에 상대 주소로 계산된다.

작업 결과를 출력하지 않고 즉시 다른 페이지로 이동하기를 원한다면 '리다이렉트'를 사용하고, 잠깐이나마 작업 결과를 출력하고 다른 페이지로 이동하기를 원한다면 '리프래시'를 사용하면 된다.

profile
개발자 블로그

0개의 댓글