1. 내장 객체(implicit object)
▷ JSP 페이지에서 사용할 수 있도록 JSP 컨테이너에 미리 정의된 객체
▷ JSP 페이지에서 서블릿 프로그램으로 번역될 때 JSP 컨테이너가 자동으로 내장 객체를
멤버 변수, 메소드 매개변수 등의 각종 참조 변수(객체)로 포함
▷ JSP 페이지에 별도의 import 문 없이 자유롭게 사용 가능
▷ 스크립틀릿 태그나 표현문 태그에 선언을 하거나 객체를 생성하지 않고도 직접 호출하여 사용 가능
◎ 내장 객체의 종류
◎ 속성 처리 메소드의 종류(request, session, application, pageContext)
◎ request 내장 객체
▷ JSP 페이지에서 가장 많이 사용되는 기본 내장 객체
▷ 웹 브라우저에서 서버의 JSP 페이지로 전달하는 정보를 저장
▶ 폼 페이지로부터 입력된 데이터를 전달하는 요청 파라미터 값을 JSP 페이지로 가져옴
▷ JSP 컨테이너는 웹 브라우저에서 서버로 전달되는 정보를 처리하기 위해 javax.servlet.http.HttpServletRequest
객체 타입의 request 내장 객체를 사용하여 사용자의 요구 사항을 얻어냄
◎ 요청 파라미터 관련 메소드
▷ 요청 파라미터는 사용자가 폼 페이지에 데이터를 입력한 후 서버에 전송할 때 전달되는 폼 페이지의 입력된 정보 형태를 말함
▷ 요청 파라미터는 <name=value> 형식으로 웹 브라우저에서 서버의 JSP 페이지로 전송
◎ 요청 파라미터 관련 메소드 종류
◎ 내장 객체 사용 : 요청파라미터 값 출력하기
1. request.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Implicit Objects</title> </head> <body> <form action="process.jsp" method="post"> <p> 이 름 : <input type="text" name = "name"> <input type="submit" value="전송"> </form> </body> </html> <!-- 출력 : 이 름 : 관리자 요청 정보 길이 : 32 클라이언트 전송 방식 : POST 요청 URI : /JSP0228/ch05/process.jsp 서버 이름 : localhost 서버 포트 : 8080 -->
이름 옆 빈칸에 원하는 입력 값을 작성하면 됩니다.
2. process.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Implicit Objects</title> </head> <body> <% request.setCharacterEncoding("utf-8"); String name = request.getParameter("name"); %> <p> 이 름 : <%= name %><br> 요청 정보 길이 : <%= request.getContentLength() %><br> 클라이언트 전송 방식 : <%= request.getMethod() %><br> 요청 URI : <%= request.getRequestURI() %><br> 서버 이름 : <%= request.getServerName() %><br> 서버 포트 : <%= request.getServerPort() %><br> </body> </html>
◎ 내장 객체 사용 예제 1(로그인 창 구현)
1. request01.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Implicit Objects</title> </head> <body> <form action="request01_process.jsp" method="post"> <p> <p> 아 이 디 : <input type="text" name = "id"> <p> 비밀번호 : <input type="text" name = "passwd"> <p> <input type="submit" value = "전송" /> </form> </body> </html>
2. request01_process.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Implicit Objects</title> </head> <body> <% request.setCharacterEncoding("utf-8"); String userid = request.getParameter("id"); String password = request.getParameter("passwd"); %> <p> 아이디 : <%= userid %> <p> 비밀번호 : <%= password %> </body> </html>
◎ form의 method 역할
▷ get : 입력문만 전송하기에 속도가 빠르지만 암호화가 되지않아 패킷의 손실이 발생할수있고 보안이 취약함
▷ post : 페이지를 암호화하여 전송하기때문에 속도는 느리지만 보안이 좋음
◎ 요청 HTTP 헤더 관련 메소드
▷ 웹 브라우저는 HTTP 헤더에 부가적인 정보를 담아 서버로 전송
◎ 요청 HTTP 헤더 관련 메소드 종류
◎ 내장 객체 사용 예제 2(모든 HTTP 헤더 정보 값 출력)
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="java.util.Enumeration" %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Implicit Objects</title> </head> <body> <% Enumeration en = request.getHeaderNames(); while(en.hasMoreElements()){ String headerName = (String) en.nextElement(); String headerValue = request.getHeader(headerName); %> <%=headerName %> : <%=headerValue %><br> <% } %> </body> </html> <!-- 출력 : host : localhost:8080 connection : keep-alive sec-ch-ua : "Chromium";v="110", "Not A(Brand";v="24", "Microsoft Edge";v="110" sec-ch-ua-mobile : ?0 sec-ch-ua-platform : "Windows" upgrade-insecure-requests : 1 user-agent : Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36 Edg/110.0.1587.57 accept : text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7 sec-fetch-site : none sec-fetch-mode : navigate sec-fetch-user : ?1 sec-fetch-dest : document accept-encoding : gzip, deflate, br accept-language : ko,en;q=0.9,en-US;q=0.8 cookie : JSESSIONID=9576D8D21D46B584FE768CD791CF8E37 -->
◎ 웹 브라우저/서버 관련 메소드
내장 객체는 스크립틀릿 태그나 표현문 태그에 선언을 하거나 객체를 생성하지 않고도 직접 호출하여 사용 가능합니다.
requset의 메소드를 이용하여 요청한 것들을 가져올 수 있습니다.
많은 분들의 피드백은 언제나 환영합니다! 많은 댓글 부탁드려요~~
'BackEnd > JSP' 카테고리의 다른 글
[JSP 웹 프로그래밍] 내장 객체 3 <javax> (out 내장 객체) (0) | 2023.03.01 |
---|---|
[JSP 웹 프로그래밍] 내장 객체 2 <javax> (response) (0) | 2023.03.01 |
[JSP 웹 프로그래밍] 액션 태그 2 <jsp:... /> (1) | 2023.03.01 |
[JSP 웹 프로그래밍] 액션 태그 1 <jsp:... /> (0) | 2023.02.27 |
[JSP 웹 프로그래밍] 디렉티브 태그 2 <%@ ... %> (0) | 2023.02.27 |