JSP 6강 - 액션태그

Whatever·2022년 1월 6일
0

JSP

목록 보기
6/30

스크립트 태그
디렉티브 태그
액션 태그
=> JSP에서 기본적으로 제공해주는 태그들

<jsp useBean id="객체명"> - 객체명은 소문자로 시작

jsp useBean의 scope(영역),(생략시 page가 기본)

  1. page - pageContext
  2. request - request
  3. session - session
  4. application - application

setProperty (속성, 필드를 셋팅 - 멤버변수를 세팅)

  • taglib의 core의 EL을 사용하면 getProperty를 사용하지 않아도 됨

    data transfers object(dto)

setProperty 액션 태그

  • useBean 액션 태그와 함께 사용됨
  • 자바빈즈 Setter() 메소드에 접근하여 자바빈즈의 멤버 변수인 프로퍼티의 값을 저장
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<title>Insert title here</title>
</head>
<body>
<!-- 
* setProperty 액션 태그
 - useBean 액션 태그와 함께 사용됨
 - 자바빈즈 Setter() 메소드에 접근하여 자바빈즈의 멤버 변수인 프로퍼티의 값을 저장
 -->
	<jsp:useBean id="person" class="ch04.com.dao.Person" scope="request"/>
	<%
	person.setId(20182005);
	person.setName("손영흔");
	%>
	<jsp:setProperty name="person" property="id" value="20182005"/><!-- name - 어떤 객체인지 -->
	<jsp:setProperty name="person" property="name" value="손영흔"/>
	<p>아이디1 : ${person.id}</p>
    <!-- EL, 객체가 있으면 객체의 필드를 다이렉트로 줄 수 있다. taglib가 있기때문에 사용가능-->
	<p>이름1 : ${person.name}</p>

</body>
</html>

setProperty / getProperty

useBean 액션태그의 id 속성값(person)을 통해
자바빈즈 Person의 프로퍼티 id와 name에 값을 저장하고
자바빈즈 Person의 프로퍼티 id와 name에 값을 가져와 화면출력함
<jsp:getProperty name="객체명" property="멤버변수명">

getProperty01.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<title>Action Tag</title>
</head>
<body>
<!-- 
자바빈즈 Person의 프로퍼티(멤버변수) id와 name을 가져와 출력함
 -->
	<jsp:useBean id="person" class="ch04.com.dao.Person" />
	<p>아이디 : ${person.id}</p>
	<p>이름 : ${person.name}</p>
	
	<p>아이디 : <jsp:getProperty name="person" property="id"/></p><!-- 멤버변수 가져오기 -->
	<p>이름 : <jsp:getProperty name="person" property="name"/></p>
</body>
</html>

getProperty02.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<title>Action Tag</title>
</head>
<body>
<!-- 
useBean 액션태그의 id 속성값(person)을 통해
자바빈즈 Person의 프로퍼티 id와 name에 값을 저장하고
자바빈즈 Person의 프로퍼티 id와 name에 값을 가져와 화면출력함
-->
	<jsp:useBean id="person" class="ch04.com.dao.Person"/>
	<jsp:setProperty name="person" property="id" value="20182005"/>
	<jsp:setProperty name="person" property="name" value="이선우"/>
	<p>아이디 : <jsp:getProperty name="person" property="id" /></p>
	<p>이 름 : <jsp:getProperty name="person" property="name" /></p>
	
</body>
</html>

Serializable : 자바 직렬화

자바 시스템 내부/외부 서로 객체 또는 데이터를 공유할 수 있도록
바이트(byte) 형태로 데이터를 변환하고 반대로 다시 
바이트 형태의 데이터를 객체 또는 데이터로 변환(역직렬화)하는 기술

ProductRepository.jsp

package ch04.com.dao;

import java.util.ArrayList;
import java.util.List;

import dto.Product;

//자바빈즈로 사용할 상품 데이터 접근 클래스
public class ProductRepository {
	private List<Product> listOfProducts = new ArrayList<Product>();
	
	//생성자
	public ProductRepository() {
		Product phone = new Product("P1234", "iPhone 13s", 800000);
		phone.setDescription("4,7-inch, 1334X750 Renina HD display");
		phone.setCategory("Smart Phone");
		phone.setManufacturer("Apple");
		phone.setUnitsInStock(1000);
		phone.setCondition("New");
		
		Product notebook = new Product("P1235", "LG PC 그램", 1500000);
		notebook.setDescription("13.3-inch, IPS LED display, 5th Generation");
		notebook.setCategory("Notebook");
		notebook.setManufacturer("LG");
		notebook.setUnitsInStock(1000);
		notebook.setCondition("Refurbished");
		
		Product tablet = new Product("P1236", "Galaxy Tab S", 900000);
		tablet.setDescription("212.8*125.6*6.6mm, Super AMOLED display");
		tablet.setCategory("Tablet");
		tablet.setManufacturer("Samsung");
		tablet.setUnitsInStock(1000);
		tablet.setCondition("Old");
		
		//List<Product> 객체 타입의 변수에 저장
		listOfProducts.add(phone);
		listOfProducts.add(notebook);
		listOfProducts.add(tablet);
	}//end constructor
	//객체 타입의 변수 listOfProducts에 저장된 모든 상품 목록을 가져옴
	public List<Product> getAllProducts(){
		return listOfProducts;
	}
	
}

1. 액션태그 종류

1) forward: 페이지 흐름 제어
2) include: 외부 페이지 포함
3) useBean: 자바빈즈 설정
4) setProperty: 자바빈즈의 프로퍼티(멤버변수) 값 설정
5) getProperty: 자바빈즈의 프로퍼티(멤버변수) 값 가져옴
6) param: forward, include, plugin 태그에 파라미터 추가

2. forward 액션 태그

  • JSP 컨테이너가 처리
  • 전까지 출력 버퍼의 내용을 모두 비움
  • 설정된 페이지로 프로그램의 제어가 이동

3. include 액션 태그

  • 현재 JSP 페이지에 외부 파일을 포함
  • 외부 파일 : JSP, HTML, 서블릿 페이지

4. Param 액션 태그

  • 단독으로 사용할 수 없음
  • <jsp:forward.., <jsp:include.. 태그의 내부에서 사용됨
  • 다른 페이징에 파라미터 목록을 전달할 때 사용됨

문제1. forward 액션 태그를 이용하여 처리해보자

1) forward02.jsp 파일 생성

  • <h4>구구단 출력하기</h4>
  • forward 액션 태그로 forward02_data.jsp파일로 이동
  • param 액션 태그로 숫자 5를 forward02.jsp 파일로 전달

2) forward02_data.jsp 파일 생성

  • 전달받은 숫자 5의 구구단 출력

문제2. 다음 조건에 맞게 개발해보자
1) src 폴더에 ch04.com.dao 패키지로 GuGuDan 클래스를 생성하여 곱셈을 계산하는 process()메소드 작성
2) useBean.jsp 파일 생성

  • useBean 액션 태그에 GuGuDan 클래스를 사용하도록 작성
  • <h4>구구단 출력하기<h4>
  • 숫자 5에 대해 GuGuDan 클래스의 process() 메소드를 호출하여 구구단 출력

0개의 댓글