액션 태그 : JSP에서 기본으로 제공하는 태그들의 집합, 서버 또는 클라이언트에게 수행할 명령 지시, Java 코드 사용하지 않아도 JSP 웹페이지 개발 가능
- JSP 웹페이지를 코딩할 때 Java 코드의 작성을 피하거나 최소화하기 위해 사용
- JSP 웹페이지에서 Java 코드를 최소화하게 되면 소스 코드에 대한 유지/보수를 효율적으로 수행 가능
<jsp: ... />
<jsp:forward ... /> | 현재 페이지의 실행을 멈추고 다른 페이지로 흐름을 제어 |
<jsp:include ... /> | 외부 페이지의 내용을 포함하거나 페이지 모듈화를 수행 |
<jsp:useBean ... /> | Java 인스턴스를 생성 또는 호출 및 보관소에 저장 |
<jsp:setProperty ... /> | 자바빈즈의 프로퍼티의 값을 설정 |
<jsp:getProperty ... /> | 자바빈즈의 프로퍼티의 값을 가져옴 |
<jsp:param ... /> | <jsp:forward>, <jsp:include>, <jsp:plugin> 태그의 자식 태그로 사용, 단독 사용 X |
<jsp:plugin ... /> | 웹 브라우저에 애플릿을 실행, OBJECT 또는 EMBED HTML 태그 생성 |
<jsp:element ... /> | 임의의 XML 태그 또는 HTML 태그 생성 |
forward 액션 태그 : 현재 위치한 JSP 웹페이지에서 다른 웹페이지로 이동할 때 사용, 그 전까지 출력 버퍼에 저장되어 있던 내용을 모두 삭제하고 페이지로 이동
<jsp:forward page="파일명" />
// forward.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title> forward 액션 태그 </title>
</head>
<body>
Home > forward 액션 태그로 페이지 요청
<jsp:forward page="forward_process.jsp" />
</body>
</html>
// forward_process.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.util.Date" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title> forward 액션 태그 </title>
</head>
<body>
Home > forward.jsp로 부터 요청받음
<hr>
<%
Date nowTime = new Date();
%>
현재 날짜와 시각 : <%= nowTime.toLocaleString() %>
</body>
</html>
include 액션 태그 : 현재 위치한 JSP 웹페이지의 특정 영역에 외부 파일의 내용을 포함할 때 사용
<jsp:include page="파일명" />
// include.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title> 현재 위치 : include.jsp 파일 </title>
</head>
<body>
include 액션 태그 실행 전 <br>
<jsp:include page="include_process.jsp"/> <br>
include 액션 태그 실행 후
</body>
</html>
// include_process.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.util.Date" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title> include 액션 태그 </title>
</head>
<body>
Home > include_process.jsp 파일에서 수행한 명령
<hr>
<%
Date nowTime = new Date();
%>
현재 날짜와 시각 : <%= nowTime.toLocaleString() %>
</body>
</html>
param 액션 태그 : 현재 위치한 JSP 웹페이지에서 다른 웹페이지로 정보를 전달할 때 사용하는 태그, 메모장 생성 후 전달
- 단독으로 사용할 수 없으므로 <jsp:forward> 나 <jsp:include> 태그의 내부에 선언하여 사용
- 여러개의 파라미터를 선언하여 다른 페이지에 여러 개의 정보를 전달할 수 있음
<jsp:forward page="파일명">
<jsp:param name="파라미터명1" value="파라미터값1"/>
<jsp:param name="파라미터명2" value="파라미터값2"/>
</jsp:forward>
// param.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.util.Date" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title> param 액션 태그 </title>
</head>
<body>
<%
Date nowTime = new Date();
String pwd = "123456";
%>
<jsp:forward page="param_process.jsp">
<jsp:param name="date"
value="<%= nowTime.toLocaleString() %>" />
<jsp:param name="id" value="zen" />
<jsp:param name="pwd" value="<%= pwd %>"/>
</jsp:forward>
</body>
</html>
// param_process.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title> 현재 위치 : param_prpcess.jsp </title>
</head>
<body>
Home > param.jsp로 부터 정보를 전달받음
<hr>
현재 날짜와 시각 :
<%= request.getParameter("date") %>
<br>
<%= request.getParameter("id") %>
<br>
<%= request.getParameter("pwd") %>
</body>
</html>
// includeParam.jsp
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
</head>
<body>
<h3>IncludeParam 예제</h3>
<form method="post" action="includeParam_proc.jsp">
사이트명 : <input name="siteName"><p/>
<input type ="submit" value="보내기">
</form>
</body>
</html>
// includeParam_proc
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
request.setCharacterEncoding("UTF-8");
String siteName = request.getParameter("siteName");
%>
<html>
<body>
<h3>>> IncludeParam_proc.jsp</h3>
html 문서에서 전달된 siteName은
<b><%=siteName%></b> 입니다.
<p>
<hr/>
<jsp:include page="includeTagBottom.jsp">
<jsp:param name="siteName" value="https://zenstudy.tistory.com/" />
</jsp:include>
</body>
</html>
// includeTagBottom.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
String siteName = request.getParameter("siteName");
%>
include 액션 태그와 param 액션 태그로 전달된 siteName은
<font color="red"><%=siteName%></font> 입니다.
<hr/>
includeParam_proc.jsp?siteName=젠의 전공공부
includeTabBottom.jsp?siteName=https://zenstudy.tistory.com/
자바빈즈 : 복잡하게 구성된 JSP 웹페이지에서 Java 소스 코드만 따로 뽑아 별도 작성으로 JSP 웹페이지가 복잡해지는 것을 방지
- 웹 브라우저에서 서블릿으로 서비스 요청
- 서블릿은 자바빈즈와 통신 수행
- 자바빈즈는 데이터베이스와 연결하여 데이터 관리
- 서블릿은 JSP 웹페이지에게 정보 전달
- JSP 웹페이지는 요청한 웹 브라우저에서 전달된 정보로 전달
<jsp:useBean id="객체명" scope="page | request | session | application" class="클래스명" type="타입명" />
// id와 class는 필수
// page = JspContext(기본값) | request = ServletRequest
// session = HttpSession | application = ServletContext
id 속성 : 객체의 참조 변수명으로 사용, getAttribute()로 값을 꺼낼 때 사용하는 이름으로 객체를 생성할 경우 보관소에 저장하는 key 값의 이름으로 사용함
scope 속성 : 보관소를 지정
class 속성 : Java 객체를 생성하기 위해 사용할 클래스 이름을 지정할 때 선언, new 연산자를 사용하므로 인터페이스는 올 수 없고 반드시 패키지 이름을 포함해야 함
type 속성 : 참조 변수에서 사용할 타입을 지정할 때 선언, 반드시 패키지 이름을 포함해야 하며 type 속성을 지정하지 않으면 class 속성의 값이 사용됨
// Persion.java
package ch08;
public class Person {
private String id;
private String name;
public String getId() { return id; }
public void setId(String id) { this.id = id; }
public String getName() { return name; }
public void setName(String name) { this.name = name; }
}
// inputInfo.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JavaBeans__Person</title>
</head>
<body>
<h3>자바빈즈로 아이디와 이름 처리하기</h3>
<form action="inputProc.jsp" method="post">
<p> 아 이 디 : <input type="text" name="id">
<p> 이름 : <input type="text" name="name">
<p> <input type="submit" value="전송">
</form>
</body>
</html>
//inputProc.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html><head><meta charset="UTF-8">
<title>JavaBeans</title>
</head>
<body>
<jsp:useBean id="p1" class="ch08.Person" />
<% request.setCharacterEncoding("UTF-8");
String id = request.getParameter("id");
String name = request.getParameter("name");
%>
<jsp:setProperty property="id" name="p1" value='<%=id%>'/>
<jsp:setProperty property="name" name="p1" value='<%=name%>'/>
<h3>입력하신 아이디와 이름을 확인합니다.</h3>
<table border="1" style="width:300px; border-collapse:collapse; ">
<tr><th>아이디</th>
<td><jsp:getProperty property="id" name="p1"/></td>
</tr>
<tr><th>이름</th>
<td><jsp:getProperty property="name" name="p1"/></td>
</tr>
</table>
</body>
</html>
// Calculator.java
package ch08;
public class Calculator {
private int n1;
private int n2;
private String op;
public int getN1() {
return n1;
}
public void setN1(int n1) {
this.n1 = n1;
}
public int getN2() {
return n2;
}
public void setN2(int n2) {
this.n2 = n2;
}
public String getOp() {
return op;
}
public void setOp(String op) {
this.op = op;
}
public long calc() {
long result = 0;
switch(op) {
case "+": result = n1+n2;break;
case "-": result = n1-n2;break;
case "/": result = n1/n2;break;
case "*": result = n1*n2;break;
}
return result;
}
}
// calcForm.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>useBean 액션 태그 - 계산기</title>
</head>
<body>
<h2>useBean 액션 태그로 계산기 만들기</h2>
<hr>
<form method="post" action="calc.jsp">
<input type="text" name="n1" size="10"> <select name="op">
<option>+</option>
<option>-</option>
<option>*</option>
<option>/</option>
</select> <input type="text" name="n2" size="10">
<input type="submit" value="실행">
</form>
</body>
</html>
// calc.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<jsp:useBean id="calc" class="ch08.Calculator" />
<jsp:setProperty property="n1" name="calc"/>
<jsp:setProperty property="op" name="calc"/>
<jsp:setProperty property="n2" name="calc"/>
// <jsp:setProperty property="*" name="calc"/>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>useBean 액션 태그 - 계산기 결과</title>
</head>
<body>
<h2>>> 계산 결과</h2>
<hr>
<jsp:getProperty property="n1" name="calc"/>
<jsp:getProperty property="op" name="calc"/>
<jsp:getProperty property="n2" name="calc"/>
= <%=calc.calc() %>
// <%=calc.getN1() + calc.getOp() + calc.getNw() + "=" + calc.calc() %>
</body>
</html>
'뒤끝 (Back-End)' 카테고리의 다른 글
[JSP] JDBC (0) | 2024.12.04 |
---|---|
[JSP] 데이터베이스 (2) | 2024.12.04 |
[JSP] request 내장 객체 (5) | 2024.10.16 |
[JSP] 폼 태그 (3) | 2024.10.14 |
[JSP] JSP의 동작 구조 (1) | 2024.10.14 |