Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- select
- 마리아DB 쿼리 로그
- json
- this와 this() 차이
- 백준 11659번
- 슈더코드
- this
- 백준
- pseudo-code
- SQL
- 합배열
- MariaDB Query Log
- 2차원배열 구간합
- jquery
- 생성자
- interrupted()
- 구간합
- ajax
- 백준 11660번
- Java
- 자바 람다식
- @NoArgsConstructor
- @AllArgsConstructor
- 백준 1235번
- Bean LifecCycle
- 구간합구하기
- 상속과 참조
- function test
- InterruptException
- map()
Archives
- Today
- Total
평범한 연구소
[JSP|Servlet] 액션 태그(action tag)와 자바빈즈(Java Bean) 본문
액션 태그 (action tag)
- JSP 액션 태그는 클라이언트 혹은 서버에게 어떠한 동작을 행하도록 명령을 내리는 태그
- JSP 페이지에서 페이지의 모듈화와 흐름제어를 위해 include, forward 액션 태그를 제공하고, 자바빈의 사용을 위해 useBean, setProperty, getProperty 등의 액션 태그를 제공한다
- JSP 액션 태그는 XML 구문 형식으로 작성한다. 시작 태그가 있으면 반드시 끝나는 태그도 있어야 한다.
- 대소문자를 구분한다.
- 접두어 jsp: 이 붙는다. <jsp: ~ 로 시작해야 한다.
- 속성 값만 지정하고 내용이 없을 경우에는, 끝나는 태그를 따로 하지 않고 시작태그 마지막 부분을 / 로 마무리한다.
<jsp:useBean> | 자바빈 객체를 생성하고 사용하기 위한 환경을 정의하는 태그 |
<jsp:setProperty> | <jsp:useBean> 태그로 생성한 자바빈 객체의 속성값 설정 |
<jsp:geProperty> | <jsp:useBean> 태그로 생성한 자바빈 객체의 속성값 추출 |
<jsp:forward> | 현재 페이지에서 다른 페이지로 제어 이동 |
<jsp:element> | 임의의 XML 태그나 HTML 태그를 생정 |
<jsp:attribute> | 지정한 이름의 속성 값을 설정하는 태그 |
<jsp:body> | 사용자 정의 태그의 바디 부분을 설정하는 태그. 속성 값 없음. <jsp:attribute> 에서 속성을 설정하는 경우, 분문 부분은 반드시 <jsp:body>를 사용하여 작성. |
<jsp:text> | JSP 페이지나 문서 템플릿에 표시할 텍스트 |
자바 빈즈 (Java Bean)
- 자바빈 규약에 따라 만들어진 클래스
- 데이터를 표현하는 것을 목적으로 하는 자바 클래스
- 폼 데이터 처리 용이
- 클라이언트로부터 입력 받아 처리하는 쿼리 문자열은 파라미터 수 만큼 request.getParameter()를 사용하여 받지만, 자바빈즈는 액션태그 한 번만 사용해서 모든 질의 문자열의 값을 추출하여 빈즈 객체에 저장 가능.
- 자바빈즈 활용 범위 확장 용이
- 여러 페이지에서 사용해야하는 데이터는 자바빈즈를 이용하여 쉽게 여러 범위(request, session)에서 사용 가능
- 컴포넌트 기반 구현 기능
- JSP 페이지 내에서 필요한 비즈니스 로직을 컴포넌트로 만들어 활용하면 JSP 페이지의 크기는 작아지고, 각 JSP페이지에서 필요로 하는 기능은 컴포넌트 재활용을 통해 구현되므로 웹 애플리케이션을 효과적으로 구현 가능
자바빈 규약
- JSP에서 자바 빈즈를 사용할 때 기본 패키지(패키지 없는 경우)에 있으면 인식이 안되므로 반드시 패키지화가 되어있어야 한다.
- 기본 생성자 존재. <jsp:useBean> 은 기본 생성자를 이용하여 객체를 생성한다.
- 프로퍼티(멤버변수)의 접근 제어자는 private 로 선언되어야한다.
- 프로퍼티에 접근 가능한 getter, setter 메소드 존재해야한다.
- getter, setter 메소드의 접근자는 public 으로 선언되어야한다.
- 프로퍼티는 읽기 및 쓰기가 가능해야하지만, 읽기 전용 프로퍼티인 경우 getter 메소드만 작성 가능.
- 프로퍼티가 boolean 인 경우 get 대신 is 메소드 작성 가능
- 직렬화 되어 있어야 한다. (선택사항)
<jsp:useBean>
- 빈 클래스를 찾거나 인스턴스화 하는 데 사용한다.
- Bean 객체가 이미 생성된 경우, Bean 클래스의 범위에 따라 Bean을 생성하지 않는다. 그러나 Bean의 객체가 생성되지 않으면 Bean을 인스턴스화 한다.
Calculator.java
package ch05.calc;
public class Calculator {
private int num1;
private int num2;
private String operator;
public int getNum1() {
return num1;
}
public void setNum1(int num1) {
this.num1 = num1;
}
public int getNum2() {
return num2;
}
public void setNum2(int num2) {
this.num2 = num2;
}
public String getOperator() {
return operator;
}
public void setOperator(String operator) {
this.operator = operator;
}
@Override
public String toString() {
String s = "";
if(operator == null) return s;
try {
switch (operator) {
case "+": s = String.format("%d + %d = %d", num1, num2, num1+num2); break;
case "-": s = String.format("%d - %d = %d", num1, num2, num1-num2); break;
case "*": s = String.format("%d * %d = %d", num1, num2, num1*num2); break;
case "/": s = String.format("%d / %d = %d", num1, num2, num1/num2); break;
}
} catch (ArithmeticException e) {
s = "연산 불가";
} catch (Exception e) {
s = "연산 오류";
}
return s;
}
}
ex01.jsp, ex01_ok.jsp
<form action="ex01_ok.jsp" method="post">
<p>
<input type="text" name="num1" required="required" pattern="\d+">
<select name="operator">
<option value="+">더하기</option>
<option value="-">빼기</option>
<option value="*">곱하기</option>
<option value="/">나누기</option>
</select>
<input type="text" name="num2" required="required" pattern="\d+">
<button type="submit"> = </button>
</p>
</form>
...
[ex01_ok.jsp]
<jsp:useBean id="calc" class="ch05.calc.Calculator"/>
<%-- Calculator calc = new Calculator(); 와 유사 --%>
User.java
: getter, setter
ex02.jsp, ex02_ok.jsp
<form action="ex02_ok.jsp" method="post">
<p> 번호 : <input type="text" name="no"> </p>
<p> 이름 : <input type="text" name="name"> </p>
<p> 나이 : <input type="text" name="age"> </p>
<p> 과목 : <input type="text" name="subject"> </p>
<p>
<button>확인</button>
</p>
</form>
...
[ex02_ok.jsp]
<jsp:useBean id="vo" class="ch05.user.User"/>
<%-- 빈 생성 --%>
<jsp:setProperty>
- <jsp:useBean> 등에서 생성한 인스턴스의 프로퍼티에 값을 설정하며, setter 메소드를 사용하여 bean의 등록 정보 값을 설정한다.
ex01_ok.jsp
<jsp:setProperty property="*" name="calc"/>
<%--
calc.setNum1(Integer.parseInt(request.getParameter("num1")));
calc.setNum2(Integer.parseInt(request.getParameter("num2")));
calc.setOperator(request.getParameter("operator"));
의 역할을 한다.
단, form 태그의 input 요소의 name 속성과 동일한 Calculator 클래스의 필드에 값을 설정
--%>
ex02_ok.jsp
- 보통 자바 클래스의 필드 이름과 동일하게 준다.
<%-- 생성된 빈에 속성(파라미터) 값 설정 --%>
<%-- property="*" 는 form input 요소의 name과 User 클래스의 필드이름이 동일한 경우에만 설정 --%>
<jsp:setProperty property="*" name="vo"/>
<%-- form input 요소의 name과 User 클래스의 필드가 다른 경우 --%>
<jsp:setProperty property="num" param="no" name="vo"/>
<jsp:forward>
- 요청(request)을 다른 리소스(jsp, servlet, html 등)으로 전달 하는데에 사용.
<jsp:element>, <jsp:attribute>, <jsp:body>, <jsp:text>
<!-- jsp:element 는 XML 또는 HTML 태그를 만든다. -->
<jsp:element name="userName">
<jsp:attribute name="gender">
여자
</jsp:attribute>
<jsp:body>사임당</jsp:body>
</jsp:element>
<!-- jsp:text 는 jsp 페이지에 표시할 텍스트 -->
<p>
<jsp:text> text 액션 태그 </jsp:text>
</p>
'Pront > Javascript' 카테고리의 다른 글
[JSP|Servlet] JDBC (0) | 2022.10.02 |
---|---|
[JSP|Servlet] 에러 페이지 (0) | 2022.10.02 |
[JSP|Servlet] submit 관련 버튼 (0) | 2022.10.02 |
[JSP|Servlet] Request Parameter (0) | 2022.10.02 |
[JSP] GET, POST 방식의 차이점 (0) | 2022.09.27 |