티스토리 뷰
액션 태그
- 화면이 점차 복잡해지면서 디자이너드은 상황에 따라 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에 합쳐진 후 한개의 자바 파일로 생성 |
- 인클루드 액션 태그는 다음과 같이 실행된다.
- 브라우저 요청 시 JSP 파일을 컴파일한다.
- 컴파일 시 <jsp:include>가 지시하는 JSP를 요청한다.
- 요청된 JSP를 컴파일한다.
- 컴파일된 JSP가 응답을 보낸다.
- 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에 각각 접속해 본다.
포워드(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
- FMT
- JSP
- HTML
- Servlet
- CSS
- 스프링
- 서브넷팅
- react
- 제이쿼리
- el
- 미들웨어
- Spring MVC
- javaserverpage
- 리액트
- CSS 속성
- a 태그
- Binding
- Network
- Redux
- Session
- 네트워크
- httpServletRequest
- Spring
- 내장객체
- 서블릿
- html css
- nodejs
- Java Server Page
- script element
- 세션
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |