Servlet / JSP #05 Get Request

underlier12·2020년 1월 23일
0

SERVLET&JSP

목록 보기
5/16

05. Get Request

쿼리스트링

사용자가 서버에 웹 문서를 요청할 시에 추가적인 옵션을 넣을 수 있는데 이를 '쿼리스트링'이라 함

쿼리스트링 값을 이용한 반복문

http://localhost:8080/hi?cnt=3 와 같이 쿼리스트링을 통해 cnt값을 전달하여 Get 요청을 보냄

Nana.java

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 이나 빈 문자열로 값이 입력되었을 때를 처리해주어야 함

Nana.java

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>");
		}
	}
}

임시 변수의 경우 이전에는 앞쪽에 '_'를 붙였으나 버전업되면서 불가능한 포맷이 됨

사용자 입력을 통한 Get 요청

html 문서를 작성하여 'form' 태그 내 'input' 태그로 쿼리스트링을 작성하도록 만들수 있음

아래와 같은 포맷에 의해 hello가 붙은 URL로 이동하며 cnt 값은 3을 전달하게 됨

html 문서 생성

<!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>

자바 파일은 동일

profile
logos and alogos

0개의 댓글