💾 내장객체 request
- 하나의 웹 브라우저 요청에 같은 요청을 공유하는 페이지가 대응
- 웹브라우저의 한번의 요청에 같은 request영역이면 두개의 페이지가 같은 요청을 공유할 수 있음,
request영역은 객체를 하나 또는 두개의 페이지에서 공유할 수 있다.
HttpServletRequest request = new HttpServletRequest(); //★내장객체 ,request로 관리한다. ★
Parameter는(요청한) 매개변수 인자 넘어오는것
★request에는 요청 정보가 담긴다.
Ex04_form.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
Ex04_form.jsp
<br>
<h2>이마트 상품 구매 내역</h2>
<FORM name="myform" METHOD="post" ACTION="Ex04_result.jsp">
<span>아이디 :</span> <INPUT TYPE="text" NAME="id"><br> <span>비번
:</span> <INPUT TYPE="text" NAME="pw"><br>
<p>
<span>구매상품:</span>
<!-- 보여지는 텍스트는 <label>또는 <span>사용해도 된다. -->
<input type="checkbox" name="product" value="식품">식품 <input
type="checkbox" name="product" value="의류">의류 <input
type="checkbox" name="product" value="도서">도서 <input
type="checkbox" name="product" value="가구">가구
<p>
<SELECT NAME="time">
<OPTION VALUE="선택">선택</OPTION>
<OPTION VALUE="9시~11시">9시~11시</OPTION>
<OPTION VALUE="11시~1시">11시~1시</OPTION>
<OPTION VALUE="1시~5시">1시~5시</OPTION>
<OPTION VALUE="5시~9시">5시~9시</OPTION>
</SELECT>
<p>
<span>결재방법:</span> 카드 <INPUT TYPE="radio" NAME="approve" VALUE="카드">
핸드폰 <INPUT TYPE="radio" NAME="approve" VALUE="핸드폰">
<p>
<span>결재 동의합니다. </span> <INPUT TYPE="checkbox" NAME="agree" id="agree">
<p>
<INPUT TYPE="submit" value="보내기">
</FORM>
Ex04_result.jsp
<%@page import="java.util.*"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
Ex04_result.jsp<br><br>
<%
request.setCharacterEncoding("UTF-8");
String id = request.getParameter("id");
String pw = request.getParameter("pw");
String[] productArr = request.getParameterValues("product");
String time = request.getParameter("time");
String approve = request.getParameter("approve");
String agree = request.getParameter("agree");
%>
<table border="1">
<tr>
<td>id</td>
<td><%=id %></td>
</tr>
<tr>
<td>pw</td>
<td><%=pw %></td>
</tr>
<tr>
<td>구매상품</td>
<td>
<%
if(productArr != null){
for(int i=0; i<productArr.length; i++){
out.print(productArr[i]+" ");
}
}
else{
out.print("구매상품 없음");
}
%></td>
</tr>
<tr>
<td>시간</td>
<td><%=time %></td>
</tr>
<tr>
<td>결재방법</td>
<td><%=approve %></td>
</tr>
<tr>
<td>결재동의</td>
<td><%
if(agree==null){
out.print("동의 안함");
}
else{
out.print("동의 함");
}
%></td>
</tr>
</table>
<br><br>
<table border="1">
<%
//import할때 마우스 올려놓고 컨드롤 스페이스
Enumeration<String> names = request.getParameterNames();
while(names.hasMoreElements()){
String name = names.nextElement();//names 안에 6가지 들어온다. id,pw,product,time,approve,agree
String[] nameArr = request.getParameterValues(name);
//체크박스를 선택하지 않으면, 실행시켰을때 아예 이름 자체가 넘어오질 않는다.
out.print("<tr>");
out.print("<td>"+name+"</td><td>");
for(int i=0; i<nameArr.length; i++){
out.print(nameArr[i]+" ");
}
out.print("</td><tr>");
}
%>
</table>
Enumertion :열거된 데이터를 담을 수 있는 타입
Enumeration<String> names = request.getParameterNames(); //name에 담긴 값이 아니고, name을 가져와라
변수 타입(=자료형)의 문제가 있다. Enumeration이라는 클래스(=자료형)를 import해주어야 한다.
Enumeration 인터페이스 메서드
hasMoreElements(); :읽어올 요소가 있는지 확인. 있으면 true, 없으면 false
nextElement(); : 다음 요소를 읽어온다.
Test_허보람.jsp
<body>
<h1>도서 정보 입력</h1>
<form name="myform" action="Result_허보람.jsp" method="post">
<table border=1>
<tr>
<td>제목</td>
<td><input type="text" name="title"></td>
</tr>
<tr>
<td>저자</td>
<td><input type="text" name="author">
</tr>
<tr>
<td>출판사</td>
<td><input type="text" name="publisher">
</tr>
<tr>
<td>가격</td>
<td><input type="text" name="price">
</tr>
<tr>
<td>입고일</td>
<td><input type="date" name="date">
</tr>
<tr>
<td>배송비</td>
<td>유료 <input type="radio" name="kind" value="유료">
무료 <input type="radio" name="kind" value="무료">
</tr>
<tr>
<td>구입가능 서점</td>
<td>교보문고 <input type="checkbox" name="bookstore" value="kyobo">
알라딘 <input type="checkbox" name="bookstore" value="aladin">
yes24 <input type="checkbox" name="bookstore" value="yes24">
인터파크 <input type="checkbox" name="bookstore" value="interpark">
</tr>
<tr>
<td>보유수량</td>
<td><select name="count" id="count">
<option value="선택" selected>선택
<option value="1">1
<option value="2">2
<option value="3">3
<option value="4">4
<option value="5">5
</select></td>
</tr>
</table>
<br>
<input type="submit" value="전송" onClick="return check()">
<input type="reset" value="취소">
</form>
Result_허보람.jsp
Test_허보람.jsp => Result_허보람.jsp<br>
<%
request.setCharacterEncoding("UTF-8");
String title = request.getParameter("title");
String author = request.getParameter("author");
String publisher = request.getParameter("publisher");
String price = request.getParameter("price");
String date = request.getParameter("date");
String kind = request.getParameter("kind");
String[] bookstoreArr = request.getParameterValues("bookstore");
String count = request.getParameter("count");
%>
<table border="1">
<tr>
<td>제목</td>
<td><%=title %></td>
</tr>
<tr>
<td>저자</td>
<td><%=author %></td>
</tr>
<tr>
<td>출판사</td>
<td><%=publisher %></td>
</tr>
<tr>
<td>가격</td>
<td><%=price %></td>
</tr>
<tr>
<td>입고일</td>
<td><%=date %></td>
</tr>
<tr>
<td>배송비</td>
<td><%=kind %></td>
</tr>
<tr>
<td>구입서점</td>
<td><%
if(bookstoreArr != null){
for(int i=0; i<bookstoreArr.length; i++){
out.print(bookstoreArr[i]+" ");
}
}
else {
out.print("구입가능한 서점 없음");
}
%></td>
</tr>
<tr>
<td>보유수량</td>
<td><%=count%></td>
</tr>
</table>
<br><br>
<table border="1">
<%
Enumeration<String> names = request.getParameterNames();
while(names.hasMoreElements()){
String name = names.nextElement();
String[] nameArr =request.getParameterValues(name);
out.print("<tr>");
out.print("<td>"+name+"</td><td>");
for(int i=0; i<nameArr.length; i++){
out.print(nameArr[i]+" ");
}
out.print("</td></tr>");
}
%>
</table>
💾 내장객체 response
- 웹 브라우저로 보낼 응답 정보를 저장하고 있는 객체
- 쿠키 정보 추가하기
- 페이지 리다이렉트 하기(다른 페이지로 이동) : response.sendRedirect("response2.jsp");
HttpServletResponse response =new HttpServletResponse();
form.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
form.jsp<br>
<form action="response1.jsp" method="post">
<input type="text" name="msg" value="hello"><p> <!-- msg(메세지) hello를 담는다 -->
<input type="submit" value="전송">
</form>
response1.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
form.jsp 요청 => response1.jsp<br><br>
<%
/* HttpServletRequest request = new HttpServletRequest(); */
// "요청"할때마다 request객체가 생성된다.
request.setCharacterEncoding("UTF-8");
String msg = request.getParameter("msg");
out.print("msg1: "+msg+"<br>");
System.out.println("msg2: "+msg);
// 내장객체 response
//HttpServletResponse response =new HttpServletResponse();
//response.sendRedirect("response2.jsp");
//웹브라우저에 출력생략(콘솔창에는 출력), 빠르게 "response2.jsp"로 이동한다.
response.sendRedirect("response2.jsp? msg="+msg);
//get방식 처럼 msg를 억지로 챙겨서 넘어간다.빠르게 "response2.jsp"로 이동
/* response
현재 페이지를 거쳐가는 페이지로 만들때
response.sendRedirect : 페이지 이동
response1과 response2는 request 객체 같이 쓰지 않는다. (공유 안함) */
%>
response2.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
response1.jsp 요청 => response2.jsp<br><br>
<%
request.setCharacterEncoding("UTF-8");
String msg = request.getParameter("msg"); //form의 정보가 담기지 않는다.
out.print("msg: "+msg+"<br>");
System.out.println("msg :"+msg);
%>
'BACK END > JSP' 카테고리의 다른 글
추가중)JSP 게시판 만들기 (0) | 2023.02.05 |
---|---|
1일(07.08) 내장객체 request (0) | 2022.07.28 |
1일(07.08) for문 / while문 (0) | 2022.07.11 |
1일(07.08) JSP /import /JSP태그 / 선언문/ 페이지 지시어 / 내장객체 out (0) | 2022.07.11 |
1일(07.08) JSP 설정 (0) | 2022.07.11 |