-
GET과 Query String프로그래밍/JSP 2021. 3. 24. 23:20
지난 시간에는
서블릿이라는 플랫폼api를 이용해 사용자에게 어떻게 출력할 것인가를 알아봤습니다.
그리고 출력시 주의 사항으로 인코딩 방식이나 한글이 깨지는 이런 것들도 있다는 것도 알아보았습니다.
이렇게 출력을 알아봤으니 입력도 알아보고자 합니다.사용자가 어떠한 값을 입력한다면 우리가 이 입력을 어떻게 처리할 것인가
사용자의 입력은 나에게 무언가를 요청할 때 요청하는 과정에서 입력이 이루어지게 됩니다.
입력과 요청은 땔수 없는 하나의 단위로 사용되게 되는데
이렇게 요청할때 전달되는 값을 우리가 어떻게 받을 것인가
이를 알아보고자 합니다.사용자 요청에는 get, post와 같은 요청이 있습니다.
이번에는 기본적인 GET에 대해 알아보고자 합니다.
기본적으로 사용자가 요청하는 것은 문서 입니다.
hello라는 문서를 요청하면 서버는 그 hello에 해당되는 응답을 하는 형식으로 문서를 돌려주게 되죠그런데 이 문서를 요청할때 추가적인 인자를 전달해줄 수 있습니다.
이런식으로 ?를 쓰고 키값에 해당되는 값을 전달할 수 있습니다. 이것을 두고 Query String(쿼리스트링) 이라고 합니다.
뭔가 달라고 하면서, 문서를 요청하면서 무언가를 전달할 수 있는 것 이지요.
예를들어
아이스 아메리카노 따뜻하게 주세요
페퍼로니 피자에서 페퍼로니 빼주세요
와 같이 달라는 요청에서 추가적인 옵션을 지정하는 것이죠. 일상뿐만이 아니라 웹에서도 적용이 됩니다.
서버쪽에서는 일괄적으로 정적인 문서를 주는 게 아니라 추가적으로 옵션을 읽어 그 옵션에 맞는 문서를 만들어 줘야합니다.
기존에 우리가 다루었던 코드는 100번의 반복을 하고 있었죠?뒤에 cnt=3을 붙임으로서
나는 100번은 싫고 3번만 반복해달라고 요청하는 것입니다.
서버는 이러한 요청에 반응할 수 있어야합니다.public class Hallo extends HttpServlet { @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setCharacterEncoding("UTF-8"); response.setContentType("text/html; charset=UTF-8"); PrintWriter out = response.getWriter(); int server_cnt = Integer.parseInt(request.getParameter("client_cnt")); for(int i=0; i<server_cnt; i++) { out.println((i+1)+":안녕! SerVlet!!<br />"); } } }
이 쿼리스트링을 서버를 구현하는 쪽에서 어떻게 활용하는지를 봐야하는데
cnt=3 이라고 쿼리값을 심어서 전달하면int server_cnt = Integer.parseInt(request.getParameter("client_cnt")); for(int i=0; i<server_cnt; i++) { out.println((i+1)+":안녕! SerVlet!!<br />"); }
이 쿼리 키워드를 읽을 수 있습니다 - getParameter("client_cnt")
클라이언트가 요청할때의 이 cnt라는 이름은 서버와 서로 약속이 되어 있어야 합니다.
서로의 합이 맞아야하죠서버는 그 키워드대로 값을 읽어서 거기에 맞는 결과를 만들어야하는데
int server_cnt =Integer.parseInt(request.getParameter("client_cnt"));
무조건 cnt를 읽지만 문자로 읽게됩니다. 그래서 지금 저희와 같은 경우에선 Integer.parseInt 를 사용해 정수형식으로 문자열을 변환해서 써야하죠
이렇게 해야 반복문을 지정할때 사용자가 지정한 cnt수만큼 반복문을 실행하게 됩니다.한번 실행해 볼까요?
오류가 뜹니다. 당연합니다. cnt를 모르니까
반복은 해야하는데 cnt가 지정이 안되있으니까요 그럼 넣어주겠습니다.
클라이언트와 서버를 구별되게 하려고 이름을 이렇게 지었습니다만 여러분은 그냥 cnt라고 다 통일하셔도 문제는 없습니다.
아무튼 cnt를 넣어주니 정상적으로 그 숫자만큼 반복하는 모습을 보여줍니다.
그런데 사용자가 저걸 일일히 심어줄게 아니잖아요?
cnt를 안심으면 어떻게 하느냐? 그래서 기본값이란걸 씁니다.
해당 내용은 다음시간에 알아보도록 하겠습니다.'프로그래밍 > JSP' 카테고리의 다른 글
POST요청 (0) 2021.04.08 GET요청 - 사용자 입력 (0) 2021.04.07 한글 출력 및 content형식 지정하기 (0) 2021.03.23 SerVlet(서블릿) 출력 형식을 지정해야하는 이유 (0) 2021.03.22 Annotation을 이용한 URL 맵핑 (0) 2021.03.09