본문 바로가기
프로그래밍 공부/JSP

[lesson] JSP - 내장객체

by Luna_lua 2023. 1. 10.
반응형

객체화 없이 사용할 수 있는 객체이며, JSP파일이 서블릿으로 변환될 때 웹 컨테이너가 자동으로 메모리에 할당하며 제공한다.

문법 내용
request 웹 브라우저의 요청 정보를 저장
response 웹 브라우저 요청에 대한 응답 정보 저장
out JSP페이지 body에 출력할 내용 작성 시 사용
session 하나의 웹 브라우저의 정보를 유지하기 위한 세션 정보를 저장
pageContext JSP 페이지에 대한 정보를 저장 (상대경로가 안될때 절대 경로 관련 정보가 있다)
exception JSP 페이지에 예외가 발생한 경우 사용되는 객체 (오류 발생 시 오류 관련 객체가 담긴다.)

 

//Main Source
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>내장 객체 예제</title>
</head>
<body>

	<form action="object_ok.jsp" name="join" method="post">
		<fieldset>
			<legend>개인정보</legend>
			<input type="text" name="name"> <input type="date"
				name="birthday">
			<!-- onclick을 쓴다는건 전송전에 확인해야할게 있다. -->
			<input type="button" value="확인" onclick="send()">
		</fieldset>
	</form>
</body>
<script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
<script>
	
	$("input[name='name']").on("click",function(){
		$(this).removeArrt('style');
		$(this).removeattr('placeholder');
	});

	$("input[name='birthday']").on("click",function(){
		$(this).removeArrt('style');
	});
	
    // 버튼이 서브밋이 아니라는 의미는 전송을 판단후에 진행하겠다는 의미
    // 아래의 작업으로 입력이 안되어있으면 적으라고 표현할 것!
	function send() {
		var frm = document.join;

		if (frm.name.value == "") {
			$("input[name='name']").css('border-color', 'red');
			$("input[name='name']").attr('placeholder', '성함을 입력하세요');
			return;
		}

		if (frm.birthday.value == "") {
			$("input[name='birthday']").css('border-color', 'red');
			return;
		}
		
		frm.submit();
	}
</script>
</html>


// 받은 내용을 표현
<%@ 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 예제</title>
</head>
<body>
	<table>
		<tr>
			<th>이름</th>
			<th>생일</th>
		</tr>
		
		<tr>
			<td><%=request.getParameter("name") %></td>
			<td><%=request.getParameter("birthday") %></td>
		</tr>
	</table>
</body>
</html>

 

+) request와 response.redirect로 데이터 주고 받기

★Point! 데이터를 주고 받다가 문제가 생겼을때 해결 방법!

<%request.setCharacterEncoding("UTF-8");%>

위의 내용으로 request의 캐릭터 포맷을 맞춰준다. 

그방법도 안된다면 URL 인코딩을 맞춰준다.

 

예제

// Main Source
<%@ 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>
<!-- test2로 입력한 이름 전달하기 -->
<form action="test2.jsp" method="post">
	<input type="text" name="name">
	<button>전송</button>
</form>
<%-- <%=request.getParameter("name") %>--%>
<!-- null이 아닐때에만 출력 -->
<%
	String name = request.getParameter("name");

	if(name != null){
		out.println(name);
	}
%>

</body>
</html>



// 받아서 처리해주는 2번째 페이지 1번방식(form으로 데이터 전달), 2번방식(redirect로 바로 페이지 전달)
<%@ 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>Insert title here</title>
</head>
<body>
<!-- 이름 전달받기 -->
<%-- <%request.setCharacterEncoding("UTF-8"); %>
<% out.print(request.getParameter("name"));%> --%>

<!-- 전달받은 이름을 test.jsp로 전달 -->
<!-- (1) -->
<%-- 	<form action="test.jsp">
		<input type="text" name="name" value="<%=request.getParameter("name")%>">
		<button>전송</button>
	</form> --%>
	
<!-- (2) -->
<%response.sendRedirect("test.jsp?name=" + request.getParameter("name"));%>

</body>
</html>
반응형