1. parameter 메소드
- getParameter() : 요청 시 전달한 값을 getParameter() 로 추출 / input의 name
- getParameterMap() : 모든 데이터를 key, value 형태로 일괄 반환
package com.ohgiraffers.section01.querystring;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Arrays;
import java.util.Iterator;
import java.util.Map;
@WebServlet("/querystring")
public class QueryStringTestServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String name = req.getParameter("name");
System.out.println("이름 : " + name);
int age = Integer.parseInt(req.getParameter("age"));
System.out.println("나이 : " + age);
java.sql.Date birthday = java.sql.Date.valueOf(req.getParameter("birthday"));
System.out.println("생일 : " + birthday);
String gender = req.getParameter("gender");
System.out.println("성별 : " + gender);
String national = req.getParameter("national");
System.out.println("국적 : " + national);
System.out.print("취미 : ");
String[] hobbies = req.getParameterValues("hobbies");
String[] hobbies2 = req.getParameter("hobbies").split(", ");
for(String hobby : hobbies){
System.out.print(hobby + " ");
}
System.out.println();
Map<String, String[]> requestMap = req.getParameterMap();
Iterator<String> iterator = requestMap.keySet().iterator();
while(iterator.hasNext()){
String key = iterator.next();
String[] values = requestMap.get(key);
if(key.equals("name")){
System.out.print("이름 : ");
}else if(key.equals("age")){
System.out.print("나이 : ");
}else if(key.equals("birthday")){
System.out.print("생일 : ");
}else if(key.equals("gender")){
System.out.print("성별 : ");
}else if(key.equals("national")){
System.out.print("국적 : ");
}else if(key.equals("hobbies")){
System.out.print("취미 : ");
}
System.out.println(Arrays.toString(values));
}
}
}
- 요청 하는 JSP
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
<title>Parameter</title>
</head>
<body>
<h1>Request Parameter</h1>
<h3>GET 방식의 요청</h3>
<h4>form태그를 이용한 get 방식 요청</h4>
<form action="querystring" method="get">
<label>이름 : </label><input type="text" name="name">
<br>
<label>나이 : </label><input type="number" name="age">
<br>
<label>생일 : </label><input type="date" name="birthday">
<br>
<label>성별 : </label>
<input type="radio" name="gender" id="male" value="M"><label for="male">남자</label>
<input type="radio" name="gender" id="female" value="F"><label for="female">여자</label>
<br>
<label>국적 : </label>
<select name="national">
<option value="ko">한국</option>
<option value="ch">중국</option>
<option value="jp">일본</option>
<option value="etc">기타</option>
</select>
<br>
<label>취미 : </label>
<input type="checkbox" name="hobbies" id="movie" value="movie"><label for="movie">영화</label>
<input type="checkbox" name="hobbies" id="music" value="music"><label for="music">음악</label>
<input type="checkbox" name="hobbies" id="sleep" value="sleep"><label for="sleep">취침</label>
<br>
<input type="submit" value="GET 요청">
</form>
<h4>a태그의 href 속성에 직접 파라미터를 쿼리스트링 형태로 작성하여 get 방식 요청</h4>
<a href="querystring?name=홍길동&age=20&birthday=2021-01-08&gender=M&national=ko&hobbies=movie&hobbies=music&hobbies=sleep">쿼리스트링을
이용한 값 전달</a>
<h4>form태그를 이용한 post 방식 요청</h4>
<form action="formdata" method="post">
<label>이름 : </label><input type="text" name="name">
<br>
<label>나이 : </label><input type="number" name="age">
<br>
<label>생일 : </label><input type="date" name="birthday">
<br>
<label>성별 : </label>
<input type="radio" name="gender" id="male2" value="M"><label for="male2">남자</label>
<input type="radio" name="gender" id="female2" value="F"><label for="female2">여자</label>
<br>
<label>국적 : </label>
<select name="national">
<option value="ko">한국</option>
<option value="ch">중국</option>
<option value="jp">일본</option>
<option value="etc">기타</option>
</select>
<br>
<label>취미 : </label>
<input type="checkbox" name="hobbies" id="movie2" value="movie"><label for="movie2">영화</label>
<input type="checkbox" name="hobbies" id="music2" value="music"><label for="music2">음악</label>
<input type="checkbox" name="hobbies" id="sleep2" value="sleep"><label for="sleep2">취침</label>
<br>
<input type="submit" value="POST 요청">
</form>
</body>
</html>
2. formdata - post 방식
package com.ohgiraffers.section02.formdata;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
@WebServlet("/formdata")
public class FormDataTestServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println(req.getCharacterEncoding());
req.setCharacterEncoding("UTF-8");
String name = req.getParameter("name");
System.out.println("name = " + name);
Map <String, String[]> requestMap = req.getParameterMap();
Set<String> keySet = requestMap.keySet();
Iterator<String> keyIter = keySet.iterator();
while(keyIter.hasNext()){
String key = keyIter.next();
String[] value = requestMap.get(key);
System.out.println("key : " + key);
for (int i = 0; i < value.length; i++) {
System.out.println("value[" + i + "] : " + value[i]);
}
}
}
}