티스토리 뷰
1. 액션 태그의 개요
액션 태그는 서버나 클라이언트에게 어떤 행동을 하도록 명령하는 태그이다.
스크립트 태그(!,=), 주석, 디렉티브 태그(@)와 함께 JSP 페이지를 구성하는 태그이다.
페이지 사이를 제어하고 다른 페이지의실행 결과 내용을 현재 페이지에 포함하고, 자바 빈즈등의 다양한 기능을 한다.
액션 태그는 />로 마무리를 해야한다.
액션 태그 | 형식 | 설명 |
forward | <jsp:forward ... /> | 다른 페이지로의 이동과 같은 페이지 흐름을 제어한다. |
include | <jsp:include .../> | 외부 페이지의 내용을 포함하거나 페이지를 모듈화한다. |
useBean | <jsp:useBean .../> | JSP 페이지의 내용을 포함하거나 페이지를 모듈화한다. |
setProperty | <jsp:setProperty .../> | 자바빈즈의 프로퍼티 값을 설정한다. |
getProperty | <jsp:getProperty .../> | 자바빈즈의 프로퍼티 값을 얻어온다. |
param | <jsp:param .../> | <jsp:forward>,<jsp:include>,<jsp:plugin> 태그에 인자를 추가한다. |
plugin | <jsp:pluginh .../> | 웹 브라우저에 자바 애플릿을 실행합니다. 자바 플러그인에 대한 OBJECT 또는 EMBED 태그를 만드는 브라우저별 코드를 생성한다. |
element | <jsp:element .../> | 동적 XML 요소를 설정한다. |
attribute | <jsp:attribute .../> | 동적으로 정의된 XML 요소의 속성을 설정한다. |
body | <jsp:body .../> | 동적으로 정의된 XML 요소의 몸체를 설정한다. |
text | jsp:text .../> | JSP 페이지 및 문서에서 템플릿 텍스트를 작성한다. |
2. forward 액션 태그의 기능과 사용법
forward 애션 태그는 현재 JSP 페이지에서 다른 페이지로 이동하는 태그이다.
JSP 컨테이너는 현재 JSP 페이지에서 forward 액션 태그를 만나면 버퍼에 저장되어 있던 내용을 모두 삭제한다.
(만약 autoflush =true일 경우 출력되지만 우리 눈에는 보이지 않는다.)
그 후 forward 액션 태그에 설정되니 페이지로 프로그램의 제어가 이동한다.
<jsp:forward page="파일명"/>
<jsp:forward page="파일명"> </jsp:forward>
위의 코드 중 아무거나 하나를 사용할 수 있다.
(싱글태그라 </jsp:forward>를 안해도 된다.)
/> 와 같이 끝나는 태그가 반드시 있어야한다.
이벤트는 따로 줄 수 없기 때문에 제어문 그중에서도 if문과 사용을 많이 한다.
위의 그림은 forward 액션 태그 페이지 흐름 처리과정이다.
1. JSP 컨테이너는 요청된 first.jsp를 실행한다.
2. 실행 중 forward 액션 태그를 만나면 지금까지 저장된 출력 버퍼의 내용을 삭제하고 프로그램 제어를 page 속성에서 설정한 second.jsp로 이동한다.
(만약 autoflush=true를 사용하면 실제로는 출력되었다가 삭제된다.)
3. second.jsp 실행
4. JSP 컨테이너를 second.jsp 를 실행한 결과를 웹 브라우저에 응답으로 보낸다.
* forward 액션 태그 사용 시 주의점
웹 서버는 forward 액션 태그를 수행할 때 출력 버퍼를 지우므로 현재 페이지에서 forward 액션 태그가 선언된 지점 이전까지 생성된 HTML 코드가 손실된다.
ex) forward 액션 태그로 현재 날짜와 시각을 출력하는 페이지로 이동
4-1
<%@ 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>forward 액션 태그</h2>
<jsp:forward page="forward_date.jsp"/>
<p>-----------------------------------
</body>
</html>
<%@ 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>
<p>오늘의 날짜 및 시간
<p><%=(new java.util.Date()).toLocaleString() %>
</body>
</html>
3. include 액션 태그의 기능과 사용법
include 액션 태그(<jsp:include>)는 inlcude 디렉티브(<%@include>)와 같이 현재 JSP 페이지의 특정 영역에 외부 파일의 내용을 포함한다.
포함할 수 있는 외부 파일은 HTML, JSP, 서블릿 페이지 등이 있다.
<jsp:include page="파일명" flush="false">
page 속성 값은 현재 JSP 페이지 내에 포함할 내용을 가진 외부 파일명이다.
같은 디렉터리에 있으면 파일명만 설정, 아니면 전체 URL(또는 상대경로)을 설정한다.
flush 속성 값은 설정한 외부 파일로 제어가 이동할 때 출력 버퍼에 저장한 결과를 처리하는 것에 대한 속성이다.
기본값은 false 이고 true로 설정하면 외부 파일로 이동할 때 버퍼에 내용을 웹 브라우저에 출력하고 지운다.
1. 웹 브라우저에서 웹 서버로 first.jsp를 요청한다.
2. JSP 컨테이너는 요청받은 first.jsp 를 처리하고 first.jsp 출력 내용이 출력 버퍼에 저장된다.
3. <jsp:include page="second.jsp" flush="false"/> 문장을 만나면 하던 작업을 멈추고 프로그램 제어를 second.jsp로 이동한다.
4. second.jsp를 실행하여 second.jsp의 출력 내용을 출력 버퍼에 저장한다.
5. 처리 후 다시 first.jsp 로 프로그램 제어가 이동한다.
(이동 위치 : <jsp:include page="second.jsp" flush="false"/> 문장의 다음 행)
6. first.jsp 나머지 부분을 처리하고 출력할 내용이 있으면 출력 버퍼에 저장한다.
7. JSP 컨테이너는 출력 버퍼의 내용을 웹 브라우저에 응답으로 보낸다.
* include 액션 태그 와 include 디렉티브 태그의 차이 (중요!!!!!!!)
구분 | include 액션 태그 (page 실행 결과 가져옴) |
include 디렉티브 태그 (code 삽입) |
처리 시간 | 요청 시 자원을 포함한다. | 번역 시 자원을 포함한다. |
기능 | 별도의 파일로 요청 처리 흐름을 이동한다. | 현재 페이지에 삽입한다. |
데이터 전달 방법 | request 기본 내장 객체나 param 액션 태그를 이용하여 파라미터를 전달한다. (파라미터 있음/값 주고 결과 반환) |
페이지 내의 변수를 선언한 후 변수에 값을 저장한다. (파라미터 없음) |
용도 | 화면 레이아웃의 일부분을 모듈화할 때 주로 사용한다. | 다수의 JSP 웹 페이지에서 공통으로 사용되는 코드나 저작권과 같은 문장을 포함하는 경우에 사용한다. |
기타 | 동적 페이지에 사용한다. 전체 코드를 작성 후 처리하고 실행 결과 반환 |
정적 페이지에 사용한다. 일부분만 작성 후 삽입 |
ex) include 액션 태그에 현재 날짜와 시각을 출력하는 페이지 포함
4-2
<%@ 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>include 액션 태그</h2>
<jsp:include page="include_date.jsp" flush="true" />
<p>---------------------------------------
</body>
</html>
<%@ 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>
<p>오늘의 날짜 및 시각
<p><%=(new java.util.Date()).toLocaleString() %>
</body>
</html>
4. param 액션 태그의 기능
param 액션 태그는 현재 JSP 페이지에서 다른 페이지에 정보를 전달(=파라미터)한다.
param 액션 태그는 단독으로는 사용하지 못하고 <jsp:forward> 나 <jsp:include> 태그의 내부에 사용된다.
다른 페이지에 여러 개의 정보를 전송하고자 할때는 여러개의 param 액션 태그를 사용할 수 있다.
<jsp:forward page="파일명">
<jsp:param name="매개변수명1" value="매개변수값1" />
</jsp:forward>
name은 변수 value는 값으로 이름:값으로 구분한다.
그리고 jsp는 문자열로만 전송하기 때문에 데이터 타입을 따로 지정하지 않는다.
숫자도 문자열로 출력된다.
만약 문자열이 아닌 다른 데이터타입으로 출력하고자하면 캐스팅해줘야한다.
출력문을 보면 request.getParameter("date") 과 같은 형식으로 작성되는 것을 볼 수 있다.
파라미터 과정을 보면 이해할 수 있는데
first.jsp에서 second.jsp로 바로 가는 것이 아니라
request 객체에 파라미터를 저장하고 request 객체에서 second.jsp 로 파라미터를 전달한다.
파라미터를 받은 second.jsp는 실행을 한 후 결과를 first.jsp 에 반환한다.
ex) forward 액션 태그와 param 액션 태그에 아이디와 이름 전달
4-3
<%@ 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>
<h3>param 액션 태그</h3>
<jsp:forward page="param01_data.jsp">
<jsp:param name="id" value="admin" />
<jsp:param name="name" value='<%=java.net.URLEncoder.encode("관리자")%>'/>
</jsp:forward>
<p>Java Server Page
</body>
</html>
<%@ 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>
<p>아이디 : <%=request.getParameter("id") %>
<%
String name=request.getParameter("name");
%>
<p> 이 름 : <%=java.net.URLDecoder.decode(name) %>
</body>
</html>
ex) include 액션 태그와 param 액션 태그에 제목과 현재 날짜 전달
4-4
<%@ 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>
<h3>param 액션 태그</h3>
<jsp:include page="param02_date.jsp">
<jsp:param name="title" value='<%=java.net.URLEncoder.encode("오늘의 날짜와 시각") %>'/>
<jsp:param name="date" value="<%=java.util.Calendar.getInstance().getTime() %>"/>
</jsp:include>
</body>
</html>
<%@ 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>
<%
String title = request.getParameter("title");
%>
<h3><%=java.net.URLDecoder.decode(title) %></h3>
Today is :<%=request.getParameter("date") %>
</body>
</html>
5. 자바빈즈 액션 태그의 기능과 사용법 (중요!!!!!)
자바빈즈는 JSP에서 객체를 생성하는 것이다.
5-1. 자바빈즈의 개요
자바빈즈는 동적 개발을 하기 위해 자바 코드를 사용하여 자바 클래스로 코드를 작성하는 방법이다.
JSP 페이지에서 화면을 표현하기 위한 계산식이나 자료의 처리를 담당하는 자바 코드를 따로 분리해서 작성하는 것이다.
5-2. useBean 액션 태그로 자바빈즈 사용하기
<jsp:useBean id="자바빈즈 식별이름" class="자바빈즈 이름" scope="범위"/>
이때 id는 객체 생성하는 것으로 참조 변수이다.
class는 클래스를 뜻하므로 객체의 위치를 알 수 있다.
useBean 액션 태그의 속성
속성 | 설명 |
id | 자바빈즈를 식별하기 위한 이름이다. |
class | 패키지 이름을 포함한 자바빈즈 이름이다. 자바빈즈는 인수가 없는 기존 생성자가 있어야 하며 추상 클래스를 사용할 수 없다. |
scope | 자바빈즈가 (소멸)삭제되는 시점을 설정한다. page(기본값) : 현재 page만 존재한다. request : 한번만 전달할 수 있다. session : 계속 전달할 수 있다. application : 서버의 시작과 끝 모두 존재한다. 소멸 안함(공용) 중 하나의 값을 사용한다. |
* useBean 액션 태그 사용예시
<jsp:useBean id="member" class="com.dto.MemberBeam" scope="page"/>
* 클래스 앞은 패키지 뒤는 함수변수
ex) useBean 액션 태그에 Date 클래스를 사용하여 현재 날짜와 시각 출력
4-5
<%@ 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>
<jsp:useBean id="date" class="java.util.Date" />
<p><%
out.print("오늘의 날짜 및 시각");
%>
<p><%=date %>
</body>
</html>
ex) 자바빈즈 Calculator를 생성하고 useBean 액션 태그에 Calculator 클래스를 사용하여 숫자를 출력
4-6
<%@ 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>
<jsp:useBean id="bean" class="dao.Calculator" />
<%
int m=bean.process(5);
out.print("5의 3제곱 :" +m);
%>
</body>
</html>
* 싱글턴으로 생성(객체하나로 사용함) 객체관리가 용이하다(scope때문)
package dao;
public class Calculator {
public int process(int n) {
return n*n*n;
}
}
ex) 자바빈즈 person을 생성하고 useBean 액션 태그에 person 클래스를 사용해서 아이디와 이름을 출력
4-7
JAVA
package dao;
public class person {
private int id = 20181004;
private String name="홍길순";
public person() {
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
HTML
<%@ 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>
<jsp:useBean id="person" class="dao.person" scope="request" />
<p> 아이디 : <%=person.getId() %>
<p> 이 름 : <%=person.getName() %>
</body>
</html>
결과
'코딩 > JSP' 카테고리의 다른 글
웹쇼핑몰 (0) | 2023.12.01 |
---|---|
[8주 5일차] 액션 태그 (1) | 2023.12.01 |
[8주 3일차] 디렉티브 태그 (0) | 2023.11.29 |
[8주 3일차] 스크립트 태그 (0) | 2023.11.29 |
[8주 2일차] JSP (운영체제 /웹 / JSP 환경 설정) (0) | 2023.11.28 |
- Total
- Today
- Yesterday