JSP 내장 객체
- 클라이언트에서 웹 서버에 JSP 페이지를 요청하면 자동으로 생성
- 객체 생성하지 않고 바로 사용 가능
내장 객체 종류
- 입출력 : request / response / out
- 서블릿 : page /config
- 컨텍스트 : session / application / pageContext
- 예외 처리 : exception
용도 | 내장 객체 | 타입 (상속되는 클래스 또는 인터페이스) |
입출력 관련 | request | javax.servlet.http.HttpServletRequest 클라이언트의 요청 정보 전달 |
response | javax.servlet.http.HttpServletResponse 요청에 대한 처리 결과 응답 |
|
out | javax.servlet.jsp.JspWriter 클라이언트에 출력 스트림으로 출력 |
|
서블릿 관련 | page | javax.servlet.jsp.JspWriter 현재 JSP 페이지에 대한 클래스 정보 |
config | javax.servlet.ServletConfig JSPL 페이지에 대한 서블릿 초기화 환경 처리 |
|
컨텍스트 관련 | session | javax.servlet.http.HttpSession HTTP 세션 정보를 관리하는 객체 |
application | javax.servlet.ServletContext 애플리케이션에 관한 환경 정보 지원 |
|
pageContext | javax.servlet.jsp.PageContext JSP 페이지에 대한 정보를 저장하고 있는 객체 |
|
예외처리 | exception | java.lang.Throwable 예외 처리 |
request 객체
- 클라이언트(웹 브라우저)의 요청 정보를 전달하기 위한 객체
- 주로 클라이언트에서 전송된 쿼리 문자열, 쿠키 정보, 다른 페이지에서 전송된 값에 대한 정보 등을 추출할 수 있는 메소드 제공
request 메소드
- 클라이언트 요청 관련 메소드
- 파라미터 관련 메소드
- HTTP 헤더 관련 메소드
request 객체 예제 : request.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>request 객체</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>");
out.println("ContextPath : " + request.getContextPath() + "<br>");
out.println("ServletPath : " + request.getServletPath() + "<br>");
%>
</body>
</html>
request 객체 파라미터 관련 메소드
- 가장 많이 사용되는 중요한 메소드
- HTML 태그의 name 속성 값을 받음
메소드 | 설명 |
getParameter(String name) | name에 해당하는 파라미터 값 반환 |
getParameterValues(String name) | name에 해당하는 모든 값을 배열로 반환 |
getParameterNames() | 모든 파라미터 이름 반환 |
request 객체 파라미터 관련 메소드 예제
requestForm.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>회원가입 폼</title>
<style>
#id, #pwd { width: 100px;}
table { margin:0 auto; width:600px; }
</style>
</head>
<body>
<div id="wrap">
<h3 align="center">회원 가입</h3>
<hr>
<form id="newMemberForm" name="newMemberForm" method="post" action="requestFormOk.jsp">
<table>
<tr><td> 성명</td><td><input type="text" id="name" name="name"></td></tr>
<tr><td> ID</td><td><input type="text" id="id" name="id"></td></tr>
<tr><td>비밀번호</td><td><input type="password" id="pwd" name="pwd"></td></tr>
<tr><td>휴대폰 번호</td><td><input type="text" id="hp1" name="hp1" size="3">
- <input type="text" id="hp2" name="hp2" size="4">
- <input type="text" id="hp3" name="hp3" size="4"></td></tr>
<tr><td>학년</td><td><input type="radio" id="year1" name="year" value="1" >1학년
<input type="radio" id="year2" name="year" value="2">2학년
<input type="radio" id="year3" name="year" value="3">3학년
<input type="radio" id="year4" name="year" value="4">4학년</td></tr>
<tr><td>관심분야</td>
<td><input type="checkbox" id="web" name="interest" value="웹 프로그래밍">웹 프로그래밍
<input type="checkbox" id="design" name="interest" value="파이썬">파이썬
<input type="checkbox" id="bigdata" name="interest" value="빅데이터">빅데이터
<input type="checkbox" id="java" name="interest" value="자바">자바 프로그래밍</td></tr>
<tr><td>학과</td>
<td><select id="department" name="department">
<option value="">선택하세요</option>
<option value="경영학과">경영학과</option>
<option value="산업공학과">산업공학과</option>
<option value="경제학과">경제학과</option>
<option value="전자공학과">전자공학과</option>
<option value="컴퓨터학과">컴퓨터학과</option>
</select></td></tr>
<tr>
<td colspan="2" align="center">
<br><input type="submit" value="완료">
<input type="reset" value="취소">
</td>
</tr>
</table>
</form>
</div>
</body>
</html>
requestFormOk.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>request 객체 관련 메소드 예제</title>
</head>
<body>
<%!
// 선언부에 변수 선언 (스크립트릿에 선언해도 됨 (메소드 제외))
String name, id, pwd, hp, year, department;
String[] interest; // 체크박스
%>
<%
// 스크립트릿 영역
// 폼에서 전송된 데이터 받아서 변수에 저장
request.setCharacterEncoding("utf-8");
name = request.getParameter("name");
id = request.getParameter("id");
pwd = request.getParameter("pwd");
hp = request.getParameter("hp1") + "-" + request.getParameter("hp2") + "-" +request.getParameter("hp3");
year = request.getParameter("year");
interest = request.getParameterValues("interest");
department = request.getParameter("department");
%>
<!-- 변수에 저장된 값 출력 -->
이름 : <%= name %><br>
아이디 : <%= id %><br>
비밀번호 : <%= pwd %><br>
핸드폰 번호 : <%= hp %><br>
학년 : <%= year %>학년<br>
<!-- 배열은 for문 사용해서 각 요소 반복하여 출력 -->
관심분야 :
<%
for(int i=0; i<interest.length; i++) {
%>
<%= interest[i] + " " %>
<% } %>
학과 : <%= department %><br>
</body>
</html>
(+) 주의
데이터가 전송되지 않으면 String 변수는 오류 없이 null 값이 출력되지만
배열에서 index 참조할 때 NullPointer 오류 발생
response 객체
- JSP 페이지에서 처리한 결과를 웹 브라우저에게 응답할 때 사용
- 헤더 설정, 코드 상태, 쿠키 등의 정보 포함
- 응답 컨텐츠 설정, 응답 헤더 설정, 상태 코드 설정 등과 관련된 메소드 제공
메소드 | 설명 |
addCookie(Cookie) | 쿠키 지정 |
setContentType(type) | 웹 브라우저의 요청 결과로 보일 페이지의 contentType을 설정 |
sendRedirect(url) | 페이지 이동 |
[response 객체 예제]
response.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 method="post" action="responseOk.jsp">
대한민국의 수도는?
<input type="text" name="answer" size="10">
<input type="submit" value="전송">
</form>
</body>
</html>
responseOk.jsp 주의 : 자바 문자열 비교는 ==이 아닌 equals 사용
데이터 전달 받아서 작업 수행 후 결과를 sendRedirect()
맞으면 : pass.jsp로 sendRedirect()
틀리면 : fail.jsp로 sendRedirect()
<%@ 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>
<%
request.setCharacterEncoding("utf-8");
String answer = request.getParameter("answer");
// 받은 값이 '서울'이면 response.sendRedirect("pass.jsp")
// 아니면 response.sendRedirect("fail.jsp")
if(answer.equals("서울")) {
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"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
정답입니다!
</body>
</html>
fail.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>
오답입니다!
</body>
</html>
out 객체
- 웹 서버에서 웹 브라우저에게 출력 스트림으로 응답하기 위해 사용
- out.println(“출력 문자열”);
- 표현식(<%= 출력 문자열 %>)과 동일
(+) 주의 : 전송되는 데이터의 타입
- 모두 문자열 : String answer = request.getParameter("answer");
- 숫자 연산을 할 경우 숫자형으로 형변환 필요
- 방법 1 : Integer.parseInt(문자열 변수)
- 방법 2 : Integer.parseInt(answer)
- 방법 3 : int a = Integer.parseInt(request.getParameter("answer"))
데이터 형변환 예제
typeConversion.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 method="post" action="typeConversionOk.jsp">
사각형의 가로 길이 : <input type="text" name="width"><br>
사각형의 세로 길이 : <input type="text" name="height"><br>
<input type="submit" value="전송">
</form>
</body>
</html>
typeConversionOk.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>
<%
request.setCharacterEncoding("utf-8");
int width = Integer.parseInt(request.getParameter("width"));
int height = Integer.parseInt(request.getParameter("height"));
int area = width*height;
%>
사각형의 넓이 : <%= area %>
</body>
</html>
'Backend > JSP' 카테고리의 다른 글
scope : 스코프 우선순위 (0) | 2021.12.31 |
---|---|
JSP 발전 과정 및 표현 언어 : EL (Expression Language) (0) | 2021.12.31 |
액션 태그 (2) | 2021.12.30 |
JSP 제어문 (0) | 2021.12.30 |
JSP (Java Server Page) 기본 개념; 구조; 태그; 기본 구성 요소 (0) | 2021.12.30 |