[ 액션 태그 ]
○ 서버나 클라이언트에게 어던 행동을 하도록 명령하는 태그
○ JSP 페이지에서 페이지와 페이지 사이 제어
○ 다른 페이지의 실행 결과 내용을 현재 페이지에 포함
○ 자버 빈즈(JavaBeans) 등의 다양한 기능 제공
○ XML 형식 <jsp: .../> 사용
forward | 다른 페이지로의 이동과 같은 페이지 흐름을 제어 | |
include | 외부 페이지의 내용을 포함하거나 페이지를 모듈화 | |
useBean | JSP 페이지에 자바빈즈 설정 | |
setProperty | 자바빈즈의 프로퍼티 값 설정 | |
getProperty | 자바빈즈의 프로퍼티 값 얻어옴 | |
param | <jsp:forward>, <jsp:include>, <jsp:plugin> 추가 | |
plugin | 웹 브라우저에 자바 애플릿을 실행, 자바 플러그인에 대한 OBJECT 또는 EMBED 태그를 만드는 브라우저별 코드 생성 | |
element | 동적 XML 요소 설정 | |
attribute | 동적으로 정의된 XML 요소 속성 설정 | |
body | 동적으로 정의된 XML 요소 몸체 설정 | |
text | JSP 페이지 및 문서에서 템플릿 텍스트를 작성 |
[ forward ]
○ 현재 JSP 페이지에서 다른 페이지로 이동하는 태그
○ JSP 컨테이너는 현재 JSP 페이지에서 forward 액션 태그를 만날 시
- 그 전까지 출력 버퍼에 저자오디어 있던 내용을 모두 삭제
- forward 액션 태그에 설정된 페이지로 프로그램의 제어가 이동
○ page 속성값
- 현재 JSP 페이지에서 이동할 페이지의 외부 파일명
- 외부 파일은 현재 JSP 페이지와 같은 디렉터리에 있으면 파일명만 설정
- 그렇지 않을 시, 전체 URL(또는 상대 경로) 설정
○ flush 속성값
- 설정한 외부 파일로 제어가 이동할 때 현재 JSP 페이지가 지금가지 출력 버퍼에 저장한 결과 처리
- 기본 값 = false
- true로 설정 시, 외부 파일로 제어가 이동할 때 현재 JSP 페이지가 지금가지 출력 버퍼에 저장된 내용을 웹 브라우저에 출력하고 버퍼를 비움
[ include ]
구분 | include 액션 태그 | include 디렉티브 태그 |
처리 시간 | 요청 시 자원을 포함 | 번역 시 자원을 포함 |
기능 | 별도의 파일로 요청 처리 흐름을 이동 | 현재 페이지에 삽입 |
데이터 전달 방법 | request 기본 내장 객체나 param 액션 태그를 이용해 파라미터 전달 | 페이지 내의 변수를 선언한 후 변수에 값을 저장 |
용도 | 화면 레이아웃의 일부분을 모듈화할 대 주로 사용 | 다수의 JSP 웹 페이지에서 공통으로 사용되는 코드나 저작권 같은 문장을 포함하는 경우에 사용 |
기타 | 동적 페이지에 사용 | 정적 페이지에 사용 |
[ param ]
○ 현재 JSP 페이지에서 다른 페이지에 정보를 전달하는 태그
○ 단독으로 사용되지 못하며 <jsp:forward> 혹은 <jsp:include> 태그 내부에 사용
○ 다른 페이지에 여러 개의 정보를 전송해야할 때는 다중의 param 액션 태그 사용
<jsp:forward page="파일명">
<jsp:param name="매개변수명1" value="매개변수값1" />
[ <jsp:param name="매개변수명1" value="매개변수값1" /> ... ]
</jsp:forward>
[ 자바 빈즈 ]
○ 동적 콘텐츠 개발 위해 자바 코드를 사용해 자바 클래스로 로직을 작성
○ JSP 페이지에서 화면을 표현하기 위한 계산식이나 자료의 처리를 담당하는 자바코드를 다로 분리해 작성하는 것
○ JSP 페이지가 HTML과 같이 쉽고 간단한 코드만으로 구성
○ 작성 규칙
- 자바 클래스는 java.io.Serializable 인터페이스를 구현해야함
- 인수가 없는 기본 생성자가 있어야 함
- 모든 멤버 변수인 프로퍼티는 private 접근 지정자로 설정해야 함
- 모든 멤버 변수인 프로퍼티는 getter/setter() 메소드가 존재해야 함
1) getter() : 멤버 변수에 저장된 값을 가져올 수 있는 메소드
2) setter() : 멤버 변수에 값을 저장할 수 있는 메소드
○ useBean 액션 태그
- JSP 페이지에서 자바빈즈를 사용하기 위해 실제 자바 클래스를 선언하고 초기화하는 태그
- id 속성과 scope 속성을 바탕으로 자바빈즈의 객체를 검색하고 객체가 발견되지 않으면 빈 객체 생성
속성 | 설명 |
id | 자바빈즈를 식별하기 위한 이름 |
class | 패키지 이름을 포함한 자바빈즈 이름, 자바빈즈는 인수가 없는 기존 생성자가 있어야 하며 추상 클래스를 사용할 수 없음 |
scope | 자바빈즈가 저장되는 영역을 설정, page(기본값), request, session, application 중 하나의 값 사용 |
<jsp:useBean id="member" class="com.dto.MemberBean" scope="page" />
○ setProperty 액션 태그
- useBean 액션 태그와 함께 자바빈즈의 setter() 메소드에 접근해 자바빈즈의 멤버변수인 프로퍼티 값 저장하는 태그
- 폼 페이지로부터 전달되는 요청 파라미터의 값을 직접 저장하거나 자바빈즈의 프로퍼티로 변경해 값 저장 가능
- 모든 자바빈즈 프로퍼티 이름과 동일하게 요청 파라미터 설정 가능
name | useBean 태그에 id 속석값으로 설정된 자바빈즈를 식별하기 위한 이름 |
property | 자바빈즈의 프로퍼티 이름, 만약 프로퍼티 이름에 '*'를 사용하면 모든 요청 파라미터가 자바빈즈 프로퍼티의 setter() 메소드에 전달됨을 의미 |
value | 변경할 자바빈즈의 프로퍼티 값, 만약 프로퍼티 값이 null이거나 존재하지 않는 요청 파라미터인 경우에는 setProperty 액션 태그가 무시됨 |
param | 자바빈즈의 프로퍼티 값을 전달하는 요청 파라미터 이름, param과 value 동시에 모두 사용할 수 없으며 하나를 선택해 사용 가능 |
<jsp:setProperty name="member" property="id" value="admin" />
- 요청 파라미터 이름과 자바빈즈의 프로퍼티 이름 일치하는 경우
// 폼 페이지
<form action="memberProcess.jsp" method="post">
<input name="id" value="admin" />
</form>
// jsp 페이지
<jsp:setProperty name="member" property="id" param="id" />
- 요청 파라미터 이름과 자바빈즈의 프로퍼티 이름 일치하지 않는 경우
// 폼 페이지
<form action="memberProcess.jsp" method="post">
<input name="userId" value="admin" />
</form>
// jsp 페이지
<jsp:setProperty name="member" property="id" param="userId" />
- 요청 파라미터 이름과 자바진즈의 프로퍼티 이름이 모두 일치하는 경우
// 폼 페이지
<form action="memberProcess.jsp" method="post">
<input name="id" value="admin" />
<input name="name" value="관리자" />
</form>
// jsp 페이지
<jsp:setProperty name="member" property="*"/>
○ getProperty 액션 태그
- useBean 액션 태그와 함께 자바빈즈의 getter() 메소드에 접근해 자바빈즈의 멤버 변수인 프로퍼티 값 가져오는 태그
- getProperty 액션 태그 사용
<jsp:getProperty name="member" property="name" />
- 자바빈즈 프로퍼티 값 출력
<% out.println(member.getName()); %>
[ menu.jsp ]
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.util.Date" %>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html" charset="UTF-8">
<title>Welcome</title>
<style>
.main {
width: 100%;
}
.main .banner {
width: 100%;
height: 300px;
background-color: #d1d1d1;
text-align: conter;
line-height: 300px;
}
. main .banner h1 {
font-size: 5vw;
font-weight: 400;
}
.main .content {
width: 100%;
margin: 0 auto;
padding: 10px;
text-align: center;
}
.main .content h3 {
margin: 0 auto;
padding: 20px 0;
font-weight: 100;
}
.main .content p {
margin-bottom: 30px;
}
</style>
<%!String greenting = "웹 쇼핑몰에 오신 것을 환영합니다";
String tagLine = "Welcome to Web Market";%>
</head>
<body>
<jsp:include page="header.jsp" />
<div class="main">
<div class="banner">
<div class="container">
<h1><%=greenting%></h1>
</div>
</div>
<div class="content">
<div class="container">
<h3><%=tagLine%></h3>
<p>
<%
Date day = new Date();
String am_pm;
int hour = day.getHours();
int minute = day.getMinutes();
int second = day.getSeconds();
if (hour / 12 == 0)
am_pm = "AM";
else {
am_pm = "PM";
hour = hour - 12;
}
String CT = hour + ":" + minute + ":" + second + " " + am_pm;
out.println("현재 접속 시각 : " + CT + "\n");
%>
<p>
<hr>
</div>
</div>
</div>
<jsp:include page="footer.jsp" />
</body>
</html>
[ header.jsp ]
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>header</title>
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
a {
color: #000;
text-decoration: none;
}
header {
background-color: #000;
width: 100%;
padding: 10px 20px;
}
header a {
color: #fff;
font-weight: 700;
}
.container {
width: 90%;
margin: 0 auto;
}
</style>
</head>
<body>
<header>
<div class="container">
<a href="index.jsp">Home</a>
</div>
</header>
</body>
</html>
'프로그래밍 언어 > JSP' 카테고리의 다른 글
JSP_22-11-01 (0) | 2022.11.01 |
---|---|
JSP_22.10.31 (0) | 2022.10.31 |
JSP_22-10-28(1) (0) | 2022.10.28 |
쇼핑몰 연습(1) (0) | 2022.10.28 |