JSP Servlet (D-98)

최우정·2022년 5월 10일
0

100일

목록 보기
3/17
post-thumbnail

📒 클라이언트에서 서블릿으로 요청하는 방식

웹, 클라이언트에서 서블릿으로 요청하는 방식은 대표적으로 GETPOST 두 가지 방식이 있다.

✏️ GET 방식

사용 방식 : <a href = "list.jsp?PageNo=2">[2]</a>

GET 방식으로 요청이 전송되는 경우

1. 브라우저 주소 표시줄에 주소를 직접 입력해 전송

2. HTML의 a 태그를 사용해 링크를 걸어 전송

<a href="lsit.jsp">목록보기</a>

3. HTML 폼 태그에서 method 속성을 GET으로 지정

<form action="" name="" method="get">

✏️ POST 방식

단순하게 특정한 페이지를 요청하는 것이 아니라 특정 페이지로 많은 양의 파라미터를
전송하여 파라미터에 관한 처리를 할 때 POST방식으로 요청을 전송

사용 방식 : <form name="" action="" method="post">

📒 서블릿을 이용한 클라이언트에서 전송되는 요청 처리 (GET 방식)

Form 태그를 이용한 GET 방식의 요청 처리

✏️ a. 웹 프로젝트 생성 : Chapter3 (Dynamic Web)

선택하면 web.xml 생성이 된다.

✏️ b. Form 태그를 이용한 GET 방식의 요청 처리

GET 방식으로 요청이 전송되어 올 경우 최종적으로 goGET(HttpServletRequest request,
HttpServletResponse response) 메소드가 호출된다.

서블릿에서 제공되는 메소드 중 HttpServletRequest 인터페이스에서 제공되는 String getParameter(String name) 메소드가 존재하는데, 이 메소드는 name 이라는 이름으로 전송되어 온 파라미터 값을 반환해주는 메소드이다.

✏️ c. 클라이언트 login.html 파일 만들기



✏️ d. 클라이언트 login.html 파일 작성

✏️ e. 서블릿 만들기

새로운 서블릿 파일을 만든다.

Class Name은 LoginServlet으로 한다.

-> web.xml 설정에서 <servlet-class> 항목에 설정되는 값이다.

URL mapping 항목을 변경한다.
-> web.xml 설정에서 <url-pattern> 항목의 내용으로 설정되는 부분이다.

클라이언트 폼 태그의 요청 경로가 login(<form action="login">)으로 설정되어 있으므로
URL mapping 값을 /login으로 수정한다.

본 예제에 요청 방식이 GET 방식이므로 "Which method stubs would you like to create?" 부분의 체크 박스에서 doGet 메소드만 체크한 후 Finish 버튼을 클릭한다.

(기본적으로 goPost 항목도 체크되어 있지만, 지금은 필요 없으므로 선택하지 않는다.)

JSP 2.3은 서블릿 설정이 web.xml 보다는 어노테이션(Annotaition) 기반을 우선 제공하고 있으므로 @WebServlet("/login") 코드가 자동으로 생성된다.

이 부분은 http://localhost:8088/Chapter3/login 으로 요청이 전송되어 오면 해당 서블릿 클래스에서 요청을 처리하겠다는 의미이다.



자동으로 추가된 코드는 무시하고, goGet 부분에 코드를 작성하여 마무리하자.
(에디터 번호에 X 표시가 나오면 해당 메소드를 import하여 추가해 준다.)

✏️ f. 결과 확인하기


📒 서블릿을 이용한 클라이언트에서 전송되는 요청 처리 (POST 방식)

POST 방식으로 요청이 전송되어 올 경우

POST 방식으로 요청이 들어올 경우 goGet이 아닌 doPost 메소드에서 요청이 처리된다.

✏️ a. 클라이언트 페이지 코딩

✏️ b. 서블릿 페이지 코딩

✏️ c. 결과 확인


📒 서블릿에서 한글 처리하기 (GET 방식)

톰캣의 URL 인코딩 방식이 UTF-8 방식이므로 GET 방식으로 요청 시 한글이 제대로 처리가 되려면 클라이언트의 페이지 인코딩 방식이 UTF-8 방식이어야 한다.

이클립스를 이용해 html 페이지나 jsp 페이지를 생성할 때 이클립스에 지정된 기본 인코딩 방식이 euc-kr 방식이므로 한글이 제대로 인식이 되도록 하려면 html 페이지와 jsp 페이지의 인코딩 방식을 UTF-8로 지정하고 작업하는 것이 편리하다.



✏️ a. 한글 처리용 클라이언트 페이지 만들기

✏️ b. 한글 처리용 서블릿 페이지 만들기

✏️ c. 결과 확인


📒 서블릿에서 한글 처리하기 (POST 방식)

POST 방식으로 요청이 전송되어 올 경우 요청 파라미터 값이 요청 body 영역에 따로 인코딩 되어 넘어 오기 때문에 URL Encoding 설정만으로는 한글이 제대로 설정되지 않는다.

클라이언트에서 POST 방식으로 전송되어 온 한글 파라미터 값을 제대로 처리하려면 request 객체의 setCharacterEncoding 메소드를 사용하여 request 객체의 body 영역의 인코딩 방식을 변경해야 한다.

✏️ a. 한글 처리용 클라이언트 페이지 만들기

hangul.html 페이지의 코드 내용에서 form 태그의 method 속성을 POST로 변경한다.

✏️ b. 한글 처리용 서블릿 페이지 만들기

✏️ c. 결과 확인


✏️ d. 해결 방법

서블릿 페이지 doPost 부분을 아래와 같이 변경해준다.

결과 창에서 아래와 같이 정상적으로 나오는 것을 확인할 수 있다.

profile
비전공자 Java, JavaScript, Html, Css, C++ 공부중

0개의 댓글