각 JSP 작업 태그는 특정 작업을 수행하는 데 사용
JSP 태그는 페이지 간 플로우를 제어하고 Java Bean을 사용하는 데 사용
JSP | Action Tags Description |
---|---|
jsp:forward | 요청과 응답을 다른 리소스로 전달 |
jsp:include | 다른 리소스를 포함 |
jsp:useBean | Bean 오브젝트를 작성 및 찾기 |
jsp:setProperty | Bean 객체의 속성 값을 설정 |
jsp:getProperty | Bean의 특성 값을 인쇄 |
jsp:plugin | 애플릿과 같은 다른 구성 요소를 포함 |
jsp:param | 매개 변수 값을 설정, 대부분 forward, include에서 사용 |
jsp:fallback | 플러그인이 작동하는 경우 메시지를 인쇄하는 데 사용(jsp : plugin에서 사용) |
->jsp:useBean, jsp:setProperty and jsp:getProperty tags은 bean develop에만 씀
요청을 다른 자원으로 전달하는 데 사용
<jsp:forward page="relativeURL | <%= expression %>" />
ex)
<jsp:forward page="printdate.jsp" />
<% out.print("Today is:"+java.util.Calendar.getInstance().getTime()); %>
<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") %>
장점: 코드 재사용성 (모든 페이지에 머리글 및 바닥 글 페이지를 포함하는 등 여러 페이지를 사용할 수 있음. 따라서 많은 시간이 절약됨)
JSP include directive | JSP include action |
---|---|
번역시 리소스를 포함 | 요청시 리소스를 포함 |
정적 페이지에 더 좋음 | 동적 페이지에 더 좋음 |
생성된 서블릿에 원래 컨텐츠를 포함 | include 메소드를 호출 |
<jsp:include page="relativeURL | <%= expression %>" />
<jsp:include page="relativeURL | <%= expression %>">
<jsp:param name="parametername" value="parametervalue | <%=expression%>" />
</jsp:include>
ex)
<jsp:include page="printdate.jsp" />
장점: 재사용 가능, 여러 객체를 하나의 객체로 캡슐화하여 여러 장소에서 이 객체에 액세스 할 수 있음, 유지 보수가 용이
예시)
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 사용
오브젝트의 사용자가 액세스 할 수있는 명명 된 기능입니다.
기능은 사용자가 정의한 클래스를 포함하는 모든 Java 데이터 유형일 수 있음.
JavaBean 특성은 읽기, 쓰기, 읽기 전용 또는 쓰기 전용 일 수 있음
JavaBean 기능은 JavaBean 구현 클래스의 두 가지 메소드를 통해 액세스됨
예를 들어, 특성 이름이 firstName 인 경우 메소드 이름은 getFirstName ()으로 해당 특성을 읽음
예를 들어, 속성 이름이 firstName 인 경우 해당 속성을 쓰려면 메서드 이름이 setFirstName ()이 됨
JavaBean 등록 정보 및 메소드는 다른 응용 프로그램에 노출 될 수 있음
소프트웨어 구성 요소 쉽게 재사용 가능
JavaBean은 변경 가능 -> 불변 객체의 이점을 활용할 수 없음
각 속성에 대해 setter 및 getter 메서드를 별도로 만들면 상용구 코드 발생 가능성 있음
Bean 클래스를 찾거나 인스턴스화하는 데 사용
Bean 클래스의 Bean 오브젝트가 이미 작성된 경우 범위에 따라 Bean을 작성하지 않음
Bean의 오브젝트가 작성되지 않으면 Bean을 인스턴스화함
<jsp:useBean id= "instanceName" scope= "page | request | session | application"
class= "packageName.className" type= "packageName.className"
beanName="packageName.className | <%= expression >" >
</jsp:useBean>
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);
%>
Java Bean으로 웹 애플리케이션을 개발하는 데 사용
웹 개발에서 Bean 클래스는 데이터를 나타내는 재사용 가능한 소프트웨어 구성 요소이기 때문에 주로 사용
-> Bean에서 특성 값을 설정
<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 name = "instanceOfBean" 속성 = "propertyName" />
ex)
<jsp : getProperty name = "obj" 속성 = "name" />
값 입력을위한 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 파일에 applet을 포함시키는 데 사용
jsp : plugin 액션 태그는 클라이언트 측에서 플러그인을 다운로드하여 applet 또는 Bean을 실행