JSP 표준 액션 태그
기본적인 스크립팅 요소이외에 JSP 스펙(Specification)에서는 표준 액션 태그를 제공한다.
대표적인 스크립팅 요소인 Scriptlet tag안에는 많은 자바코드가 삽입되어 실행된다. JSP를 사용하는 목적이 Presentation Logic을 구현할 목적이기 때문에 많은 자바코드를 포함하고 있는 Scriptlet tag을 제거 및 감소할 목적으로 액션 태그가 제공되는 것이다.
즉 자바코드 대신에 액션 태그만을 가지고 동일한 결과를 얻을 수 있는 것이다. 추가로 액션 태그만을 가지고는 100% 자바코드를 제거할 수는 없으며 나중에 배울 JSTL 또 는 EL 기능을 같이 추가하여 사용된다.
* 대표적인 표준 액션 태그
1. <jsp:useBean />
- 자바빈 컴포넌트를 사용하기 위한 액션태그
2. <jsp:setProperty />
- 자바빈 인스턴스에 데이터를 저장하기 위한 액션태그
3. <jsp:getProperty />
- 자바빈 인스턴스에서 데이터를 얻기 위한 액션태그
4. <jsp:include />
- 제공된 JSP파일을 삽입하기 위한 액션태그
5. <jsp:forward />
- 제공된 JSP파일로 forward하기 위한 액션태그
6. <jsp:param />
- include 및 forward할 때 요청 파라미터를 추가하기 위한 태그
* JavaBeans란?
1. Bean : "JavaBean" 객체를 의미함.
아래의 규약에 맞게 선언한 클래스를 우린, "자바빈즈 클래스"라고 부르고,
이 클래스로부터 생성한 객체를, "자바빈즈 객체" 또는 줄여서 "빈"이라고 부른다.
(1) 클래스의 모든 필드는 반드시 private 접근제한자를 가져야 함(캡슐화) ==> 필수
(2) 각 필드에 대해서, 반드시 Getter/Setter 만들어 제공해야 함 ===> 필수
(3) 매개변수 없는 기본 생성자를 제공해야 함(기본생성자, default constructor) ===> 필수
(4) java.io.Serializable Tag 인터페이스를 implements 해야 함 (직렬화 객체) ===> 선택
2. "빈" 객체가 생성되면, 자연스럽게 "속성(properties)"이란것이 나옴
가. 여기서, "속성(properties)" != 필드하고 다른것!
나. 이 "속성(properties)"은, Getter/Setter 메소드에서 나옴.
- Getter 메소드에서, "get"이라는 prefix(접두사)를 제거한 이름
- Setter 메소드에서, "set"이라는 prefix(접두사)를 제거한 이름
@NoArgsConstructor
public class TTT implements Serializable { // "JAVA BEANS" class가 됨
private String name;
public String getMyName() {
return this.name;
} // getMyName
public void setMyName(String name) {
this.name = name;
} // setMyName
} // end class
3. <jsp:useBean /> ==> 결국, 위2와 같은 "자바빈즈 객체"를 만들고 사용하겠다!라는 의미
<jsp:setProperty /> ==> "자바빈즈 객체"의 특정 프로퍼티(속성) 값을 변경
<jsp:getProperty /> ==> "자바빈즈 객체"의 특정 프로퍼티(속성) 값을 획득
* 자바언어로, Mission Critical(아주 중요한) 기업업무를 웹서비스로 만들때,
이 자바빈즈 클래스로 비지니스 데이터를 저장하는 객체를 만든다.
- JSP/Servlet, Spring, J2EE, EJB, ....
- 프로퍼티를 통해, 필드의 값을 조작(읽기/쓰기)
- 결국 가장 중요한 비지니스 데이터를 보호해주는 역할
< lombok을 사용한 빈클래스 생성 >
- 롬복을 이용해 자바빈 클래스를 생성하기 위해서는, 기본적으로
@Getter , @Setter, @NoArgsConstructor 어노테이션이 필요하다.
- 이는 @Data 어노테이션으로 대체 가능하다.
import java.io.Serializable;
import lombok.Data;
//@ToString
//@Setter
//@Getter
//@NoArgsConstructor
@Data
public class LoginBean implements Serializable {
private String userid;
private String passwd;
}
🍬 실습) <jsp:useBean /> 액션 태그 사용해보기
- 바로 앞에서 만든 자바빈 클래스 LoginBean.java를 사용하자.
- JSP 파일명 : useBean.jsp
- 생성된 scope는 page 이다.
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>useBean</title>
</head>
<body>
<h1>/JSP/useBean.jsp</h1>
<hr>
<!-- 우선 자바빈즈 객체부터 생성해서, 기본 공유영역(page)에 바인딩 수행 -->
<jsp:useBean
id="myBean"
class="org.zerock.myapp.domain.LoginBean"
scope="page" />
<h1>useBean 액션태그의 사용실습</h1>
<% // 자바빈즈 객체의 프로퍼티(속성)에 값을 설정
myBean.setUserid("Chunsik");
myBean.setPasswd("1234");
%>
<!-- LoginBean 자바빈즈 객체의 프로퍼티(속성) 값을 얻어 출력 -->
<h3>1. userid: <%=myBean.getUserid() %></h3>
<h3>2. passwd: <%=myBean.getPasswd() %></h3>
</body>
</html>
- Setter 메소드로 프로퍼티에 설정한 값을
Getter 메소드로 얻어 페이지에 출력한다.
🍬 실습) <jsp:setProperty /> , <jsp:getProperty /> 액션 태그 사용해보기
- 자바빈 클래스는 위와 동일하게 LoginBean.java 사용
- <jsp:setProperty> 태그를 이용해 초기화 하고, <jsp:getProperty> 태그를 이용해 값을 얻어 출력해보자.
- 1) property 속성값으로 자바빈의 멤버변수 "userid" 지정.
value 속성값으로 "Chunsik" 지정
- 2) property 속성값으로 자바빈의 멤버변수 "passwd" 지정.
value 속성값으로 "1234" 지정
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<jsp:useBean id="myBean" class="org.zerock.myapp.domain.LoginBean" scope="page"/>
<jsp:setProperty name="myBean" property="userid" value="Chunsik"/>
<jsp:setProperty name="myBean" property="passwd" value="1234"/>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>useBeanSet</title>
</head>
<body>
<h1>/JSP/useBeanSet.jsp</h1>
<hr>
<h1>useBean 사용실습</h1>
<p><jsp:getProperty/>액션태그로 출력한다면</p>
1. userid: <jsp:getProperty name="myBean" property="userid" /><br>
2. passwd: <jsp:getProperty name="myBean" property="passwd" />
</body>
</html>
- <jsp:getProperty /> 태그를 이용해, property에 저장된 값을 가져와 출력한다.
1) "userid"에 저장된 값 --> "Chunsik" 을 얻어와 출력한다.
2) "passwd"에 저장된 값 --> "1234" 를 얻어와 출력한다.
'교육과정 기록 > 💻back-end' 카테고리의 다른 글
[08.02] MyBatis (0) | 2022.08.02 |
---|---|
[7.28] JSP - EL (0) | 2022.07.28 |
[7.27] JSP - 예외 처리 (0) | 2022.07.27 |
[7.26] JSP 기본 개념 (0) | 2022.07.26 |
[7.25] 서블릿 - 파일 업로드 & 다운로드 (0) | 2022.07.25 |