사용자가 서버에 웹 문서를 요청할 시에 추가적인 옵션을 넣을 수 있는데 이를 '쿼리스트링'이라 함
http://localhost:8080/hi?cnt=3 와 같이 쿼리스트링을 통해 cnt값을 전달하여 Get 요청을 보냄
package com.newlecture.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
protected void service(HttpServletRequest req, HttpServletResponse res)
throws IOException, ServletException {
// 사용자에게 보내는 방식을 결정
res.setCharacterEncoding("UTF-8");
// Content 해석 방식을 알려줌
res.setContentType("text/html; charset=UTF-8");
PrintWriter out = res.getWriter();
// 사용자 입력 cnt 파라메터를 가져옴
int cnt = Integer.parseInt(req.getParameter("cnt"));
for(int i = 0; i < cnt; i++) {
out.println((i + 1) + " : 안녕 Servlet <br>");
}
}
}
하지만 쿼리스트링이 없을 때 웹 페이지를 찾지 못하는 문제 발생 --> 기본값 설정
위와 같이 문자열이나 빈 문자열, 혹은 null로 값이 도달 함
따라서 null 이나 빈 문자열로 값이 입력되었을 때를 처리해주어야 함
package com.newlecture.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
protected void service(HttpServletRequest req, HttpServletResponse res)
throws IOException, ServletException {
// 사용자에게 보내는 방식을 결정
res.setCharacterEncoding("UTF-8");
// Content 해석 방식을 알려줌
res.setContentType("text/html; charset=UTF-8");
PrintWriter out = res.getWriter();
// 입력값을 임시 변수에 담아 둠
String cnt_ = req.getParameter("cnt");
int cnt = 10;
if(cnt_ != null && !cnt_.equals("")) {
cnt = Integer.parseInt(cnt_);
}
for(int i = 0; i < cnt; i++) {
out.println((i + 1) + " : 안녕 Servlet <br>");
}
}
}
임시 변수의 경우 이전에는 앞쪽에 '_'를 붙였으나 버전업되면서 불가능한 포맷이 됨
html 문서를 작성하여 'form' 태그 내 'input' 태그로 쿼리스트링을 작성하도록 만들수 있음
아래와 같은 포맷에 의해 hello가 붙은 URL로 이동하며 cnt 값은 3을 전달하게 됨
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Hi</title>
</head>
<body>
<div>
<form action="hi">
<div>
<label>"안녕"을 몇번 반복?</label>
</div>
<div>
<input type="text" name="cnt"/>
<input type="submit" value="출력"/>
</div>
</form>
</div>
</body>
</html>
자바 파일은 동일