본문 바로가기

웹 프로그래밍/JSP

[JSP] 파라미터란? (+ request 객체에 대한 생각)

forwardTest

<%@ 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 action = "forwardSet.jsp" method="get">
	<!-- <form action = "includeSet.jsp" method="get"> -->
		id : <input type ="text" name ="id">
		<input type = "submit" value ="전송">
	</form>
</body>
</html>

forwardSet

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    
<%-- <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %> --%>
<%@ taglib prefix="c" uri ="http://java.sun.com/jsp/jstl/core" %>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

 	<%
		request.setAttribute("id", request.getParameter("id"));
        // request 영역에 id라는 attribute를 등록한다.
	%> 
    
       
	
	<%-- <c:set var="id" value="${ param.id }" scope ="request"/> --%>
    <%-- 위와 같은 표현이다. set 라이브러리를 활용하여 쉽게 등록 가능 --%>
	
	

<%-- 
	<%
		 String id = request.getParameter("id");
	%>
	<h2>결과화면</h2>
	<%
		if(id.equals("admin")) {
	%>
		관리자님 환영합니다<br>
	<%
		} else {
	%>
		<%= id %>님  환영합니다<br>
	<%
		}
	%>
	 --%>
	 
	<h2>결과 화면</h2>
	<c:if test="${ param.id eq 'admin'}">
		<jsp:forward page="admin.jsp"/>	
	</c:if> 
	
	<c:if test="${ param.id ne 'admin'}">
		<%-- <jsp:forward page="user.jsp"/> --%>
		<jsp:forward page="user.jsp">
			<jsp:param name="id" value="${ param.id }"/>
		</jsp:forward>
	</c:if> 
	
</body>
</html>

user

<%@ 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>
	${ param.id } 님 환영합니다.   
    <%-- 
    클라이언트에서 날라온 request가 그대로 forward 되어 날라오기 때문에 
    reqeust.getParameter("id")와 같은 표현인 위의 EL로도 값을 나타낼 수 있다.
    --%>
	
	${ id } 님 환영합니다.
    <%-- 
    공유영역에 id라는 attribute를 등록해야 위의 EL을 사용할 수 있다.
    --%>
	
</body>
</html>

 

admin

<%@ 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>
	<h2>관리자님 환영합니다.</h2>
</body>
</html>

 

 


 

 

'?' 뒤가 파라미터다.

 

request 영역이라고 부르는 것은 

사실상 서블릿 파일 내에 있는 

request 객체를 말하는 것이다. (그냥 javax.servlet.http.HttpServletRequest 타입의 변수 아닌가?)

==> request.getDispatcherType() 등으로 메소드를 호출하는 것 보니 객체가 맞는 것 같다.

==> 그런데, new 하지 않았는데 언제 생성된 것인가?

==> 매개변수로 받는 것을 보니, 클라이언트에서 생성하여 보내는 것임.