본문 바로가기

BackEnd/JSP

[JSP 웹 프로그래밍] 내장 객체 1 <javax> (request)

728x90
반응형

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의 메소드를 이용하여 요청한 것들을 가져올 수 있습니다.

 

많은 분들의 피드백은 언제나 환영합니다!  많은 댓글 부탁드려요~~

 

728x90
반응형