티스토리 뷰

1. request 객체의 이해

 - 웹브라우저를 통해 서버에 어떤 정보를 요청하는 것을 request라고 함.

 - 이러한 요청 정보는 request객체가 관리

 

1-1 request객체 관련 메소드

 - getContextPath() : 웹어플리케이션의 컨텍스트 패스를 얻음

 - getMethod() : get방식과 post방식을 구분할 수 있음

 - getSession() : 세션 객체를 얻음

 - getProtocol() : 해당 프로토콜을 얻음

 - getRequestURL() : 요청 URL을 얻음

 - getRequestURI() : 요청 URI를 얻음

 - getQueryString() : 쿼리스트링을 얻음 

 

 

1) 소스코드

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>

	<%
		out.println("서버 : " + request.getServerName() + "<br />");
		out.println("포트 번호 : " + request.getServerPort() + "<br />");
		out.println("요청 방식 : " + request.getMethod() + "<br />");
		out.println("프로토콜 : " + request.getProtocol() + "<br />");
		out.println("URL : " + request.getRequestURL() + "<br />");
		out.println("URI : " + request.getRequestURI() + "<br />");
		
	
	%>

</body>
</html>

2) 웹브라우저 출력 결과

 - 브라우저를 통해 요청했으므로 GET방식

 - URI: 컨텍스트 패스 이하의 값들, 즉 도메인 주소를 제외한 이하의 값들

 

1-2 Parameter 메서드

 - request관련 메서드 보다 실제 많이 쓰이는 메서드 = parameter

 - Jsp페이지를 제작하는 목적이 데이터 값을 전송하기 위해서 이므로, parameter관련 메서드는 중요 

 - getParameter(String name) : name에 해당하는 파라미터 값을 구함. 

 - getParameterNames() : 모든 파라미터 이름을 구함. 

 - getParameterValues(String name) : name에 해당하는 파라미터 값들을 구함. 

 - 웹프로그래밍은 보여주기 위한 용도가 아니라, 서버와 정보를 주고 받는 용도로 쓰임 이럴 때, 어떤 정보를 주고 어떤 정보를 받는지 parameter 값을 통해 이동한다.

 

1) 로그인 창을 HTML파일로 만듬 

<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
	
	<form action="requestparam.jsp"method="post">
		이름: <input type="text" name="name" size="10"> <br/>
		아이디: <input type="text" name="id" size="10"> <br/>
		비밀번호: <input type="password" name="pw" size="10"> <br/>
		취미: <input type="checkbox" name="hobby" value="read">독서
		<input type="checkbox" name="hobby" value="cock">요리
		<input type="checkbox" name="hobby" value="run">조깅
		<input type="checkbox" name="hobby" value="swim">수영
		전공 : <input type="radio" name="major" value="kor">국어
		<input type="radio" name="major" value="eng">영어
		<input type="radio" name="major" value="mat">수학
		<input type="radio" name="major" value="des">디자인<br/>
		<select name="protocol">
			<option value="http">http</option>
			<option value="ftp" selected="selected">ftp</option>
			<option value="smtp">smtp</option>
			<option value="pop">pop</option>
		</select><br/>
		<input type="submit" value="전송">
		<input type="reset" value="초기화">
	
	</form>
</body>
</html>

2) 만들어진 로그인창에서 값을 전송하면 값을 받을 JSP페이지가 있어야함 

 - form을 통해 클라이언트로부터 입력된 정보는 request 메서드를 이용하여 JSP가 값을 받아온다

 

<%@page import="java.util.Arrays" %>
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
<%!
	String name, id, pw, major, protocol;
	String[] hobbys;
%>

<%
	request.setCharacterEncoding("EUC-KR");
	name = request.getParameter("name");
	id = request.getParameter("id");
	pw = request.getParameter("pw");
	major = request.getParameter("major");
	protocol = request.getParameter("protocol");
%>

이름 : <%= name %><br />
아이디 : <%= id %><br />
비밀번호 : <%= pw %><br />
취미 : <%= Arrays.toString(hobbys) %><br /> 
전공 : <%= major %><br />
프로토콜 : <%= protocol %><br />

</body>
</html>

3) JSP는 전송받은 값을 동적처리한다 (ex, DB에 ID가 있는지 확인하여 다음 서비스를 수행함)

 - 1)번 과정에서 받아온 값을 2)번 과정을 통해 처리하면 아래와 같이 값을 받아 온 것을 알 수 있다. 

 - 값을 받아왔을 뿐이지 아직 로직을 처리해서 다시 클라이언트에게 응답하는 과정이 아니다.

 

 

 

2. response 객체의 이해 

 - 웹브라우저의 요청에 응답하는 것을 response라고 하며, 이러한 응답(response)의 정보를 가지고 있는 개체를 response객체 라고 한다. 

 

2-1 request객체 관련 메서드

 - getCharacterEncoding() : 응답할 때 문자의 인코딩 형태를 구함.

 - addCookie(Cookie) : 쿠키를 지정함

 - sendRedirect(URL) : 지정한 URL로 이동.

 

2-2 sendRedirect 흐름도

1) HTML코드를 통한 사용자에게 보여지는 화면 구성

<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>

	<form action="request_send.jsp">
		당신의 나이는 : <input type="text"name="age" size="5">
		<input type="submit"value="전송">
	
	</form>
</body>
</html>

 

 

2) 사용자의 입력값을 요청받을 JSP파일 생성 

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>

<%!
	int age;
%>

<%
	String str = request.getParameter("age");
	age = Integer.parseInt(str);
	
	if( age >=20){
		response.sendRedirect("pass.jsp?age=" + age);
	}else{
		response.sendRedirect("ng.jsp?age=" + age);
		}

%>

<%= age %>

</body>
</html>

3) 2)번파일의 response.sendRedirect에 따라 로직을 처리할 파일로 이동 

 - age가 20 이상일 경우 pass.jsp파일에서 처리

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>

<%!
	int age;
%>

<%
	String str = request.getParameter("age");
	age = Integer.parseInt(str);
%>

성인 입니다. 주류구매가 가능 합니다

<a href="request_send.html">처음으로 이동</a>
</body>
</html>

4) 그 외에는 ng.jsp파일에서 처리

 

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>

<%!
	int age;
%>

<%
	String str = request.getParameter("age");
	age = Integer.parseInt(str);
%>

미성년자 입니다. 주류구매가 불가능 합니다

<a href="request_send.html">처음으로 이동</a>
</body>
</html>

'JSP > 인프런 JSP' 카테고리의 다른 글

11. 쿠키  (0) 2020.02.13
10. 액션태그  (0) 2020.02.12
8. JSP 본격적으로 살펴보기 -2  (0) 2020.02.07
7. JSP 본격적으로 살펴보기 -1  (0) 2020.02.05
6. Servlet 본격적으로 살펴보기 -4  (0) 2020.02.05
댓글