사용자로부터 입력받으려면 먼저 입력 form을 제공해야 한다.
form 안에는 입력을 받는 input과 전달하는 submit이 있다.
그리고 이 form을 통해 사용자로부터 받은 값을 처리할 uri로 보낼때는 get방식과 post방식으로 보내게 된다.
전체적인 흐름및 두 방식의 차이점에 대해 알아보자.
get방식인 경우 action 속성에 사용자로부터 받은 값을 처리할 uri을 작성을해주면, 이 uri로
name(키)과 cnt(값) 가지고 쿼리스트링으로 값을 넘겨주게 되는 것이다.
하지만 post방식의 경우 get처럼 정보가 드러나지 않는다.
그럼 action 속성으로 값을 처리해줄 url을 화면에 나타나게 할 수 있도록 servlet을 설정을 해줘야 할 것 같은 느낌이 들 것이다. 나는 아래와 같이 어노테이션을 통해 HiPrintServlet파일을 화면에 연결해주었다.
사용자로부터 받은 숫자 값만큼 '안녕하세요'를 반복해주기 위해서 아래와 같이 코드를 작성했다.
response.setCharacterEncoding("UTF-8");
get방식일 때는 적지 않아도 되지만 post방식일 때는 인코딩방식을 꼭 적어줘야 한다. 안그러면 한글이 깨진다.
response.setContentType("text/html; charset=UTF-8");
response객체를 이용해서 html 화면을 전달할 때 전달할 타입이 어떤 타입인지를 적어줘야한다.
request객체로부터 getParameter()메소드를 통해 사용자가 입력한 cnt(키)의 값을 받고 int로 형변환해준다.
후에 PrintWriter 객체를 통해 화면에 출력시켜준다.
지금은 간단히 안녕하세요만 출력했지만 여러가지 스타일이 들어간 여러 요소를 화면에 출력하고자 한다면 println()에 일일히 적어줘야 할 것이다.
정리해보면!
1. GET 방식
- URL에 데이터를 포함시켜 요청 (보안에 취약하다)
- 데이터를 HTTP Request Header에 포함하여 전송한다.
- GET 방식에서 바디는 보통 빈 상태로 전송 되며 헤더의 내용 중 Body 의 데이터를 설명하는 Content type 헤더필드도 들어가지 않는다.
- 전송할 수 있는 길이가 제한된다.
2. POST 방식
- URL 에 변수 데이터 를 노출하지 않고 요청 데이터를 HTTP Body 에 포함하여 전송한다.
- 헤더필드 중 Body 의 데이터를 설명하는 Content Type 이라는 헤더필드가 들어가고 어떤 데이터 타입인지 명시해주어야 한다.
- 전송하는 길이의 제한이 없다.
'Web > Backend' 카테고리의 다른 글
GSON & Ajax 비교 (0) | 2021.08.26 |
---|---|
Ajax란? (0) | 2021.08.25 |
[JSP] run server, javax.servlet import 오류 해결 (0) | 2021.08.09 |