[JSP] JSP Action Tags 정리

정예은·2020년 1월 9일
3

web

목록 보기
10/27

JSP Action Tags

각 JSP 작업 태그는 특정 작업을 수행하는 데 사용
JSP 태그는 페이지 간 플로우를 제어하고 Java Bean을 사용하는 데 사용

JSPAction Tags Description
jsp:forward요청과 응답을 다른 리소스로 전달
jsp:include다른 리소스를 포함
jsp:useBeanBean 오브젝트를 작성 및 찾기
jsp:setPropertyBean 객체의 속성 값을 설정
jsp:getPropertyBean의 특성 값을 인쇄
jsp:plugin애플릿과 같은 다른 구성 요소를 포함
jsp:param매개 변수 값을 설정, 대부분 forward, include에서 사용
jsp:fallback플러그인이 작동하는 경우 메시지를 인쇄하는 데 사용(jsp : plugin에서 사용)

->jsp:useBean, jsp:setProperty and jsp:getProperty tags은 bean develop에만 씀


jsp:forward action tag

요청을 다른 자원으로 전달하는 데 사용

파라미터 없을때 syntax:

<jsp:forward page="relativeURL | <%= expression %>" />
ex)

<jsp:forward page="printdate.jsp" />   
<% out.print("Today is:"+java.util.Calendar.getInstance().getTime()); %>  

파라미터 있을때 syntax:

<jsp:forward page="relativeURL | <%= expression %>">  
<jsp:param name="parametername" value="parametervalue | <%=expression%>" />  
</jsp:forward>  

ex)

<jsp:forward page="printdate.jsp" />  
<jsp:param name="name" value="ok!!" />   
</jsp:forward>  
<% out.print("Today is:"+java.util.Calendar.getInstance().getTime()); %>  
<%= request.getParameter("name") %>  

include action tag

장점: 코드 재사용성 (모든 페이지에 머리글 및 바닥 글 페이지를 포함하는 등 여러 페이지를 사용할 수 있음. 따라서 많은 시간이 절약됨)

include directive와 include action 차이점

JSP include directiveJSP include action
번역시 리소스를 포함요청시 리소스를 포함
정적 페이지에 더 좋음동적 페이지에 더 좋음
생성된 서블릿에 원래 컨텐츠를 포함include 메소드를 호출

파라미터 없는 syntax

<jsp:include page="relativeURL | <%= expression %>" />  

파라미터 있는 syntax

<jsp:include page="relativeURL | <%= expression %>">  
<jsp:param name="parametername" value="parametervalue | <%=expression%>" />  
</jsp:include>  

ex)

<jsp:include page="printdate.jsp" />  

JavaBean

JavaBean 규칙

  1. 인수가없는 생성자가 있어야 함
  2. 직렬화가 가능해야 함
  3. 특성 값을 가져오는 getter과 특성 값을 설정하는 setter가 제공되어야 함

장점: 재사용 가능, 여러 객체를 하나의 객체로 캡슐화하여 여러 장소에서 이 객체에 액세스 할 수 있음, 유지 보수가 용이

예시)

package mypack;  
public class Employee implements java.io.Serializable{  
  private int id;  
  private String name;  
  
  public Employee(){}  
  public void setId(int id){
    this.id=id;
  }  
  public int getId(){
    return id;
  }  
  public void setName(String name){
    this.name=name;
  }  
  public String getName(){
    return name;
  }  
}  

접근하는 방법

package mypack;  
public class Test{  
  public static void main(String args[]){  
    Employee e=new Employee();//객체 생성
    e.setName("Arjun");//객체의 값 설정
    System.out.println(e.getName());  
  }
}  

객체에 값을 전달: 생성자를 이용해 세팅, setter method 사용

Javabean 속성

오브젝트의 사용자가 액세스 할 수있는 명명 된 기능입니다.
기능은 사용자가 정의한 클래스를 포함하는 모든 Java 데이터 유형일 수 있음.

JavaBean 특성은 읽기, 쓰기, 읽기 전용 또는 쓰기 전용 일 수 있음
JavaBean 기능은 JavaBean 구현 클래스의 두 가지 메소드를 통해 액세스됨

  1. getPropertyName () ->accessor

예를 들어, 특성 이름이 firstName 인 경우 메소드 이름은 getFirstName ()으로 해당 특성을 읽음

  1. setPropertyName () -> mutator

예를 들어, 속성 이름이 firstName 인 경우 해당 속성을 쓰려면 메서드 이름이 setFirstName ()이 됨

장점

JavaBean 등록 정보 및 메소드는 다른 응용 프로그램에 노출 될 수 있음
소프트웨어 구성 요소 쉽게 재사용 가능

단점

JavaBean은 변경 가능 -> 불변 객체의 이점을 활용할 수 없음
각 속성에 대해 setter 및 getter 메서드를 별도로 만들면 상용구 코드 발생 가능성 있음


jsp:useBean action tag

Bean 클래스를 찾거나 인스턴스화하는 데 사용
Bean 클래스의 Bean 오브젝트가 이미 작성된 경우 범위에 따라 Bean을 작성하지 않음
Bean의 오브젝트가 작성되지 않으면 Bean을 인스턴스화함

Syntax of jsp:useBean action tag

<jsp:useBean id= "instanceName" scope= "page | request | session | application"   
class= "packageName.className" type= "packageName.className" 
beanName="packageName.className | <%= expression >" >  
</jsp:useBean>  

jsp:useBean action tag 속성과 사용

id: 지정된 범위에서 Bean을 식별하는 데 사용
scope: Bean의 범위, 페이지, 요청, 세션 또는 응용 프로그램 일 수 있음, 기본 범위: 페이지
page: JSP 페이지 내에서이 Bean을 사용할 수 있도록 지정
request: 동일한 요청을 처리하는 모든 JSP 페이지에서이 Bean을 사용할 수 있도록 지정, 페이지보다 범위 넓음
session: 동일한 요청을 처리하는지 여부에 관계없이 동일한 세션의 모든 JSP 페이지에서이 Bean을 사용할 수 있도록 지정, request보다 범위 넓음
application: 동일한 애플리케이션의 모든 JSP 페이지에서이 Bean을 사용할 수 있도록 지정, session 보다 범위 넓음
class: 지정된 Bean 클래스를 인스턴스화(Bean 클래스의 오브젝트를 작성), 인수가 없거나 생성자가 없어야하며 추상적이면 안 됨
type: Bean이 이미 범위에있는 경우 Bean에 데이터 유형을 제공, class 또는 beanName 속성과 함께 사용, class 또는 beanName없이 사용하면 Bean이 인스턴스화되지 않음
beanName: java.beans.Beans.instantiate () 메소드를 사용하여 Bean을 인스턴스화

예시)
Calculator.java

package com.javatpoint;  
public class Calculator{  
  
public int cube(int n){return n*n*n;}  
  
}  

action_tag.jsp

<jsp:useBean id="obj" class="com.javatpoint.Calculator"/>  
  
<%  
int m=obj.cube(5);  
out.print("cube of 5 is "+m);  
%>  


jsp:setProperty and jsp:getProperty action tags

Java Bean으로 웹 애플리케이션을 개발하는 데 사용
웹 개발에서 Bean 클래스는 데이터를 나타내는 재사용 가능한 소프트웨어 구성 요소이기 때문에 주로 사용

jsp:setProperty action tag

-> Bean에서 특성 값을 설정

Syntax:

<jsp:setProperty name="instanceOfBean" property= "*"   |   
property="propertyName" param="parameterName"  |   
property="propertyName" value="{ string | <%= expression %>}"   
/>  

ex)
Bean에서 수신 요청의 모든 값을 설정해야하는 경우

<jsp:setProperty name="bean" property="*" />  

수신 특정 특성의 값을 설정해야하는 경우

<jsp:setProperty name="bean" property="username" />   

특성에서 특정 값을 설정해야하는 경우

<jsp:setProperty name="bean" property="username" value="Kumar" />  

jsp:getProperty action tag

-> 속성 값을 반환

Syntax:

<jsp : getProperty name = "instanceOfBean"  속성 = "propertyName"  />  

ex)

<jsp : getProperty name = "obj"  속성 = "name"  />  

JSP에서 bean development 예시

값 입력을위한 index.html
들어오는 값을 Bean 오브젝트로 설정하고 하나의 값을 인쇄하는 process.jsp 파일
setter 및 getter 메소드가있는 User.java Bean 클래스

index.html

<form action="process.jsp" method="post">  
Name:<input type="text" name="name"><br>  
Password:<input type="password" name="password"><br>  
Email:<input type="text" name="email"><br>  
<input type="submit" value="register">  
</form>  

process.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<jsp:useBean id="u" class="com.hello.User"></jsp:useBean>  
<jsp:setProperty property="*" name="u"/> 
  
name: <jsp:getProperty property="name" name="u"/><br>  
password: <jsp:getProperty property="password" name="u"/><br>  
email: <jsp:getProperty property="email" name="u" /><br> 
</body>
</html>

User.java

package com.hello;

public class User {
	private String name, password, email; 
	public void setName(String name){
		this.name=name;
	}
	public String getName(){
	return name;
	}
	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}
	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}
} 

이런 식으로 변수에 들어있는 값을 가지고 setter를 쓸 수도 있음

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<jsp:useBean id="u" class="com.hello.User"></jsp:useBean>  
<%  
String name="arjun";  
%>  
<jsp:setProperty property="name" name="u" value="<%=name %>"/>  
  
Record:<br>  
<jsp:getProperty property="name" name="u"/><br>  
</body>
</html>

jsp:plugin action tag

jsp 파일에 applet을 포함시키는 데 사용
jsp : plugin 액션 태그는 클라이언트 측에서 플러그인을 다운로드하여 applet 또는 Bean을 실행

0개의 댓글