1. 액션 태그
- 액션 태그는 XML 형식인 <jsp: />를 이용
- 서버나 클라이언트에게 어떤 행동을 하도록 명령하는 태그
- 페이지와 페이지 사이를 제어하거나 다른 페이지의 실행 결과 내용을 현재 페이지에 포함시키거나 자바빈즈(객체)를 다루는 등의 다양한 기능을 제공
- 태그 이름을 그냥 쓰면 HTML에서 쓰는 태그로 인식하기 때문에 태그 앞에 id:를 붙여주므로써 만들어진 거라는 것을 나타냄
<jsp:forward/> | 다른 페이지로 이동, 페이지의 흐름을 제어하기 위한 역할 |
<jsp:param/> | 현재 페이지에서 다른 페이지로 값을 전달하기 위한 역할 |
<jsp:useBean/> | 객체 생성 |
<jsp:setProperty/> | 객체 필드 세팅 |
<jsp:getProperty/> | 객체 필드값 접근 |
2. 예시(forward, param)
* 요청하는 값 인코딩 설정
<% request.setCharacterEncoding("UTF-8"); %>
요청하는 값이 한국어라면 UTF-8로 인코딩을 맞춰줘야 요청하는 값이 다른 페이지로 갔을 때 아무 문제 없이 나온다.
- <jsp:forward page="경로"/> 를 사용하게 되면 page에 적혀있는 쪽으로 이동하게 된다. 아무런 설정을 하지 않는다면 로딩되자마자 이동하게 된다.
- forward를 하면서 다른 쪽에 데이터도 같이 보낼 수 있는데, forward 태그 안에 <jsp:param value="" name=""/>을 사용하여 보낼 수 있다.
- value는 보낼 값이고, name은 요청을 받는 쪽에서 식별해서 그 값을 받기 위한 이름을 쓰면 된다.
- 받는 쪽에서 request.getParameter("식별이름"); 을 이용해 요청 쪽에서 보내는 값을 받을 수 있다.
3. 자바빈즈(자바 객체)
- JSP의 표준 액션 태그를 통해 접근할 수 있는 자바 클래스로서 필드 변수와 setter, getter 메소드로 이루어져 있음
- 여러 데이터들을 포장해서 가지고 있는 형태로 구성
- 자바빈즈 개발 규약
- 패키지화(default 패키지 사용 X -> 인식 불가)
- 필드 변수 접근제어자는 private으로 설정(접근은 메소드로만 가능하게 하기 위함)
- getter, setter 메소드는 반드시 public으로 설정 - 자바빈즈 태그
- 클래스에 setter, getter가 없으면 사용 불가- 객체 생성
<jsp:useBean class="패키지명.클래스명" id="객체명"/> - 객체 필드 세팅
<jsp:setProperty property="필드명" param="요청 보내는 값의 name" or value="세팅값" name="객체명"/>
- 만약 요청에서 보내는 값의 name과 객체의 프로퍼티의 이름이 같으면 value나 param 생략 가능
- 생략 시 알아서 같은 name을 가지고 있는 param의 값으로 세팅
- value="request.getParameter("name")", param="요청 보내는 값의 name" - 객체 필드 값 접근
<jsp:getProperty property="필드명" name="객체명"/> - 태그의 특징
- setProperty와 getProperty의 property 속성의 필드명은 객체의 필드를 뜻하는 게 아니라 그 필드명의 setter와 getter를 불러오는 것이다.
- 객체의 모든 필드명과 모든 파라미터의 name이 동일하다면 setProperty에서 property 속성의 값을 "*"으로 해줄 수 있다. 그러면 모든 값을 넘기게 된다.
- 객체 생성
4. 예시 1(자바빈즈)
- TestDTO 객체를 이용해서 사용자가 입력하는 값을 자바빈즈를 이용해서 포장함
5. 예시 2
- 회원가입 폼으로 입력하는 값 자바빈즈로 객체 포장
- 회원가입이기 때문에 보안을 위해 GET 방식이 아닌 POST 방식이 더 좋음
- UserDTO 객체의 필드 이름과 요청할 때의 input name이 같기 때문에 param이 생략 가능하며 모든 필드가 생략 가능하고 모든 필드에 받은 값들을 다 넣을 거기 때문에 property="*"으로 가능하다.
- 이것도 역시 응답으로 보여줄게 아니고 처리만 할 목적이라면 필요한 내용 외에 다 지워도 무관하다.
'웹개발 > JSP' 카테고리의 다른 글
[JSP] 쿠키(Cookie) (0) | 2022.05.22 |
---|---|
[JSP] 내장 객체, Form 유효성 검사 및 예제 (0) | 2022.05.22 |
[JSP] 디렉티브 태그(Directive Tag) (0) | 2022.05.20 |
[JSP] JSP(Java Server Page), 스크립트 태그 (0) | 2022.05.19 |
[JSP] 서블릿(Servlet) (0) | 2022.05.19 |