리다이렉트(Redirect)
- 과정
→ 브라우저가 페이지를 요청
→ 서버가 응답
리다이렉션을 지시하기 위해 헤더에 Location 키를 사용
그 값으로 '/main'을 전달
→ 브라우저가 응답을 받음
헤더확인) HTTP 상태 코드 : 302
임시적인 리다이렉션이 일어났음을 알림
→ 브라우저는 302 상태 코드를 확인
헤더의 Location 값을 확인하여 새로운 주소로 이동해야 함을 확인
브라우저가 302를 보고 로케이션에 정보를 담아준 것을 확인
→ 브라우저는 새로운 주소로 재요청
→ 해당 주소에 대한 서버의 응답을 받음
300번대에는 다양한 리다이렉션 상태 코드
- 장점
- 또 안 만들어도 됨
- 있는 것을 재사용할 수 있음
package com.example.userapp.user; import jakarta.servlet.ServletException; import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import java.io.BufferedReader; import java.io.IOException; @WebServlet("/join") public class JoinServlet extends HttpServlet { @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setHeader("Content-type", "text/html; charset=utf-8"); //헤더에 바디를 설명 // username=ssar&password=1234&email=ssar@nate.com // BufferedReader br = req.getReader(); // String requestBody = ""; // while(true){ // String line = br.readLine(); // // if(line == null) break; // // requestBody = requestBody + line; // } // System.out.println(requestBody); // 1. 파싱 쉽게 하기 -> 커퍼에 키값을 찾아줌 String username = req.getParameter("username"); String password = req.getParameter("password"); String email = req.getParameter("email"); System.out.println("username : " + username); System.out.println("password : " + password); System.out.println("email : " + email); // 2. 유효성 검사(1000줄 정도 됨...) if(username.length() < 3 || username.length() > 10) { // 필터링으로 사용 resp.getWriter().println("<h1>username 글자수가 3~10 사이여야 합니다."); } // 3. DB연결 -> DAO에 연결하기 위함 // 4. DAO의 insert 메서드를 회출 // 5. 메인 페이지 그리기 // 6. 리다이렉트 : 내가 요청한 주소를 자기 안에 있는 다른 것을 응답해주는 것 resp.sendRedirect("/main"); // 톰캣이 만들어준 메서드 } }
- 프로토콜에 없는 정도 같이 담기 → 응답 없음
- HTTP 상태 코드 : 302
package com.example.userapp.user; import jakarta.servlet.ServletException; import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import java.io.BufferedReader; import java.io.IOException; @WebServlet("/join") public class JoinServlet extends HttpServlet { @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setHeader("Content-type", "text/html; charset=utf-8"); //헤더에 바디를 설명 // username=ssar&password=1234&email=ssar@nate.com // BufferedReader br = req.getReader(); // String requestBody = ""; // while(true){ // String line = br.readLine(); // // if(line == null) break; // // requestBody = requestBody + line; // } // System.out.println(requestBody); // 1. 파싱 쉽게 하기 -> 커퍼에 키값을 찾아줌 String username = req.getParameter("username"); String password = req.getParameter("password"); String email = req.getParameter("email"); System.out.println("username : " + username); System.out.println("password : " + password); System.out.println("email : " + email); // 2. 유효성 검사(1000줄 정도 됨...) if(username.length() < 3 || username.length() > 10) { // 필터링으로 사용 resp.getWriter().println("<h1>username 글자수가 3~10 사이여야 합니다."); } // 3. DB연결 -> DAO에 연결하기 위함 // 4. DAO의 insert 메서드를 회출 // 5. 메인 페이지 그리기 // 6. 리다이렉트 : 내가 요청한 주소를 자기 안에 있는 다른 것을 응답해주는 것 //resp.sendRedirect("/main"); // 톰캣이 만들어준 메서드 resp.setStatus(302); resp.setHeader("Location", "/main"); // 헤더에 정보 담기 resp.setHeader("clock", "12pm"); // 프로토콜이 없어서 안뜸 } }
Share article