티스토리 뷰

JSP

[JSP]액션태그

dev23 2024. 8. 14. 22:57
반응형

액션 태그

- 화면이 점차 복잡해지면서 디자이너드은 상황에 따라 HTML 코드에 자바 코드를 같이 써야 하는 문제로 어려움을 겪게
되었다.

- 따라서 JSP 스크립트릿의 자바 코드를 제거하고 디자이너 입장에서 쉽고 편리하게 작업할 있는 스크립트 형태로기능을 제공하게 되었고, 다음과 같은 액션 태그들로 자바 코드를 대신하게 되었다.

이름 형식 설명
인클루드 액션 태그 <jsp:include> 이미 있는 JSP 현재 JSP 포함하는 태그
포워드 액션 태그 <jsp:forward> 서블릿에서 RequestDispatcher 클래스의 포워딩 기능을 대신하는 태그
유즈빈 액션 태그 <jsp:useBean> 객체를 생성하기 위한 new 연산자를 대신하는 태그
셋프로퍼티 액션 태그 <jsp:setProperty> stter 대신하는 태그
겟프로퍼티 액션 태그 <jsp:getProperty> getter 대신하는 태그

 

인클루드(include) 액션 태그

 

- 인클루드 디렉티브 태그처럼 화면을 분할해서 관리할 사용한다.

- 인클루드 액션 태그를 이용하면 공통적으로 사용하는 홈페이지의 메뉴와 같은 화면을 재사용할 있다

<jsp:include   page="jsp페이지"   flush="ture" or "false">
	...
</jsp:include>

 

인클루드 액션태그와 인클루도 디렉티브 태그의 차이점

항목 인클루드 액션 태그 인클루드 디렉티브 태그
기능 JSP 레이아웃 모듈화 JSP 레이아웃 모듈화
처리 시간 요청 시간에 처리 JSP 자바 코드로 변환 처리
데이터 처리 방법 param 액션 태그를 이용해 동적 처리 가능 정적 처리만 가능
포함된 JSP 자바 파일 변환 여부 포함되는 JSP 각각 자바 파일로 생성 포함되는 JSP 포함하는 JSP 합쳐진 한개의 자바 파일로 생성

- 인클루드 액션 태그는 다음과 같이 실행된다.

  1. 브라우저 요청 시 JSP 파일을 컴파일한다.
  2. 컴파일 시 <jsp:include>가 지시하는 JSP를 요청한다.
  3. 요청된 JSP를 컴파일한다.
  4. 컴파일된 JSP가 응답을 보낸다.
  5. JSP는 브라우저에서 요청한 응답 결과를 출력한다.

- 자식 JSP에 해당하는 child.jsp를 작성한다. 부모 JSP에서 포함 요청 시 전달되는 이름을 
getParameter() 메서드를 통해 가져온 후 이름과 해당 이미지를 출력한다.

 

* child.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<% 
	// param 액션 태그로 전달된 매개변수를 getParameter() 메서드를 이용해 가져온다.
	request.setCharacterEncoding("utf-8");
	String name = request.getParameter("name");
%>


<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>이미지</title>
</head>
<body>
	<br><br>
	<h1>이름은 <%=name %>입니다.</h1><br><br>
</body>
</html>

 

- 부모 JSP 파일인 include1.jsp를 작성한다. <jsp:include> 태그의 page 속성에 포함할 자식 JSP인 child.jsp를 지정한다.

- <jsp:param> 태그를 이용해 이름을 동적으로 자식 JSP인 child.jsp로 포워딩한다.

 

* include1.jsp

<%@ 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>include1.jsp</title>
</head>
<body>
	안녕하세요 JSP 시작 부분입니다.<br>
	<!-- param 액션 태그를 이용해 duke_image.jsp로 이름과 파일 이름을 전달한다. -->
	<jsp:include page="child.jsp" flush="true" >
		<jsp:param name="name" value="ysh" />
	</jsp:include>
	<br>
	안녕하세요. JSP 끝부분입니다.
</body>
</html>

 

- 다른 부모 JSP 파일인 include2.jsp를 작성한다. 자식 JSP로 <jsp:param> 안에 다른 이름을 전달한다.

 

* include2.jsp

<%@ 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>include2.jsp</title>
</head>
<body>
	안녕하세요 JSP 시작 부분입니다.<br>
	<!-- param 액션 태그를 이용해 duke_image.jsp로 이름과 파일 이름을 전달한다. -->
	<jsp:include page="child.jsp" flush="true" >
		<jsp:param name="name" value="hong" />
	</jsp:include>
	<br>
	안녕하세요. JSP 끝부분입니다.
</body>
</html>

 

- 코드를 작성하고 /include1.jsp와 /incldue2.jsp에 각각 접속해 본다.

 

/include1.jsp
/include2.jsp

 

포워드(forward) 액션 태그

- 포워드 액션태그를 사용하면 자바 코드 없이 포워딩할 있다. 또한 포워딩 다른 서블릿이나 JSP 값을
전달할 있다.

<jsp:forward  page="포워딩할 페이지">
	..
</jsp:forward>

 

- 포워드 액션 태그를 사용한 예를 확인해 보자.

 

* login.jsp

<%@ 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>로그인창</title>
</head>
<body>
	<%
		String msg= request.getParameter("msg");
		if(msg !=null){
	%>
	<h1><%=msg %></h1>
	<%
		}
	%>
	<form action="result.jsp" method="post" >
		아이디 : <input type="text" name="userID"><br>
		비밀번호 : <input type="password" name="userPw"><br>
		<input type="submit" value="로그인" />
		<input type="reset" value="초기화" />
	</form>
</body>
</html>

 

- 로그인 시 ID를 입력하지 않으면 <jsp:forward> 액션 태그를 이용해 로그인 페이지로 포워딩한다.

 

* result.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	request.setCharacterEncoding("utf-8");
%>
<%!
	String msg = "아이디를 입력하지 않았습니다. 아이디를 입력해 주세요!";
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>결과창</title>
</head>
<body>
	<%
		String userID = request.getParameter("userID");
		if(userID.length() == 0){
	%>
		<jsp:forward page="login.jsp" >
			<jsp:param name="msg" value="<%=msg %>" />
		</jsp:forward>
	<%
		}
	%>
	<h1>환영합니다. <%=userID %>님!</h1>
</body>
</html>

 

- 코드 작성 후 /login.jsp 페이지에 접근하여 아이디를 입력하지 않고 [로그인] 버튼을 눌러 본다.

아이디를 입력하지 않고 [로그인] 버튼을 눌러 본다.

 

- 아이디를 입력하지 않은 경우 문구가 추가되었고, 다시 로그인 페이지로 돌아 왔다. 이는 아이디가 없는 경우 login.jsp로 포워딩 시키는 포워드 액션 태그 때문이다.

아이디가 없어 로그인 페이지로 포워드됨

 

반응형

'JSP' 카테고리의 다른 글

[JSP]표현 언어 내장 객체  (0) 2024.08.15
[JSP]표현 언어  (0) 2024.08.15
[JSP]Welcome 파일 지정  (0) 2024.08.14
[JSP]예외 처리  (0) 2024.08.14
[JSP]내장 객체  (0) 2024.08.14
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함