1. ์ฟผ๋ฆฌ์คํธ๋ง์ด๋?
URL์ ๋ค์ ์ ๋ ฅ ๋ฐ์ดํฐ๋ฅผ ํจ๊ป ์ ๊ณตํ๋ ๊ฐ์ฅ ๋จ์ํ ๋ฐ์ดํฐ ์ ๋ฌ ๋ฐฉ๋ฒ์ด๋ค. ์น๊ฐ๋ฐ์์ ์นํ์ด์ง๋ ์ ํ๋ฆฌ์ผ์ด์ ์์ GET๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ ๋ ์ฐ์ธ๋ค. POST๋ฐฉ์์ ๋ณด์์์ค์ด ์๋์ ์ผ๋ก ๋์์ URL ์ ๋์ด๊ฐ๋ ๋ฐ์ดํฐ๊ฐ ํ์๋์ง ์๊ธฐ ๋๋ฌธ์ด๋ค.
URL์ ๋์ ?๋ก ์์ํ๊ณ , ๊ทธ ๋ค์ ํค-๊ฐ ์์ด ์ด์ด์ง๋ ๊ตฌ์กฐ์ด๋ค. ์ด๋ฅผ ํตํด ์๋ฒ์ ์ถ๊ฐ์ ์ธ ์ ๋ณด๋ฅผ ์ ๋ฌํ๋ค. ๊ฒ์์ฟผ๋ฆฌ๋ ํํฐ๋ง์ ์ฌ์ฉ๋๋ค.
๋ค์ด๋ฒ ๊ฒ์์ฐฝ์ '๋ฑ์ค'๋ฅผ ๊ฒ์ํ๊ณ ์ํฐ ์น๋ฉด ์ผ์ด๋๋ ์ผ โผ
URL ์ ?๊ฐ ์๊ธฐ๋ฉด์ ๋ด๊ฐ ์ ๋ ฅํ ๊ฒ์์ด '๋ฑ์ค'๊ฐ ๋์ ์ถ๊ฐ๋๋ค
๋ง์ฐฌ๊ฐ์ง๋ก ๊ตฌ๊ธ ๊ฒ์์ฐฝ์ '์ํฅ๋ฏผ'์ ์ ๋ ฅํ๊ณ ์ํฐ๋ฅผ ์น๋ฉด?
์๋์ฒ๋ผ ์ฃผ์์ฐฝ์์ url ๋ค์ ? ์ ๊ฐ์ข ๋ฐ์ดํฐ๊ฐ ๋ถ๋๋ค.
2. ๊ตฌ์กฐ
https://www.example.com/page?key1=value1&key2=value2&key3=value3
- ? : ์ฟผ๋ฆฌ ์คํธ๋ง์ ์์
- key1=value1 : key1์ด๋ผ๋ ์ด๋ฆ์ ๊ฐ์ง ํ๋ผ๋ฏธํฐ์ value1 ๊ฐ์ ์ ๋ฌ
- & : ํ๋ผ๋ฏธํฐ๊ฐ ์ฌ๋ฌ๊ฐ์ผ ๋ ๊ตฌ๋ถ์
- key2=value2 : key2๋ผ๋ ์ด๋ฆ์ ํ๋ผ๋ฏธํฐ์ value2 ๊ฐ์ ์ ๋ฌ
- ์ฌ๋ฌ ๊ฐ์ ํค-๊ฐ ์์ &๋ก ๊ตฌ๋ถํด์ ์ถ๊ฐ๋ก ๋์ด ํ ์ ์๋ค.
- ํ๋ผ๋ฏธํฐ์ ์์๋ ์ค์ํ์ง ์์ง๋ง, ๊ฐ ํ๋ผ๋ฏธํฐ์ ์ด๋ค ๊ฐ์ ์ ๋ฌํ ์ง ๋ช
ํํ ํด์ผ ํ๋ค.
- ์ฟผ๋ฆฌ ์คํธ๋ง์์ ํน์๋ฌธ์๋ ๊ณต๋ฐฑ์ URL ์ธ์ฝ๋ฉํด์ผ ํ๋ค.
์์
์๋์ ๊ฐ์ ๊ฒ์ ์ฟผ๋ฆฌ๊ฐ ์๋ค๊ณ ๊ฐ์ ํด๋ณด์
https://www.example.com/search?query=apple&page=2
- query=apple: ์ฌ์ฉ์๊ฐ ๊ฒ์ํ ๊ฒ์์ด๋ "apple"
- page=2: ํ์ด์ง ๋ฒํธ๋ 2๋ฒ
์ด ์ฟผ๋ฆฌ ์คํธ๋ง์ "apple"์ ๊ฒ์ํ๊ณ ๋ ๋ฒ์งธ ํ์ด์ง๋ฅผ ๋ณด์ฌ๋ฌ๋ผ๋ ์์ฒญ์ด๋ค
์ ์ฟผ๋ฆฌ์คํธ๋ง์์ cnt=์ซ์ ๊ฐ ๋ค์ด๊ฐ๋ฉด cnt์ 3๊ฐ์ด ๋ค์ด๊ฐ๋ค.
cnt = ์ ์๋ฌด๊ฒ๋ ์ ์ฐ๋ฉด "" ๋น ๋ฌธ์์ด
url ๋ค์ ์๋ฌด๊ฒ๋ ์๊ฑฐ๋ ?๋ง ์์ผ๋ฉด cnt ๋ณ์๋ null ๊ฐ ์ด๋ค.
์์
"/hi" ๊ฒฝ๋ก๋ก HTTP GET ์์ฒญ์ ์ฒ๋ฆฌํ๊ณ , ์์ฒญ ํ๋ผ๋ฏธํฐ "cnt"๋ฅผ ์ฟผ๋ฆฌ์คํธ๋ง์์ ์ฝ์ด์์ ๋ฐ๋ณต ํ์๋ฅผ ์ง์ ํ ํ "์๋
์๋ธ๋ฆฟ !!!" ๋ฉ์์ง ๋ฐ๋ณตํ์๋งํผ ์ถ๋ ฅํ๋ ์์ ์ฝ๋
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 request,
HttpServletResponse response) throws ServletException, IOException {
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset=UTF-8");
request.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)+ ": ์๋
์๋ธ๋ฆฟ !!! <br>");
}
}
}
์ ์ฝ๋๋ฅผ ์คํํ๋ฉด cnt๊ฐ null ์ด๊ธฐ ๋๋ฌธ์ HTTP์๋ต์ฝ๋ 500 ์๋ฌ๊ฐ ๋ฐ์ํ๋ค.
URL์ /hi?cnt=3 ์ผ๋ก ๋ฐ๊พธ๋ฉด ๋ฐ๋ณต๋ฌธ์ cnt ๊ฐ์ด 3์ผ๋ก ์ง์ ์ด ๋๋ฉด์
' (i+1) ์๋ ์๋ธ๋ฆฟ !!!' ๋ฌธ์์ด์ด 3ํ ๋ฐ๋ณต ์ถ๋ ฅ ๋๋ค.
Null ์ฒ๋ฆฌ ํ๋ ๋ฒ
์ด๋ ๊ฒ 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 request,
HttpServletResponse response) throws ServletException, IOException {
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset=UTF-8");
request.setCharacterEncoding("UTF-8");
PrintWriter out = response.getWriter();
String cnt_ = request.getParameter("cnt");
int cnt = 1; //cnt์ ๊ธฐ๋ณธ๊ฐ์ ์ค์
if(cnt_ != null && !cnt_.equals("")) //์ ๋ฌ๋ ๊ฐ์ด ์์ผ๋ฉด
cnt = Integer.parseInt(cnt_); //์ ๋ฌ๋ ๊ฐ์ผ๋ก ๋์ฒด
for(int i = 0; i< cnt; i++) {
out.println((i+1)+ ": ์๋
์๋ธ๋ฆฟ !!! <br>");
}
}
}
์ฃผ์๊ฐ /hi ์ผ๋ ๊ธ์๊ฐ 1๋ฒ ์ถ๋ ฅ๋๋ค.
๋์ cnt ๊ฐ์ผ๋ก ์ ๋ฌ๋ ๊ฐ์ด ์์ผ๋ฉด ๊ทธ ๊ฐ์ผ๋ก ๋์ฒด๋๋ค.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Nana.java</title>
</head>
<body>
ํ์ํฉ๋๋ค <br>
<a href = "hi"> ์ธ์ฌํ๊ธฐ </a><br>
<a href = "hi?cnt=3"> ์ธ์ฌ 3๋ฒํ๊ธฐ </a><br>
<div>
<form action="hi">
<div>๋ช๋ฒ ์ถ๋ ฅํ ๊น์??? </div>
<div>
<input type ="text" name = cnt />
<input type ="submit" value="์ถ๋ ฅ" />
</div>
</form>
</div>
</body>
</html>