8월 21일 Servlet & JSP
사용자의 요청 처리
사용자가 HTML 입력 화면을 통해 서버에 정보를 전달하면 서버에서는 사용자가 입력한 정보들을 추출하여 사용자가 원하는 작업을 처리한다.
쿼리 문자열
사용자가 서버에 전송하는 정보는 name=value 형태로 전달되는데, 이런 형태로 전달되는 데이터를 쿼리 문자열 이라고 한다. 쿼리 문자열은 HTTP요청 프로토콜의 start-line 이나 message-body 에 설정되어 전달된다.
*name = value 형식이며, 여러개의 정보를 전달하는 경우에는 &(앰퍼샌드)로 연결한다
*value에 해당하는 데이터가 영문이나 숫자 타입인 경우는 바로 전돨되지만, 한글이나 몇몇 특수 기호는 16진수로 변환되어 전달된다.
*공백은 +로 변환되어 전달된다.
요청 처리 메소드
사용자가 입력한 정보를 추출하기 위해서는 HttpServletRequest 객체가 제공하는 메소드를 사용해야 한다.
다음은 사용자가 입력 정보를 추출할 때 사용하는 메소드들이다.
getQueryString();
getParameter(String name);
getParameterValue(String name);
HttpServletRequest 객체는 서블릿의 service() 메소드가 호출될 때 인자로 전달된다. 따라서 service() 메소드에서는 HttpServletRequest 객체가 제공하는 메소드를 이용하여 사용자가 입력한 정보를 추출할 수 있다.
서블릿 작성
HttpServletRequest의 getParameter (String name)이나 getParameterValues (String name) 메소드를 사용해서 사용자가 입력한 정보를 추출하려면, 반드시 name에 해당하는 파라미터 정보가 쿼리 문자열에 포함되어야 한다.
파라미터 설정
모든 항목에 name 속성을 추가, 다만 라디오 버튼과 셀렉트 박스의 경우에는 사용자가 특정 아이템을 선택했을 때 서버에 전달할 값을 value 속성을 이용하여 전달하고 있음을 주의한다.
한글 인코딩
위에서 한글 데이터가 모두 깨지는 것을 볼 수 있다, 사용자가 입력한 한글 데이터를 인코딩하기 위해서는 사용자가 입력한 정보를 추출하기 직전에 인코딩을 처리해야 한다.
데이터베이스 연동
HttpServletResponse 객체의 sendRedirect(String redirectPage) 메소드는 응답을 받은 브라우저가 다시 한번 redirectPage로 지정한 요청(login.html)을 서버에 전달하도록 한다
따라서, 회원가입에 정상적으로 성공하면 로그인 화면으로 이동하는 것이다