[페이지 연결 방법]
HTTP 요청 및 요청 방식은 크게 아래와 같이 2가지가 있다.
1. get 2. post

1. get (doGet): 단순하게 페이지를 연결하는 방식.
- 데이터 전달보다 페이지 연결이 목적.
- 데이터는 request에 담지 않고 주소창에 붙여서 보냄. 그래서 많은 데이터를 보낼 수 없다.
- form 태그에서 method를 post로 지정하지 않으면 get (default) 방식으로 값 전달.
- get 방식일 때 servlet의 1) request line 2) header 3) body 는 아래와 같이 구성됨.

1) request line :method=get, 서블릿의 URL패턴(xml에 지정한 서블릿 url패턴) 정보가 담김.
2) header : 서버에 접속한 클라이언트의 정보
3) body :request 박스가 비어있기 때문에 비어있음.
2. post (post office) : 데이터 전달하고 서버(service)에서 처리한 결과를 받아오는 것이 목적.
- post 방식일 때 servlet의 1) request line 2) header 3) body는 아래와 같이 구성됨.
1) request line : method=get, "FS" 정보가 담김.
2) header : 서버에 접속한 클라이언트의 정보
3) body : request에 패킹한 정보가 body에 담김

[get 방식 한글 변환]
- get 방식에서 한글 처리는 서버에서 할 수 있다.
1) tomcat > conf > server 파일 열기. (에디터, 메모장 등 이용)

2) 63라인 쯤에 Connector executor에서 URIEncoding="utf-8"한글 encoding 하도록 설정한다.
- 여기서 port 번호도 임의로 설정할 수 있다. 8080(default) --> 8888(임의 변경).

위와 같이 처리를 해주면 get방식으로 전달할 때 한글 변환을 따로 하지 않아도 url에 값이 한글로 뜬다.



- servelet 14라인 request 한글 인코딩을 주석 처리해도 url에서 입력 값이 한글로 변환되어 전달된다. (server에서 인코딩 처리.)
- get방식은 request객체로 값을 전달하는 것이 아니라 주소창에 있는 key=value를 끌어와서 전달한다.
- get방식으로 정보 전달할 경우. 폼에 입력한 값을 주소창에 ? &..로 묶어서 보내는데, id와 password 등 개인정보를 담은 글이 그대로 노출된다.


[post 방식 한글처리]
반면, post 방식의 경우 request 객체에 값을 담아서 전달한다.

post 방식에서 request에 인코딩을 하지 않을 경우를 살펴보자.

post 방식이므로 url에 값이 붙지 않는다.

post 방식에서 request에 인코딩을 하지 않을 경우 한글로 입력한 값은 깨져서 나온다.

request인코딩 부분의 주석처리를 지우면 한글도 정상적으로 출력된다.


get방식은 server 파일에 인코딩 설정을 함으로써 request에 인코딩을 하지 않아도 한글로 값 전달이 가능하며
post 방식은 값을 주고, 받을 때 (request, response ) 모두 한글 처리가 필요하다.
실제로 작업을 할 때는 매번 값을 주고받을 때마다 한글 처리해야 하는 번거로움 때문에 filter로 처리한다.
filter 설정을 한 번만하면 그 후에 값 전달 시 따로 인코딩 처리가 필요 없다.
filter는 추후에 포스트 하기로 한다.
'Web Programming' 카테고리의 다른 글
| [Template] 홈페이지 템플릿 모음 (0) | 2020.07.04 |
|---|---|
| [Web Programming] 웹서버, WAS, Servlet, 컨테이너 구조 개괄 (0) | 2020.06.13 |
| [Web Programming ] Servlet 1. Servlet API(Generic/HTTP Servlet) (0) | 2020.06.03 |
| [Web Programming ] Servlet4. life cycle - load on startup (0) | 2020.06.03 |
댓글