
리다이렉트(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