<%@ 지시어 % >
<%! 전역변수,메소드 선언 %>
<% 자바코드 기술 %>
<%= 표현식,출력할내용 %>
선언문 안에서 선언한거는 전역변수 <%! %>, <% %> 안에서 선언한거는 지역변수이다.
jsp파일1개, html 파일1개, java파일 1개 = 총 3개의 파일로 계산기를 만드는 실습!
<%@ 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 메소드를 호출해라 뜻.
<!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>
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만 선언.