* 본 글은 [뉴렉처]의 Servlet&JSP 프로그래밍 강의를 듣고 정리한 글입니다.
2020 Servlet&JSP 프로그래밍
www.youtube.com
사용자 입력: GET 요청과 쿼리스트링
GET 요청
- 무엇을 달라고 하는 요청에는 옵션이 있을 수 있음 > 옵션을 읽어 그에 맞는 문서를 만들어줘야 함
- 예: http://localhost/hello?cnt=3 를 브라우저 URL 입력창에 넣으면, hello를 3번 반복하는 웹문서 결과를 보여줌
- 이때 그 옵션을 ‘쿼리스트링(QueryString)’이라고 함
쿼리스트링(QueryStirng) (참고)
- 사용자가 입력한 데이터를 서버로 전달하는 가장 단순하고 널리 사용되는 방법
- URL 주소에 미리 협의된 데이터를 파라미터를 통해 넘기는 것
- 웹 프로그램에서는 현재 페이지의 정보를 바로 다음 페이지에서는 전혀 알 수 없으며, 페이지가 이동되면 이전 페이지의 값들은 모두 잃음
- But, 프로그램을 제작 시 페이지 사이에 정보 교환이 필요할 떄가 있는데 이를 위해 사용하는 게 ‘쿼리스트링’
- get방식으로 요청할 때 URL 주소 뒤에 입력 데이터를 함께 제공
- 브라우저 URL의 주소 입력란에서 확인 가능
- 형태: 리소스?이름=값
- ? 기호로 시작하며, = 기호를 중심으로 앞부분은 이름, 뒷부분은 값
- 쿼리스트링이 2개 이상: & 기호로 연결
- 같은 키가 중복될 경우, 가장 나중에 선언된 값을 취함
- 쿼리스트링 형태로 데이터가 전송되는 것은 <form>태그에 전송방식을 get으로 해 서버로 데이터를 보낼 때 관찰됨
- 서버로 데이터를 전송하기 위해서는 데이터를 입력할 수 있는 텍스트박스(<input type=”text”>)가 필요
- 텍스트박스: <input>태그에 type 속성값을 ‘text’로 설정
- 텍스트박스에 입력된 내용이 서버로 전달될 때 name 속성 값에 넣은 텍스트박스의 이름이 실려감
- <input type=”text” name=”이름”/>
요청객체(request)와 파라미터 관련 메소드(getParameter)
- 사용자가 폼에 입력한 값을 서블릿에서는 request객체의 getParameter( )메소드를 호출해 <input>태그를 통해 입력된 값을 읽어올 수 있음
- getParameter( )메소드: 쿼리스트링의 쿼리 키워드를 읽음. 클라이언트로 해당 키워드를 보낼 것을 서버가 알고 있게 함
- 서버는 키워드대로 값을 읽어서 맞는 결과를 만들어냄
- 원하는 값을 얻기 위해 <input>태그의 name 속성 값을 getParameter( )의 매개변수로 입력
- 예시: name 속성 값을 getParameter( )의 매개변수로 얻어 String 변수 id에 저장
//클라이언트에서 입력
<input type="text" name="id"/>
//서버
String id=request.getParameter("id");
- getParameter( )는 파라미터 값을 항상 String으로만 얻어옴
- 입력받은 문자열 값을 int형으로 변환하려면 Integer 클래스의 parseInt( )메소드 사용
int id = Integer.parseInt(request.getParameter("id");
쿼리스트링 값을 이용한 반복문 작성
- 1) 쿼리스트링을 int형 변수로 선언 및 초기화
- 입력도구 request객체의 getParameter( )메소드를 이용
- getParameter( )메소드: 쿼리스트링의 쿼리 키워드를 읽음. 클라이언트로 해당 키워드를 보낼 것을 서버가 알고 있게 함
- 서버는 키워드대로 값을 읽어서 맞는 결과를 만들어냄
- request.getParameter("cnt") 는 무조건 문자열로 전달되니까 String>int로 변환하는 Integer 클래스의 parseInt( )메소드 사용
- 입력도구 request객체의 getParameter( )메소드를 이용
- 2) 반복문 작성
- 반복문에 해당 키워드(cnt)를 삽입
protected void service(HttpServletRequest request
, HttpServletResponse response)
throws ServletException, IOException
{
response.setContentType("text/html; charset=UTF-8");
response.setCharacterEncoding("UTF-8");
PrintWriter out = response.getWriter();
**int cnt = Integer.parseInt(request.getParameter("cnt"));
for(int i = 0; i < cnt; i++) {
out.println((i+1) + ": 안녕 Servlet<br />");
}**
}
- 결과
-
- URL 작성할 때 쿼리스트링 값을 넣지 않으면 500 에러 발생
- 쿼리 값을 넣으면 정상적으로 실행 (예: http://localhost:8090/hi?cnt=3)
- 쿼리 값이 없어도 정상적으로 작동할 수 있게 기본 값을 사용
- URL 작성할 때 쿼리스트링 값을 넣지 않으면 500 에러 발생
'☕ Java 웹 프로그래밍 > Servlet & JSP' 카테고리의 다른 글
[Servlet&JSP] 사용자 입력: 사용자로부터 입력받은 값으로 GET 요청 (0) | 2023.05.24 |
---|---|
[Servlet&JSP] 사용자 입력: 기본 값 사용하기 (0) | 2023.05.24 |
[Servlet&JSP] 한글로 된 문서의 컨텐츠 형식 지정하기 (0) | 2023.05.24 |
[Servlet&JSP] Servlet 출력 형식의 이해 (0) | 2023.05.24 |
[Servlet&JSP] 어노테이션을 이용한 URL 매핑 (0) | 2023.05.23 |