영보의 SystemOut.log

[JSP] JSP 내장객체 메소드 활용 - request 메소드 /예제 본문

국비교육(아이티센 입사교육)/JSP

[JSP] JSP 내장객체 메소드 활용 - request 메소드 /예제

영보로그 2021. 10. 20. 11:41
반응형
자바/스프링 기반 디지털 융합 웹 개발자 양성과정

 

 

 

request 내장객체의 주요 메소드

메소드 내용
getMethod() 현재 요청이 GET, POST인지 확인하여 가지고 온다.
getParameter(name) 문자열 name과 같은 이름을 가진 인자 값을 가지고 온다.
getParameterValues(name) 문자열 name과 같은 이름을 가진 인자 값을 배열 형태로 가지고 온다.
Checkbox, multiple list 등에 주로 사용
[예] String favorite[] = request.getParameterValues(“favorite”);
getRemoteAddr() 클라이언트 IP 주소를 알려주는 메소드
getRequestURI() 웹 브라우저가 요청한 URL에서 “경로”를 구한다. 리턴타입은 String
getSession() 현재 요청과 관련된 session 객체를 리턴한다. 즉 session이 생성되어 있는 경우 생성된 session을 리턴하고 생성되어 있지 않은 경우 새롭게 session을 생성해서 리턴한다. 리턴타입은 HttpSession
getCookies() 모든 쿠키 값을 javax.servlet.http.Cookie의 ‘배열 형태’로 가지고 온다.
getProtocol() 현재 서버의 프로토콜을 문자열 형태로 알려준다
setChracterEncoding() 현재 JSP로 전달되는 내용을 지정한 캐릭터셋으로 변환한다. HTML form에서 한글을 입력할 때 정상적으로 처리하려면 반드시 필요하다
setContentType(type) 문자열 형태의 type에 지정된 MIME Type으로 ContentType을 설정
sendRedirect(url) 클라이언트 요청을 다른 페이지로 보낸다. 즉, 현재 페이지를 다른 페이지로 전달한다.

 

 

 

로그인 폼 예제 - getParameter, sendRedirect 사용

 

loginForm.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<form name="loginForm" method="POST" action="authentication.jsp">
		<label for="id">아이디 </label>
		<input type="text" name="id" />
		<br>
		<label for="pw">패스워드</label>
		<input type="password" name="pw" />
		<br><br>
		<input type="submit" value="로그인" />
	</form>
</body>
</html>

 

authentication.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!-- 추가 -->
<%  // 자바 코드 기술
	// 인증 기능 사용자 및 패스워드 목록 생성
	String[] users = {"park1234", "kim1677", "hong777"};
	String[] passwords = {"p456", "k7788", "1234"};
	
	String id = request.getParameter("id");
	String pw = request.getParameter("pw");
	
	// 인증  처리
	int i;
	for(i = 0; i<users.length; i++){
		if(users[i].equals(id) && passwords[i].equals(pw)){
			// 세션 값 등록하기
			session.setAttribute("signedUser", id);
			response.sendRedirect("welcome.jsp");
		}
	}
	if(i == users.length){
		out.println("<script>alert('아이디가 일치하지 않습니다.');history.go(-1);</script>");
	}
%>    
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>인증페이지</title>
</head>
<body>

</body>
</html>

 

welcome.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!-- 추가 -->
<%  // 자바 코드 기술
	// 인증된 세션이 없는 경우 해당 페이지를 볼 수 없게 함
	if(session.getAttribute("signedUser") == null ){
		response.sendRedirect("logout.jsp");
	}
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h1><%= session.getAttribute("signedUser") %>님 환영합니다.</h1>
	<a href="logout.jsp">로그아웃</a>
</body>
</html>

 

logout.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!-- 추가 -->
<%  // 자바 코드 기술
	// 1. 기존의 세션 데잍를 모두 삭제 (즉, 세션 무효)
	session.invalidate(); // 세션 무효화
	
	// 2. 로그인 페이지로 이동 
	response.sendRedirect("loginForm.jsp");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>로그아웃 페이지</title>
</head>
<body>

</body>
</html>

 

로그아웃 < 클릭 시 다시 login.jsp로 이동

 

 

 

 

request 텍스트 폼 예제 - getParameter(), getParameterValues(), getRemoteAddr(), getMethod(), getProtocol() 사용

 

requestForm.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>requestForm 페이지</title>
</head>
<body>
	<center>
	<h2>request 텍스트 폼</h2>
	<hr>
	<form name="myForm" method="POST" action="request_result.jsp">
		<table border="1" cellspacing="1" cellpadding="5">
			<tr>
				<td bgcolor="orange">이름</td>
				<td align="left"><input type="text" name="username"/></td>
			</tr>
			
			<tr>
				<td bgcolor="orange">직업</td>
				<td align="left">
					<select name ="job">
						<option value="">직업선택</option>
						<option value="프로그래머">프로그래머</option>
						<option value="회사원">회사원</option>
						<option value="교수">교수</option>
						<option value="공무원">공무원</option>
						<option value="회사원">회사원</option>
						<option value="기타">기타</option>
					</select>
				</td>
			</tr>
			
			<tr>
				<td bgcolor="orange">관심분야</td>
				<td align="center">
					<input type="checkbox" name="favorite" value="문화">문화</input>
					<input type="checkbox" name="favorite" value="여행">여행</input>
					<input type="checkbox" name="favorite" value="경제">경제</input>
					<input type="checkbox" name="favorite" value="정치">정치</input>
				</td>
			</tr>
			
			<tr>
				<td colspan="2" align="center">
					<input type="submit" value="확인">
					<input type="reset" value="다시쓰기">
				</td>
			</tr>
		</table>
	</form>
	</center>
</body>
</html>

 

request_result.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!-- 추가 -->
<% request.setCharacterEncoding("UTF-8"); %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>request_result 페이지</title>
</head>
<body>
	<h2>request 테스트 결과 - 1</h2>
	<hr>
	<table border="1" cellspacing="1" cellpadding="5">
		<tr>
			<td bgcolor="lime">이름</td>
			<td width="80"><%= request.getParameter("username") %></td>
		</tr>
		
		<tr>
			<td bgcolor="lime">직업</td>
			<td width="80"><%= request.getParameter("job") %></td>
		</tr>
		
		<tr>
			<td bgcolor="lime">관심분야</td>
			<td>
				<%
					String[] favorites = request.getParameterValues("favorite");
				
					for(int i=0; i<favorites.length; i++){
						out.println(favorites[i] + "<br>");
					}
				%>
			</td>
		</tr>
	</table>
	<hr>
	<h2>request 테스트 결과 -2</h2>
	<table border="0">
		<tr>
			<td>
			1. 클라이언트 IP 주소 : <%= request.getRemoteAddr() %><br>
			2. 요쳥 메소드 : <%= request.getMethod() %><br>
			3. 요청 프로토콜 : <%= request.getProtocol() %>
			</td>
		</tr>
	</table>
</body>
</html>

 

 

 

반응형