각진 세상에 둥근 춤을 추자

[JSP] Eclipse - Servlet4: GET 요청과 쿼리스트링 본문

JSP

[JSP] Eclipse - Servlet4: GET 요청과 쿼리스트링

circle.j 2022. 10. 23. 21:27

 

 

(이전 게시글)

2022.10.23 - [JSP] - [JSP] Eclipse - Servlet3: 출력 형식 이해 (한글 깨짐 해결)

 

[JSP] Eclipse - Servlet3: 출력 형식 이해 (한글 깨짐 해결)

(이전 게시글) 2022.10.23 - [JSP] - [JSP] Eclipse - Servlet2: Annotation URL 매핑 [JSP] Eclipse - Servlet2: Annotation URL 매핑 [이전 게시글] 2022.10.23 - [JSP] - [JSP] Eclipse - Servlet 1: 프로그램..

this-circle-jeong.tistory.com

 

사용자 입력 방식은 GET 방식과 POST 방식이 있다. 

 

클라이언트가 hello라는 문서를 요청하면 서버는 요청에 맞는 응답을 한다. 

https://localhost/hello

 

이때, hello에 추가적인 설정을 덧붙일 수도 있다. 이를 쿼리 스트링이라고 한다.

http://localhost/hello?key=value

ex)
// 3번만 반복 
http://localhost/hello?cnt=3

 

(Nana.java)

package com.circle.web;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


@WebServlet("/hi")
public class Nana extends HttpServlet {
	
	@Override
	public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		// 인코딩 방식 지정
		response.setCharacterEncoding("UTF-8");
		
		// 받는 Content Type 지정 (html 문서, UTF-8로 읽어라!)
		response.setContentType("text/html; charset=UTF-8");
		
		PrintWriter out = response.getWriter();
		
		int cnt = Integer.parseInt(request.getParameter("cnt"));
		
		for(int i=0; i<cnt; i++) {
			out.println((i+1)+": 안녕 Hello Servlet! <br/>");
		}
		
	}
}

 

실행 결과, cnt의 값을 지정하지 않았기 때문에 500 error가 발생한다.

 

주소창에 직접 cnt값을 지정해 준다.

http://localhost:8080/JSPProject/hi?cnt=3

 

실행 결과, 3번 반복되어 출력된다. 

 

cnt를 따로 주소창에 입력하지 않아도 사용할 수 있는 방법이 있다.

package com.circle.web;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


@WebServlet("/hi")
public class Nana extends HttpServlet {
	
	@Override
	public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		// 인코딩 방식 지정
		response.setCharacterEncoding("UTF-8");
		
		// 받는 Content Type 지정 (html 문서, UTF-8로 읽어라!)
		response.setContentType("text/html; charset=UTF-8");
		
		PrintWriter out = response.getWriter();
		
		// cnt를 확인하기 위해 임시 변수를 사용
		String temp_cnt = request.getParameter("cnt");
		int cnt = 10;
		
		/* http:// ... /hello?cnt=3 인 경우: temp != null
		 * http:// ... /hello?cnt= 경우: temp.equlas("")
		 */
		if(temp_cnt != null && !temp_cnt.equals("")) {
			cnt = Integer.parseInt(temp_cnt);
		}
		
		for(int i=0; i<cnt; i++) {
			out.println((i+1)+": 안녕 Hello Servlet! <br/>");
		}
		
	}
}

 

실행 결과, 코드에서 지정한 기본 cnt의 횟수 (int cnt=10;)만큼 출력된 것을 알 수 있다.