각진 세상에 둥근 춤을 추자
[JSP] Eclipse - Servlet4: GET 요청과 쿼리스트링 본문
(이전 게시글)
2022.10.23 - [JSP] - [JSP] Eclipse - Servlet3: 출력 형식 이해 (한글 깨짐 해결)
사용자 입력 방식은 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;)만큼 출력된 것을 알 수 있다.
'JSP' 카테고리의 다른 글
[JSP] Eclipse - Servlet6: 사용자 입력을 통한 POST 요청 (0) | 2022.10.23 |
---|---|
[JSP] Eclipse - Servlet5: 사용자 입력을 통한 GET 요청 (0) | 2022.10.23 |
[JSP] Eclipse - Servlet3: 출력 형식 이해 (한글 깨짐 해결) (0) | 2022.10.23 |
[JSP] Eclipse - Servlet2: Annotation URL 매핑 (0) | 2022.10.23 |
[JSP] Eclipse - Servlet 1: 프로그램 (0) | 2022.10.23 |