국비교육(아이티센 입사교육)/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>
반응형