○ 자바빈즈(JavaBeans)
- 자바로 작성된 소프트웨어 컴포넌트
- 빌더 형식의 개발도구에서 가시적으로 조작이 가능하고 또한 재사용이 가능한 소프트웨어 컴포넌트
- 자바빈즈를 이용하면 JSP(뷰단)와 JAVA를 분리해서 재사용이 가능하고 코드가 복잡해지는 것을 방지함
○ JSP 액션태그
- 현재 JSP 페이지에서 다른 페이지에 정보를 전달하는 태그
① 페이지 이동
<jsp:forward page=""></jsp:forward>
② 공통페이지 가져오기
<jsp:include page=""></jsp:include>
③ 자바빈 객체(object)생성
<jsp:useBean id=""></jsp:useBean>
<jsp:useBean id="객체명"
class="패키지명.클래스명"
scope="page"></jsp:useBean>
○ Scope 유효범위
- page : 현재 페이지에서만 유효, 생략시 기본값
- request : 다른 페이지에서 공유 (부모 자식 사이에서만 공유)
- session : 다른 페이지에서 공유 (시간이 지나면 사라짐)
- application : 다른 페이지에서 공유 (모든 사용자와 공유)
○ JSP메소드 vs new 연산자 vs 자바빈즈
1) computeForm.jsp
- 연산할 숫자를 입력받음
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>
<title>computeForm.jsp</title>
</head>
<body>
<h3>☆ 계산기 ☆</h3>
<form action="computeok.jsp">
<table class="table">
<tr>
<th>숫자1</th>
<td><input type="number" name="num1" size="5"></td>
</tr>
<tr>
<th>숫자2</th>
<td><input type="number" name="num2" size="5"></td>
</tr>
<tr>
<td colspan="2">
<input type="submit" value="계산">
</td>
</tr>
</table>
</form>
</body>
</html>
2) Compute.java → 3)의 ②,③에서 사용
package net.testbean;
public class Compute {
public int add(int a, int b) { return a+b; }
public int sub(int a, int b) { return a-b; }
public int mul(int a, int b) { return a*b; }
public int div(int a, int b) { return a/b; }
public int mod(int a, int b) { return a%b; }
public int abs(int su) {
return Math.abs(su);
}
public long fact(int su) {
return (su==0) ? 1 : su*fact(su-1);
}//팩토리얼 구하기: 재귀함수
}//class end
3) computeok.jsp → 연산 결과 출력
① JSP 메소드 호출
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>computeok.jsp</title>
</head>
<body>
<h3>☆ 계산 결과 ☆</h3>
<h4>1) JSP 메소드 호출</h4>
<%
int num1=Integer.parseInt(request.getParameter("num1").trim());
int num2=Integer.parseInt(request.getParameter("num2").trim());
out.print(num1 + "+" + num2 + "=" + add(num1, num2));
out.print("<br>");
out.print(num1 + "-" + num2 + "=" + sub(num1, num2));
out.print("<br>");
out.print(num1 + "*" + num2 + "=" + mul(num1, num2));
out.print("<br>");
out.print(num1 + "/" + num2 + "=" + div(num1, num2));
out.print("<br>");
out.print(num1 + "%" + num2 + "=" + mod(num1, num2));
%>
<%!
//JSP 메소드 작성 영역
public int add(int a, int b) { return a+b; }
public int sub(int a, int b) { return a-b; }
public int mul(int a, int b) { return a*b; }
public int div(int a, int b) { return a/b; }
public int mod(int a, int b) { return a%b; }
%>
</body>
</html>
② new연산자를 이용해서 객체생성 후 메소드 호출
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="net.testbean.*" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>computeok.jsp</title>
</head>
<body>
<h3>☆ 계산 결과 ☆</h3>
<h4>2) new연산자를 이용해서 객체생성 후 메소드 호출</h4>
<%
int num1=Integer.parseInt(request.getParameter("num1").trim());
int num2=Integer.parseInt(request.getParameter("num2").trim());
//객체생성 new Compute()
// →RAM의 heap영역에 메모리가 할당되는 것
Compute comp = new Compute();
out.print(num1 + "+" + num2 + "=" + comp.add(num1, num2));
out.print("<br>");
out.print(num1 + "-" + num2 + "=" + comp.sub(num1, num2));
out.print("<br>");
out.print(num1 + "*" + num2 + "=" + comp.mul(num1, num2));
out.print("<br>");
out.print(num1 + "/" + num2 + "=" + comp.div(num1, num2));
out.print("<br>");
out.print(num1 + "%" + num2 + "=" + comp.mod(num1, num2));
%>
</body>
</html>
③ Java Bean을 이용해서 객체 생성 후 메소드 호출
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="net.testbean.*" %>
<jsp:useBean id="comp" class="net.testbean.Compute" scope="page"></jsp:useBean>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>computeok3.jsp</title>
</head>
<body>
<h3>☆ 계산 결과 ☆</h3>
<h4>3) Java Bean을 이용해서 객체 생성 후 메소드 호출 </h4>
<%
int num1=Integer.parseInt(request.getParameter("num1").trim());
int num2=Integer.parseInt(request.getParameter("num2").trim());
out.print(num1 + "+" + num2 + "=" + comp.add(num1, num2));
out.print("<br>");
out.print(num1 + "-" + num2 + "=" + comp.sub(num1, num2));
out.print("<br>");
out.print(num1 + "*" + num2 + "=" + comp.mul(num1, num2));
out.print("<br>");
out.print(num1 + "/" + num2 + "=" + comp.div(num1, num2));
out.print("<br>");
out.print(num1 + "%" + num2 + "=" + comp.mod(num1, num2));
%>
</body>
</html>
'Backend > JAVA_WEB' 카테고리의 다른 글
09. JavaBeans를 이용한 성적 테이블 CRUD 게시판 만들기 ② (성적입력, 성적목록, 공통코드 처리) (0) | 2022.07.15 |
---|---|
08. JavaBeans를 이용한 성적 테이블 CRUD 게시판 만들기 ① (DBopen, DBclose, DTO, DAO) (0) | 2022.07.06 |
06. JSP, DB연동해서 성적 테이블 CRUD 게시판 만들기 ② (성적 삭제, 수정) (0) | 2022.07.04 |
05. JSP, DB연동해서 성적 테이블 CRUD 게시판 만들기 ① (성적 입력, 리스트, 상세보기) (0) | 2022.07.03 |
04. JSP, form (form 관련 속성, 전송방식, 컨트롤 요소) (0) | 2022.06.29 |
댓글