BACK END/JSP

2일(07.11) 내장객체 request / 내장객체 response

라미보 2022. 7. 28. 01:34

 

 

💾 내장객체 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);
    %>