-
[JSP] 프로젝트로 배우는 자바 웹 프로그래밍 6장-1 개념,실습Languages/jsp 2021. 10. 26. 16:44반응형
JSP 내장객체 개요
JSP 내장객체란?
JSP 내에서 선언하지 않고 사용할 수 있는 객체 라는 의미에서 붙여진 이름
JSP 내장객체
request
response
pageContext
session
application
out
config
page
exception
1. request 기본 객체
클라이언트 관련 정보를 request 기본 객체에 저장
-request 기본 객체가 제공하는 기능
클라이언트 웹 브라우저와 관련된 정보 읽기 기능
서버와 관련된 정보 읽기 기능
클라이언트가 전송한 요청 파라미터 읽기 기능
클라이언트가 전송한 요청 헤더 읽기 기능
클라이언트가 전송한 쿠키 읽기 기능
속성 처리 기능
[실습] request 객체를 이용하여 requestform 만들기
request_form.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> request 객체</title> <style> table, td {border: 1px solid black; padding:5px} </style> </head> <body> <div> <H2> request 테스트폼</H2> <HR> <form name=form1 method=post action="01request_result.jsp"> <table> <tr> <td>이름</td> <td><input type=text size=10 name=username></td> </tr> <tr> <td>직업</td> <td> <select name=job> <option selected>무직</option> <option>회사원</option> <option>전문직</option> <option>학생</option> </select> </td> </tr> <tr> <td>관심분야</td> <td> <input type=checkbox name=favorite value="정치">정치 <input type=checkbox name=favorite value="사회">사회 <input type=checkbox name=favorite value="정보통신">정보통신 </td> </tr> <tr> <td colspan=2 style="text-align:center"> <input type=submit value="확인"><input type=reset value="취소"> </td> </tr> </table> </form> </div> </body> </html>
request_result.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <% request.setCharacterEncoding("UTF-8"); %> <html> <head> <title>ch06 : request_result.jsp</title> </head> <body> <div align="center"> <H2> request 테스트 결과 - 1</H2> <HR> <table border=1 cellspacing="1" cellpadding="5"> <tr> <td> 이름 </td> <td><%=request.getParameter("username")%> </td> // request get파라메터 함수 사용 <tr> <td>직업</td> <td><%=request.getParameter("job")%></td> // request get파라메터 함수 사용 <tr> <td>관심분야</td> <td> <% String favorites[] = request.getParameterValues("favorite"); // request get파라메터 함수 사용 for(String favorite: favorites){ out.println(favorite+"<BR>"); } %> </table> <HR> <H2> request 테스트 결과 - 2</H2> <table border=0><tr><td> 1.클라이언트 IP 주소 : <%= request.getRemoteAddr() %> <br> //request getRemoteAddr 사용 2.요청 메서드 : <%= request.getMethod() %> <br> <% Cookie cookie[] = request.getCookies(); //request getcookies 사용 %> 3. <%= cookie[0].getName() %> 에 설정된 쿠키값 : <%=cookie[0].getValue() %> <br> 4. 프로토콜 : <%=request.getProtocol() %> </td></tr> </table> </div> </body> </html>
실행결과1
실행결과2
2. response 기본 객체
response 기본 객체가 제공하는 기능
헤더 정보 번달
쿠키 전달
리다이렉트 지정(중요)
-> 리다이렉트 지정
주요 소스코드 분석
forward 액션과 response.sendRedirect() 의 차이점
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% request.setCharacterEncoding("UTF-8"); %> <jsp:forward page="page_control_end.jsp"> //forward <jsp:param name="tel" value="000-000-0000" /> </jsp:forward> <% response.sendRedirect("page_control_end.jsp"); %> //response
forward 액션은 최종적으로 전달되는 페이지에 따라 파라미터를 함께 전달
sendRedirect()는 단순히 지전된 페이지로 최종 화면이 이동
forward 액션은 브라우저 url에 최초 요청된 페이지 url이 나타나고 sendRedirect()는
최종 전달된 페이지의 url이 표시된다.
redirect
1. a.jsp 요청 보냄
2.b.jsp로 리다이렉트하라고 지정함
3.b.jsp를 요청함
4.b.jsp 응답 // request 객체는 각 jsp에 2개씩 생성
forward
1. a.jsp
2. b.jsp로 포워드 하라고 지정함
3. b.jsp 응답 // request 객체는 각 jsp에 1개씩 생성
[실습] forward / response.sendRedirect() 비교
1. 03page_control.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Ich:06 page_control.jsp</title> </head> <body> <h2> forward, sendRedirect test</h2> <hr> <form method=post action="03forward_action2.jsp"> forward action : <input type=text name =username> <input type=submit value="확인"> </form> <form method=post action="03response_sendRedirect.jsp"> response.sendRedirect : <input type=text name=username> <input type=submit value="확인"> </form> </body> </html>
-> 아직은 액션이 없는 실행화면
2.03response_sendRedirect.jsp
<% response.sendRedirect("03page_control_end.jsp"); %>
3.03forward_action2.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <% request.setCharacterEncoding("UTF-8"); %> <jsp:forward page="03page_control_end.jsp"> <jsp:param name="tel" value="0000-000-0000" /> </jsp:forward>
4.page_control_end.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>ch06 : page_control_end.jsp</title> </head> <body> <div align="center"> <h2> forward action 및 sendRedirect() 결과</h2> <hr> 지금 보이는 화면은 page_control_end.jsp 에서 출력한 결과입니다. <hr> 이름 : <%=request.getParameter("username") %> <br> 전화번호 : <%=request.getParameter("tel") %> </div> </body> </html>
실행결과1
forward 결과
실행결과2
sendRedirect 결과
2 out 기본 객체
out은 출력 스트림으로써, 사용자 웹 브라우저로 출력하기 위한 내장 객체이다
jsp 페이지가 생성하는 모든 내용은 out 기본 갹체를 통해서 전송된다
out 기본 객체를 통해서 클라이언트에 내용이 전달된다
[실습] out 객체 이용하여 실습하기
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> out 객체 </title> </head> <body> <% String gradeStringA=" 10보다 크다"; String gradeStringB=" 5보다 크다"; int grade=7; if(grade>10) { out.println(gradeStringA); } else if(grade>5) { out.println(gradeStringB); } %> </body> </html>
실행결과
그 밖에 내장객체
cofig
서블릿이 최초로 메모리에 적재될 때 컨테이너는 서블릿 초기화와 관련된 정보를 읽고 javax.servlet.ServletConfig 객체에 저장한다.
config는 바로 ServletConfig 클래스에 대한 참조 변수로 web.xml 에 설정된 초기화 파라미터를 참조하기 위한 용도로 사용할 수 있다.
application
application은 웹 애플리케이션(컨텍스트) 전체를 관리하는 객체로 application 객체를 통해 각 서블릿이나 JSP에서 공유하려고 하는 각종 정보를 설정하고 참조할 수 있다
page
page는 JSP 컨테이너에서 생성된 서블릿 인스턴스 객체를 참조하는 참조 변수며,
JSP에서 자기 자신을 참조 할 때 사용된다
pageContext
pageContext는 javax.servlet.jsp.PageContext 인스턴스에 대한 참조 변수로, 다른 모든 내장객체에 대한 프로 그램적인 접근 방법을 제공한다.
exception
exception은 page 지시어에서 오류 페이지로 지정된 JSP 페이지에서 예외가 발생할 때 전달되는 java.lang.Throwable의 인스턴스에 대한 참조 변수다.
반응형'Languages > jsp' 카테고리의 다른 글
[JSP] 프로젝트로 배우는 자바 웹 프로그래밍 번외 페이지 모듈화 (0) 2021.10.26 [JSP] 프로젝트로 배우는 자바 웹 프로그래밍 6장-2 개념,실습 (0) 2021.10.26 [JSP] 프로젝트로 배우는 자바 웹 프로그래밍 3장 개념,실습 (0) 2021.10.26 [JSP] 프로젝트로 배우는 자바 웹 프로그래밍 5장 개념, 실습 (0) 2021.10.26 [JSP] 프로젝트로 배우는 자바 웹 프로그래밍 번외 계산기 만들기 (0) 2021.10.25