[JSP] 액션태그

김윤섭·2023년 3월 17일
0

JSP

목록 보기
6/18
post-thumbnail

1. 액션태그


(1) 액션태그란?

jsp 페이지에서 사용하는 가독성 높은 소스코드

  • 페이지와 페이지 사이 제어
  • 다른 페이지의 실행 결과 내용을 현재 페이지에 포함시킴
  • 자바빈즈(객체)등의 다양한 기능을 제공함
  • 지저분하지 않고 깔끔하며 코드양을 대폭 축소 가능

(2) 액션태그 사용하기

  • 태그는 xml 문법을 따름
  • 시작 태그와 함께 반드시 종료태그를 포함
  • 태그의 기본형식
	<jsp:....속성: > 내용 </jsp:..>
  • 내용이 없는 액션 태그의 형식
	<jsp:...속성 :값/>

(3) 액션태그 종류

⭐ forward(<jsp:forward />)
-> 다른 페이지로의 이동, 페이지 흐름 제어

	<jsp:forward page="<%= resultURI %>" />

include(<jsp:include/>)
-> 외부 페이지의 내용을 포함하거나 페이지 모듈화
param(<jsp:param/>)
-> 현재 페이지에서 다른 페이지에 대한 정보를 전달할 때 사용

		<jsp:param value="apple" name="userid" />
		<jsp:param value="김사과" name="username" />

useBean(<jsp:include/>)
-> 빈(bean)을 생성하고 사용하기 위한 환경을 정의하는 액션태그
setProperty(<jsp:setProperty/>)
-> 빈에서 속성값을 할당
getProperty(<jsp:getProperty/>)
-> 빈에서 속성 값을 얻어올 때 사용

2. ⭐⭐ forward vs redirect : 페이지 이동


(1) forward

클라이언트 -> url1 접속 -> url1에서 처리가 다 안됨 -> 클라이언트가 요청한 정보 그대로 가지고(request) -> url2에서 처리 : 요청정보가 그대로 유지 

=> 즉, 리퀘스트(파라미터값) 유지된채로 url2
  • 값이 바뀌지 않음
  • quest에 담긴 값이 유효한다.(response, request가 유지된다.)
  • 이동된 url이 화면에 안보인다.(사용자는 이동했는 지 알 수 없음)
  • forward 방식
	pageContext.forward("이동할페이지");
	<jsp:forward page="이동할페이지"/>

(2) redirect

클라이언트 -> url1에 요청 -> url1에서 url2로 넘김 -> redirect 방식 사용 -> 클라이언트한테 갔다가 -> 클라이언트가 url2를 새로 부른 것과 같은 방식으로 url2열림 : 리퀘스트 유지 x -> 파라미터값 없는 채로 url2열림
  • 클라이언트가 새로 페이지를 요청한 것과 같은 방식으로 페이지가 이동
  • request, response가 유지되지 않는다.(새로 만들어짐)
  • 이동된 url이 화면에 보인다.
  • 리다이렉트 방식
	response.sendRedirect("이동할페이지");

forward vs redirect 예시

예시 > 장바구니 결제 : 카드번호, 인증번호 등 private정보 담아 요청

  • url 1에서 결제 처리를 하고 -> url 2에서 결제 완료 창 띄움
  • forward : 사용자 결제 정보가 남아 있는 채로 url 2 ; 개인정보 유출 가능
  • redirect : 새로운 요청으로 url 2 -> 결제 정보 빠져 있는 채로 url 2
    -> 결제가 안됐다는 응답페이지에도 결제 정보는 빼고 줌

3. 액션태그 사용예제


(1) 액션태그 사용

<body>
	<!-- 
		태그 열고 닫고 => 바로 param.jsp 창으로 이동 -> 내부 태그 가지고 감
		받아오는 입장에서는 request.getParameter로 받으면 됨	
	-->
	<jsp:forward page="param_result.jsp">
		<jsp:param value="apple" name="userid" />
		<jsp:param value="김사과" name="username" />
	</jsp:forward>
</body>

(2) 액션태그 불러오기

<body>
	아이디 : <%=request.getParameter("userid") %><br>
	<%=request.getParameter("username") %> 님 어서오세요.
</body>

(3) 결과

profile
안녕하세요

0개의 댓글