POST 방식 : GET 방식과는 다르게
주소 뒤에 전달하는 값이 붙는게 아닌,
HTTP Protocol의 Body 부분에 숨겨져서 전달되는 방식
- 장점 : 길이 제한이 없다(데이터 길이 제한X), 보안성 향상(데이터가 직접적으로 보이지 않음)
- 단점 : 캐싱 불가능, 추가적인 문자 인코딩 처리가 필요.
브라우저, 서버간의 문자 인코딩 차이 때문에
해결 방법 : 요청 정보에 담긴 데이터의 문자 인코딩을 UTF-8로 변경
req.setCharacterEncoding("UTF-8");
@WebServlet("/signUp")
public class ServletEx3 extends HttpServlet{
// doPost() : POST 방식 요청을 처리하는 메서드
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// POST 방식은 문자 데이터가 깨질 위험이 있음
// 왜? 브라우저, 서버간의 문자 인코딩 차이 때문에
// 해결 방법 : 요청 정보에 담긴 데이터의 문자 인코딩을 UTF-8로 변경
req.setCharacterEncoding("UTF-8");
// req => 요청 정보를 담아서 보냄 ( 클라이언트 -> 서버)
// resp => 응답 방식 ( 서버 -> 클라이언트 응답 방법)
// 파라미터 얻어와 변수에 저장
String inputId = req.getParameter("inputId");
String[] inputPw = req.getParameterValues("inputPw");
String inputEmail = req.getParameter("inputEmail");
String agree = req.getParameter("agree");
// 응답 데이터 문서 형식, 문자 인코딩 지정
resp.setContentType("text/html; charset=UTF-8");
PrintWriter out = resp.getWriter();
out.println("<!DOCTYPE html>");
out.println("<html>");
out.println("<head> <title> 회원 가입 결과 </title> </head>");
out.println("<body>");
if(inputPw[0].equals(inputPw[1])){
// 정상 가입한 경우에 대한 화면
// user01님 환영합니다
// 이메일 수신 동의 여부 : O // X
// 동의를 한 경우 밑에 email 띄워주기
// 수신할 이메일 : user01@gmail.com
out.printf("<h3>%s님 환영합니다</h3>", inputId);
// checkobx는 별도의 value가 없을 때,
// 체크 X : null
// 체크 O : "on"
if(agree != null) {
out.printf("<h3>이메일 수신 동의 여부 : O </h3>");
out.printf("<h3>수신할 이메일 : %s </h3>", inputEmail);
}else {
out.printf("<h3>이메일 수신 동의 여부 : X </h3>");
}
}else {
out.println("<h1 style='color : red;'>비밀번호가 일치하지 않습니다.</h1>");
}
out.println("</body>");
out.println("</html>");
}
}