표준 액션 태그란? 미리 정해진 기능들을 JSP 스펙에 명시함으로써 모든 컨테이너가 동일하게 구현되는 태그이다. 모든 JSP 컨테이너에서 기본으로 제공하고 있어서 기본 액션 태그라고도 한다.
여러 가지 표준 액션 태그 중에서 자주 사용하는 태그들은 jsp:attribute, jsp:body, jsp:element, jsp:fallback, jsp:forward, jsp:getProperty, jsp:include, jsp:output, jsp:param, jsp:plugin, jsp:setProperty, jsp:useBean 등이 있다.
JSP 자바빈즈란? JSP의 표준 액션 태그로 접근할 수 있는 자바 클래스로서 값을 가지는 속성(멤버변수)과 값을 설정하는 메소드(setter), 값을 추출하는 메소드(getter)로 이루어져 있다. 자바빈즈는 하나의 JSP 페이지에 종속적으로 사용되는 것이 아니라, 여러 JSP 페이지에서 사용될 수 있다. 자바빈즈는 자바 클래스와 같은 개념이라고 할 수 있다.
자바 빈즈르르 쓰지 않는다면, 전달된 질의 문자열이 50개있으면 50번의 request.getParameter()을 통해 추출할 수 있다. 하지만, 자바빈즈를 사용하면 빈즈를 지원하는 액션 태그를 한 번만 사용해서 클라이언트로부터 전달된 데이터를 추출함과 동시에 값들을 저장할 수 있다.
여러 페이지에서 사용해야 하는 데이터는 자바빈즈를 이용하여 쉽게 유지하여 여러 범위에서 사용할 수 있다.
JSP 페이지 내에서 필요한 비지니스 로직을 컴포넌트(각각의 클래스)로 만들어 활영하면 JSP 페이지의 크기난 작아지고, 각 JSP 페이지에서 필요로 하는 기능은 컴포넌트 재활용을 통해 구현하므로 웹 애플리케이션을 효과적으로 구현할 수 있다.
다음은 브라우저로 부터 이름과 국어, 영어 점수를 입력받아 이름, 국어, 영어점수를 각각 출력하고 국어, 영어점수의 총점과 평균을 출력하는 프로그램이다. 출력창과 비지니스 로직을 따로 작성해주어야 한다.
html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
클라이언트에서 다량의 정보 전달 beans로 처리<p/>
* 성적 자료 입력 *<br/>
<form action="test11beans.jsp" method="post">
이름 : <input type="text" name="name" /> <br>
국어 : <input type="text" name="kor" /> <br>
영어 : <input type="text" name="eng" /> <br>
<input type="submit" value="전송" />
</form>
</html>
html의 input 태그를 이용해 브라우저로 부터 이름, 국어, 영어의 값을 받는다. 그리고 jsp로 연결한다.
jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
request.setCharacterEncoding("utf-8");
%>
<jsp:useBean id="bean" class="pack.Test11formBean"></jsp:useBean>
<jsp:setProperty property="*" name="bean" />
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
폼비에 등록된 자료를 출력<br/>
이름은 <jsp:getProperty property="name" name="bean"/><br/>
국어는 <jsp:getProperty property="kor" name="bean"/><br/>
영어는 <jsp:getProperty property="eng" name="bean"/><br/>
<jsp:useBean id="process" class="pack.Test11Process"></jsp:useBean>
<jsp:setProperty property="formBean" name="process" value="<%=bean %>"/>
총점은 <jsp:getProperty property="tot" name="process"/> <br/>
평균은 <jsp:getProperty property="avg" name="process"/> <br/>
</body>
</html>
frombean
package pack;
public class Test11formBean { // 클라이언트에서 전달되는 값이 여러 개인 경우 폼빈을 사용
private String name;
private int kor;
private int eng;
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setKor(int kor) {
this.kor = kor;
}
public int getKor() {
return kor;
}
public void setEng(int eng) {
this.eng = eng;
}
public int getEng() {
return eng;
}
}
getter와 setter를 작성한다.
process
package pack;
public class Test11Process {
// 총점과 평균 등의 작업을 위한 Business Logic 클래스
private Test11formBean formBean;
public void setFormBean(Test11formBean formBean) {
this.formBean = formBean;
}
public int getTot() {
return formBean.getKor() + formBean.getEng();
}
public double getAvg() {
return getTot() / 2.0;
}
}
총점과 평균을 구하는 비지니스 로직이다.
참고 문헌 : 처음 해보는 Servlet&JSP 웹 프로그래밍