티스토리 뷰
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 |
- 20200319
- 20201204
- 20200502
- 20200406
- chapter7
- 20200427
- 20200428
- 백준
- 20200413
- 20200504
- 20200510
- 20200317
- 20200503
- 20200804
- 20200624
- 20200330
- likelion
- 20200415
- 20200622
- 20200423
- chapter8
- 20200420
- 생활코딩리눅스
- 20200424
- 20200512
- 20200417
- 20200421
- 20200425
- 20200403
- 20200429
- Total
- Today
- Yesterday