<정보 입력 페이지>
처음 페이지에서 input 태그들을 통해 정보를 넘겨 받음
<컨트롤러(서블릿) 페이지>
정보들을 받아 차곡차곡 가공하기
request.getParameter("키값")
✔️ jsp의 input 태그에서 name 속성으로 받아온 값을 문자열로 넘김
✔️ request는 요청 시 전달값들을 뽑아서 처리하는 객체
✔️ 뽑은 값들은 request 객체의 parameter라는 영역 안에 사용자가 입력한 값들이 key-value 세트로 담겨 있음
(사용자 기준 name-value)
<li>나이: <input type="number" name="age"></li>
<li>키: <input type="range" name="height" min="140" max="200"></li>
<li>성별:
남자 <input type="radio" name="gender" value="M">
여자 <input type="radio" name="gender" value="F">
</li>
<li>키: <input type="range" name="height" min="140" max="200"></li>
<li>좋아하는 음식(모두 고르시오):
햄버거 <input type="checkbox" name="food" value="햄버거">
만두 <input type="checkbox" name="food" value="만두">
떡볶이 <input type="checkbox" name="food" value="떡볶이">
샐러드 <input type="checkbox" name="food" value="샐러드">
건포도라지무침 <input type="checkbox" name="food" value="건포도라지무침">
</li>
<li>
<input type="submit">
<input type="reset">
</li>
위의 jsp에서 나이는 20 / 키 170 / 성별은 여자 / 좋아하는 음식은 햄버거, 만두, 떡볶이를 선택했다면
int age = Integer.parseInt(request.getParameter("age");
// 20이 아닌 "20"이 담김(숫자가 아닌 문자열로 담김)
double height = Double.parseDouble(request.getParameter("height");
// 170이 아닌 "170.0"으로 담김
String gender = request.getParameter("gender");
// "여자"라는 value가 담김
String[] foods = request.getParameterValues("food");
// [햄버거, 만두, 떡볶이]의 꼴과 같이 배열로 담김
가공 끝
내가 정리한 정보들을 여기로 보낼 거야!
request.getReuqestDispatcher("jsp의 경로")
✔️ 나 대신 응답 페이지 좀 만들어 줘!
✔️ 기재한 경로로 응답 페이지를 나타내 줌
RequestDispatcher view = request.getRequestDispatcher("views/responsePage.jsp");
// 와 같이 응답 페이지 jsp를 지정하면서 객체 생성
근데 URL 주소 변동 없이 화면만 바꿔 줘!
forward(request, response)
✔️ URL 주소 변함 없이 화면만 바꿔치기
🔥 response는 요청을 처리 후 응답할 때 사용하는 객체
보내기 전에 잘 정리해 줄게
request.setAttribute("키", 밸류)
✔️ 키값은 String 고정이며, 밸류 값은 상관없음
request.setAttribute("age", age);
request.setAttribute("height", height);
request.setAttribute("gender", gender);
request.setAttribute("foods", foods);
// Object type으로 자동 upcasting 돼서 잘 들어간 꼴
<응답 페이지>
응답 페이지로 정보를 받기 위해서
request.getAttribute("키값")
✔️ Object 타입으로 넘겨져 오기 때문에 강제 형변환 해야 함
✔️ 상단의 스클립틀릿 <% %> 내에 기술할 것
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
// 이 구문을 스트립틀릿이라고 해서 html 문서 내에 JAVA 코드를 기술할 수 있는 영역
int age = (int)request.getAttribute("age");
double height = (double)request.getAttribute("height");
String gender = (String)request.getAttribute("gender");
String[] foods = (String[])request.getAttribute("foods");
System.out.println(age + "/" + height + "/" + gender + "/" + String.join(", ", foods));
%>
<!DOCTYPE html>
<html>
<%= 변수명 %>
✔️ 변수명만 쓰면 문자열로 인식함
<body>
<h2>개인정보 응답화면</h2>
<span id="age"><%= age %></span>살이며,
<span id=height><%= height %></span>cm이고,
성별은
<% if(gender == null) { %>
선택을 안 했습니다. <!-- case1 -->
<% } else { %>
<% if(gender.equals("M")) { %>
<span id="gender">남자</span>입니다. <!-- case2 -->
<% } else { %>
<span id="gender">여자</span>입니다. <!-- case3 -->
<% } %>
<% } %>
<br>
좋아하는 음식은
<% if(foods == null) { %>
없습니다. <!-- case1 -->
<% } else { %>
<ul>
<% for(int i=0; i <foods.length; i++) { %>
<li><%= foods[i] %> </li>
<% } %>
</ul>
<% } %>
</body>