[JSP] Request, Response 객체 / 아주아주 간단한 회원가입, 성적 입력 페이지 / request - 클라이언트 정보, 서버정보
Request 객체
-
웹브라우저를 통해 어떤 정보를 요청하는 것을 request라고 하는데, 이러한 요청 정보는 request 객체가 관리함
-
request 객체의 웹 브라우저, 웹 서버 및 요청 헤더 정보 관련 메소드
-
getContextPath() : 해당 JSP가 속한 웹어플리케이션의 컨텍스트 패스를 리턴
-
getMethod() : 웹 서버로 요청 시, 요청에 사용된 방식(GET, POST, PUT, ..)을 리턴
-
getSession() : 세션 객체를 리턴
-
getProtocol() : 사용 중인 해당 프로토콜을 리턴
-
getRequestURL() : 요청 URL을 리턴
-
getRequesetURI() : 요청에 사용된 URL로 부터 URI를 리턴
-
getQuieryString() : 요청에 사용된 쿼리 스트링을 리턴
-
-
request 객체의 요청 파라미터 관련 메소드
-
String getParameter(name) : 파라미터 변수 name에 저장된 변수를 얻음, 변수의 값은 String으로 리턴
-
String[] getParameterValues(name) : name에 저장된 모든 변수값을 얻음, 변수의 값은 String 배열로 리턴
-
getParameterNames() : 요청에 의해 넘어오는 모든 파라미터 변수를 java.util.Eumeration 타입으로 리턴
-
Response 객체
-
웹 브라우저의 요청에 응답하는 것을 response라고 하며, 이러한 응답 정보를 가지고 있는 객체를 response 객체라고 한다.
-
HTTP 응답 헤더 정보를 설정하거나, 쿠키 추가, 페이지 리다이렉트 등의 기능을 사용할 수 있다.
-
response 객체 관련 메소드
-
setHeader(String name, String value) : 헤더 정보의 값을 수정
-
response.setHeader("Pragma", "no-cache"); response.setHeader("Cache-Control", "no-cache"); /* => 서버에서 모든 내용을 새롭게 다운로드 받는 진정한 새로고침ㅋ */
-
-
setCharacterEncoding() : 응답할 때의 문자 인코딩 형태 설정
-
setContentType(type) : 요청 결과로 보일 페이지의 contentType 설정
-
addCookie(Cookie cookie) : 쿠키 지정
-
sendRedirect(String URL) : 지정한 URL로 이동
-
회원가입 페이지 만들기
-
join.html
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>회원가입</title> </head> <body> <form action="joinJsp.jsp" method="post"> 이름 : <input type="text" name="name" size=10 required="required"> <br><br> 아이디 : <input type="text" name="id" size=10 required="required"> <br><br> 비밀번호 : <input type="password" name="pw" size=10 required="required"> <br><br> 관심 언어 : <input type="checkbox" name="interest" value="java">JAVA <input type="checkbox" name="interest" value="python">Python <input type="checkbox" name="interest" value="js">JavaScript <input type="checkbox" name="interest" value="c">C <br><br> 이메일 수신 여부 : <input type="radio" name="email" value="y" checked="checked">예 <input type="radio" name="email" value="y">아니오 <br><br> <select name="route"> <option value="opt1">주위의 소개</option> <option value="opt2" selected="selected">인터넷 검색</option> <option value="opt3">기타</option> </select> <br><br> <input type="submit" value="가입하기"> <input type="reset" value="다시 입력하기"> </form> </body> </html>
-
joinJsp.jsp
<%@page import="java.util.Arrays"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>회원가입 결과</title> </head> <body> <% String name, id, pw, email, route; String[] interest; %> <% request.setCharacterEncoding("UTF-8"); name = request.getParameter("name"); id = request.getParameter("id"); pw = request.getParameter("pw"); email = request.getParameter("email"); route = request.getParameter("route"); interest = request.getParameterValues("interest"); %> 전송받은 이름 : <%=name %> <br> 전송받은 아이디 : <%=id %> <br> 전송받은 비밀번호 : <%=id %> <br> 전송받은 이메일 수신 여부 : <%=email %> <br> 전송받은 가입 경로 : <%=route %> <br> 전송받은 관심 언어 : <%= Arrays.toString(interest) %> <br> <button type="button" onclick="history.back()">되돌아가기</button> </body> </html>
-
실행결과
성적 입력 받아 합격/불합격 알려주기
-
GET 방식
-
score.html
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>점수 입력</title> </head> <body> <form action="scoreRes.jsp" method="get"> 이름 : <input type="text" name="name" size="10"> <br> <br> 점수 : <input type="number" name="score" size="10"> <br> <br> <input type="submit" value="합격여부 확인하기"> </form> </body> </html>
-
scoreRes.jsp
<%@ page import="java.net.URLEncoder"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% request.setCharacterEncoding("UTF-8"); String name = request.getParameter("name"); int score = Integer.parseInt(request.getParameter("score")); String encodeName = URLEncoder.encode(name, "UTF-8"); %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>합격 여부 확인</title> </head> <body> <% if(score < 0 || score > 100){ out.print("0에서 100 사이의 숫자만 입력 가능합니다."); out.print("<br><a href='score.html'>점수 다시 입력하기</a>"); return; } %> <% // 점수에 따른 페이지 이동 if(score >= 70) { response.sendRedirect("pass.jsp?name=" + encodeName + "&score=" + score); } else { response.sendRedirect("fail.jsp?name=" + encodeName + "&score=" + score); } %> </body> </html>
-
pass.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% request.setCharacterEncoding("UTF-8"); String name = request.getParameter("name"); String score = request.getParameter("score"); %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>합격</title> </head> <body> <h1><%=name %>님은 <%=score %>점으로 합격하셨습니다. 🎉👏</h1> </body> </html>
-
fail.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% request.setCharacterEncoding("UTF-8"); String name = request.getParameter("name"); String score = request.getParameter("score"); %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>불합격</title> </head> <body> <h1> <%=name %>님은 <%=score %>점으로 불합격하셨습니다. 😥 </h1> </body> </html>
-
실행결과
-
-
POST 방식
-
score.html
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>점수 입력</title> </head> <body> <form action="scoreRes.jsp" method="post"> 이름 : <input type="text" name="name" size="10"> <br> <br> 점수 : <input type="number" name="score" size="10"> <br> <br> <input type="submit" value="합격여부 확인하기"> </form> </body> </html>
-
scoreRes.jsp
<%@ page import="java.net.URLEncoder"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% request.setCharacterEncoding("UTF-8"); String name = request.getParameter("name"); int score = Integer.parseInt(request.getParameter("score")); String encodeName = URLEncoder.encode(name, "UTF-8"); %> <% pageContext.getSession().setAttribute("name", name); String strScore = request.getParameter("score"); pageContext.getSession().setAttribute("strScore", strScore); %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>합격 여부 확인</title> </head> <body> <% if(score < 0 || score > 100){ out.print("0에서 100 사이의 숫자만 입력 가능합니다."); out.print("<br><a href='score.html'>점수 다시 입력하기</a>"); return; } %> <% // 점수에 따른 페이지 이동 if(score >= 70) { response.sendRedirect("pass.jsp"); } else { response.sendRedirect("fail.jsp"); } %> </body> </html>
-
pass.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% request.setCharacterEncoding("UTF-8"); %> <% String name = (String)pageContext.getSession().getAttribute("name"); String score = (String)pageContext.getSession().getAttribute("strScore"); %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>합격</title> </head> <body> <h1><%=name %>님은 <%=score %>점으로 합격하셨습니다. 🎉👏</h1> </body> </html>
-
fail.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% request.setCharacterEncoding("UTF-8"); %> <% String name = (String)pageContext.getSession().getAttribute("name"); String score = (String)pageContext.getSession().getAttribute("strScore"); %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>불합격</title> </head> <body> <h1> <%=name %>님은 <%=score %>점으로 불합격하셨습니다. 😥 </h1> </body> </html>
-
실행결과
-
클라이언트 정보 및 서버 정보 보기
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Request Client Information</title>
<style>
td:first-child {
font-size: 20px;
font-weight: bold;
text-align: right;
}
td:last-child {
font-size: 20px;
padding-left:25px;
}
</style>
</head>
<body>
<h1>Request Client Information</h1>
<table>
<tbody>
<tr>
<td>프로토콜</td>
<td><%=request.getProtocol() %></td>
</tr>
<tr>
<td>서버 이름</td>
<td><%=request.getServerName() %></td>
</tr>
<tr>
<td>서버 포트 번호</td>
<td><%=request.getServerPort() %></td>
</tr>
<tr>
<td>사용자 컴퓨터 주소</td>
<td><%=request.getRemoteAddr() %></td>
</tr>
<tr>
<td>사용자 컴퓨터 이름</td>
<td><%=request.getRemoteHost() %></td>
</tr>
<tr>
<td>전달방식 (method)</td>
<td><%=request.getMethod() %></td>
</tr>
<tr>
<td>URL</td>
<td><%=request.getRequestURL() %></td>
</tr>
<tr>
<td>URI</td>
<td><%=request.getRequestURI() %></td>
</tr>
<tr>
<td>접속 브라우저</td>
<td><%=request.getHeader("User-Agent") %></td>
</tr>
<tr>
<td>브라우저 파일 지원 형식</td>
<td><%=request.getHeader("Accept") %></td>
</tr>
</tbody>
</table>
</body>
</html>