POST 방식

gotcha!!·2023년 3월 20일
0

Servlet

목록 보기
3/5

POST 방식

POST 방식 : GET 방식과는 다르게
주소 뒤에 전달하는 값이 붙는게 아닌,
HTTP Protocol의 Body 부분에 숨겨져서 전달되는 방식
- 장점 : 길이 제한이 없다(데이터 길이 제한X), 보안성 향상(데이터가 직접적으로 보이지 않음)
- 단점 : 캐싱 불가능, 추가적인 문자 인코딩 처리가 필요.

POST 방식은 문자 데이터가 깨질 위험이 있음

브라우저, 서버간의 문자 인코딩 차이 때문에

해결 방법 : 요청 정보에 담긴 데이터의 문자 인코딩을 UTF-8로 변경

req.setCharacterEncoding("UTF-8");

EX)

@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>");
		
		
		
		
		
	}
	



}
profile
ha lee :)

0개의 댓글