JSP

[JSP&Servlet] 서블릿의 데이터 통신, 쿼리 스트링

museong 2020. 10. 1. 14:34

⊙ 클라이언트에서 서블릿 클래스에 요청하는 방식 : get 방식과 post 방식

 

클라이언트의 브라우저에서 사용자로부터 다양한 정보를 입력받기 위해서 <form> 태그가 사용된다.

<form method="get/post" action="호출할서블릿">
  속성   설명
  method   어떤 방식으로 데이터를 넘겨 줄 것인지를 결정한다.
  get은 사용자가 입력한 결과를 알 수 있도록 내용을 공개한다.
  post는 사용자가 입력한 내용을 발송할 때 그 내용을 공개하지 않는다.
  action   전송(submit) 버튼을 누르면 action 속성 다음에 기술한 URL에 지정된 파일로 이동한다.

이들 내용이 웹 서버에 의해 처리될 수 있도록 method 속성에 어떤 방식으로 서블릿을 호출할지 기술하고 action 속성에 이동할 서블릿을 기술한다.

 

action 속성에 기술된 서블릿으로 데이터를 전송하기 위해서는 전송(submit) 버튼이 클릭되어야 한다.

또한 입력한 내용을 취소하고자 할 때에는 취소(reset) 버튼이 사용된다.

<input type="submit" value="전송">
<input type="reset" value="취소">

 

⊙ 서블릿 클래스에서 사용자가 입력한 값을 얻어오는 방법

 

쿼리 스트링 : 클라이언트와 서버 사이에 데이터가 전송되는 형태, 서버에서 클라이언트가 보낸 데이터를 얻어오기 위해 사용하는 기술로서 URL 주소 뒤에 입력 데이터를 함께 제공하는 방법으로 "리소스?이름=값" 형식을 가진다.

 

웹 프로그래밍에서 데이터가 쿼리 스트링 형태로 서버로 전송되고 이렇게 전송된 데이터를 얻어오기 위해서 쿼리 스트링에서 언급한 이름을 알아야 데이터를 얻어 올 수 있다. 즉 사용자가 입력한 값을 서버에서 얻어오려면 이름을 알아야 한다.

 

네이버 검색창에 JSP를 검색한 다음 주소 입력란에 나타난 내용을 보자.

https://search.naver.com/search.naver?sm=top_hty&fbm=1&ie=utf8&query=JSP
  • https://search.naver.com/search.naver : URL
  • sm=top_hty&fbm=1&ie=utf8&query=JSP : 쿼리 스트링

쿼리 스트링의 구조는 이름과 값으로 구성되어 있다.

sm=top_hty : 이름=값

& : 쿼리 스트링이 두개 이상일 경우 &로 쿼리 스트링 연결

fbm=1&ie=utf8 : 이름=값

& : 쿼리 스트링이 두개 이상일 경우 &로 쿼리 스트링 연결

query=JSP : 이름=값

 

쿼리 스트링의 URL 인코딩 규칙을 보면 영문자 대소문자와 숫자는 그대로 전달되면 공백은 +로 변환되어 전달되고 한글은 % 기호와 함께 16진수로 변환되어 전달된다.

 

데이터를 쿼리 스트링으로 전송하는 이유

페이지가 이동되어 버리면 이전 페이지의 값들은 모두 일게 되는데, 프로그램을 만들다 보면 페이지 사이에 정보교환이 필요한 경우가 있어서 이를 위해 웹 프로그래밍에서 제공하는 것이 쿼리 스트링이다.

 

서버로 데이터를 전송하기 위해서는 데이터를 입력할 수 있는 텍스트 박스가 필요하다.

<input type="text" name="텍스트 박스 이름">

텍스트 박스에 입력된 내용이 서버로 전달될 때에는 name 속성 값에 지정한 텍스트 박스의 이름에 실려 나간다.

전송 버튼을 클릭하면 브라우저 주소 입력란에 내용이 나타나는데 사용자가 입력한 값이 쿼리 스트링인 "이름=값" 형태로 서버 페이지에 전달되는 것을 확인할 수 있다. 즉 폼에서 입력 양식들을 작성시 태그의 name 속성 값이 쿼리 스트링의 이름에 해당되고 입력한 값이 바로 쿼리 스트링의 값에 해당된다.

 

⊙ 요청 객체(request)와 파라미터 관련 메소드(getParameter)

사용자가 폼에 입력한 값을 서블릿에서 어떻게 얻어오는지에 대한 방법으로 request 객체의 getParameter() 메소드를 호출하여 <input> 태그를 통해 입력된 값을 읽어 올 수 있다. 원하는 값을 얻기 위해서는 입력 양식의 name 속성값을 getParameter()의 매개 변수로 기술한다.

getParameter() 메소드는 파라미터 값을 항상 문자열(String) 형태로만 얻어온다.

만약 int형 변수에 저장하기 위해서는 Integer 클래스의 parseInt() 메소드를 사용한다.

String id = request.getParameter("id");
int age = Integer.parseInt(request.getParameter("age"));