[jsp 실습-계산기 만들기]useBean, setProperty 이용방법

J의 괴발 공부·2023년 8월 8일
0

java

목록 보기
1/13

JSP 기본 요소

<%@ 지시어 % >
<%! 전역변수,메소드 선언 %>
<% 자바코드 기술 %>
<%= 표현식,출력할내용 %>

JSP 페이지의 구성 요소

  • 지시어(Directive): page, include, taglib
  • 스크립트: 선언부, 스크립트릿, 표현식
  • 기본 객체(Implicit Object)
  • 표현언어(Expression Language)
  • 표준 태그 라이브러리(JSTL)

선언문 안에서 선언한거는 전역변수 <%! %>, <% %> 안에서 선언한거는 지역변수이다.

jsp파일1개, html 파일1개, java파일 1개 = 총 3개의 파일로 계산기를 만드는 실습!

우선 jsp 파일

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>  
  <!-- 추가 -->
<jsp:useBean id="calc" class="calc.Calculator" />  
<!-- java페이지인 빈즈클래스를 사용하겠다고 선언 ,jsp에서 액션태그라고함 아이디:속성 꼭잇어야함-->

<jsp:setProperty name="calc" property="*" />
 
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>계산기에 useBean 적용</title>
</head>
<body style="text-align:center">
	<h2> 계산결과 </h2>
	<hr>
	결과: ${calc.calc()}   <!-- 표현언어 -->
</body>
</html>

<jsp:useBean id="calc" class="calc.Calculator" /> 는
우선, jsp와 java의 class는 서로 완전 다른 독립적이다. 서로 이어서 쓸라면 useBean이 필요함
class="패키지명.클래스명"을 쓰겠다는 의미!!!!!!
id="calc"는 쓰려는 class이름의 별칭이다. 즉 해당실습에서는 class="calc.Calculator" 쓰겠다는 줄임말=별칭!!!
그리고 id와 바로 아래의 name은 일치해야함.

<jsp:setProperty name="calc" property="" /> 는
클래스(class="calc.Calculator")의 setter 를 의미함.
즉 모든=
(all) setter 메소드를 호출해라 뜻.

html 파일

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>사칙연산 계산기 폼</title>
</head>
<body style="text-align:center">
	<h2>사칙연산 계산기</h2>
	<hr>
	<form method="POST" action="calc02.jsp">  
      <!-- 분리시 다른점 액션속성이 추가됨 -->
		<input type="text" name="num1" size="10" />
		<select name="operator" >
			<option selected>+</option>
			<option>-</option>
			<option>*</option>
			<option>/</option>
		</select>
		<input type="text" name="num2" width="200" size="5" />
		<input type="submit" value="계산" name="sub1" />
		<input type="reset" value="다시입력" name="reset1" />
	</form>
</body>
</html>

java 파일

package calc;
public class Calculator {
	//멤버필드 선언
	private int num1;
	private int num2;
	private String operator;
	
	public void setNum1(int num1) {
		this.num1 = num1;
	}
	
	public void setNum2(int num2) {
		this.num2 = num2;
	}
	
	public void setOperator(String operator) {
		this.operator = operator;
	}
		
	//개발자가 필요에 의해서 만드는 메소드구현 ->사칙연산 기능 메소드
	public long calc() {
		long result = 0;
		
		switch(operator) {
		case "+": result = num1 + num2; break;
		case "-": result = num1 - num2; break;
		case "*": result = num1 * num2; break;
		case "/": result = num1 / num2; break;
		}
		return result;		
	}	
}

빈즈(Beans) 클래스란?
규칙: 멤버필드랑 getter,setter 가 있는 클래스를 말함.
html 폼에서 넘어온 값이 3개(입력한값,사칙연산,입력한값), 그 값을 저장할 그릇(num1,num2,operator)을 필드 선언.
멤버필드 하나당 getter,setter 선언을 하는데 현재 실습에서는 getter는 사용하지않아서
setter만 선언.

결과값

profile
괴발자가 될것인가, 개발자가 될것인가?

0개의 댓글