.jsp 연습하기 02

오늘·2021년 4월 27일
0

웹 페이지 연습

목록 보기
3/35

자바 빈즈

: 동적 콘텐츠 개발을 위해 자바 코드를 사용하여 자바 클래스로 로직을 작성하는 방법
: jsp 페이지에서 화면을 표현하기 위한 계산식이나 자료의 처리를 담당하는 자바 코드를 따로 분리하여 작성하는 것을 말한다.
: jsp 페이지가 html 과 같이 쉽고 간단한 코드만으로 구성될 수 있도록 함

규칙

: 자바 클래스에 java.io.Serializable 인터페이스를 구현해야 한다
= implements Serializable 해주어야 한다
: 인수가 없는 기본 생성자가 있어야 한다
: 모든 멤버 변수인 프로퍼티는 private 접근 지정자로 설정해야 한다
: 모든 멤버 변수인 프로퍼티는 getter/setter() 메소드가 존재해야한다


1. src 파일에서 class 자바 파일 만들기

import java.io.Serializable;

// 자바 빈즈로 만들기
// 1. implements Serializable
public class MemberBean implements Serializable {
	// 2. 속성은 private
	private int id;
	private String name;
	
	// 3. 인수없는 기본 생성자
	public MemberBean() {}

	// 4. getter/setter 메소드가 모두 있어야 한다.
	public int getId() { return id;	}
	public void setId(int id) {	this.id = id; }
	public String getName() { return name; }
	public void setName(String name) { this.name = name; }
}

2. Web Content에서 내용 받아오기

이게 받아오는게 두 가지이다.

1. id="자바 빈즈의 식별이름" class="불러올 자바파일"
   scope="자바 빈즈가 저장되는 영역
   (현재페이지냐 요청하는 곳이나 섹션의 자료나 또 다른 어플리케이션이냐 등등)"
<jsp:useBean id="member" class="a1.MemberBean"/>
 
 
2. 위의 액션태그를 코드로 바꾸면 아래와 같다
MemberBean member = (MemberBean)request.getAttribute("member");
if(member == null){
    member = new MemberBean();
    request.setAttribute("member", member)
}

이걸 body 에 넣어 불러오면 된다.


화면에 띄워보자

  1. 계산하는 Calculator.java 파일 생성
package a1;
import java.io.Serializable;

public class Calculator implements Serializable{
	public int hap(int n) {
		return n*n*n;
	}
}
  1. jsp에서 불러와 사용하기
<body>
	<!-- java.util.Date 파일을 가져와 날짜 표시하기-->
	<jsp:useBean id="date" class="java.util.Date" />
	<p> 오늘의 날짜 및 시간 :<br>
	<%= date %>

	<hr>
	<!-- Calculator.java 연결하기 -->
	<jsp:useBean id="cal" class="a1.Calculator" />
	<%
		int result = cal.hap(2);
	%>
	<p> 2의 세제곱 : <%= result %>
</body>


파일에서 잘 불러오는 모습 확인


setProperty 액션태그

: useBean 액션 태그와 함께 자바빈즈의 setter() 메소드에 접근하여, 자바빈즈의 멤버 변수인 프로퍼티의 값을 저장하는 태그
: 폼 페이지로부터 전달되는 요청 파라미터의 값을 직접 저장하거나 자바빈즈의 프로퍼티로 변경하여 값을 저장할 수 있다.

모양

<jsp:setProperty name="member" peoperty="id" value="admin" /> or <jsp:setProperty name="member" peoperty="id" param = "userid" />

  1. name : useBean 태그에 id 속성 값으로 설정된 자바빈즈를 식별하기 위한 이름
  2. peoperty : 자바빈즈의 프로퍼티 이름. 만약 프로퍼티 이름에 * 을 사용하면 모든 요청 파라미터가 자바빈즈 프로퍼티의 setter() 메소드에 전달됨을 의미
  3. value : 변경할 자바빈즈의 프로퍼티 값. 만약 프로퍼티 값이 null 이거나 존재하지 않는 요청 파라미터인 경우 setProperty 액션태그는 무시됩니다.
  4. param : 자바빈즈의 프로퍼티 값을 전달하는 요청 파라미터의 이름. param과 value를 동시에 사용할 수는 없고 하나를 선택해 사용해야 한다.

파일에서 값 가져오기

Person.java 파일 작성

public class Person implements Serializable {
	private int id=20210427;
	private String name="홍길동";
	private String pw = "777";
	private String phone = "1234-5668";
	
	public Person() { }

	public int getId() { return id;	}
	public void setId(int id) {	this.id = id; }
	
	public String getName() { return name; }
	public void setName(String name) { this.name = name; }
	
	public String getPw() { return pw; }
	public void setPw(String pw) { this.pw = pw; }
	
	public String getPhone() { return phone; }
	public void setPhone(String phone) { this.phone = phone; }
}

useBeanPerson.jsp 파일 작성

<body>
	<p> 자바빈즈 Person 생성 후, useBean 액션태그를 사용하여
		Person 클래스를 사용하기</p>
	<hr>
	<jsp:useBean id="person" class="a1.Person" scope="request"/>
	<p> 아이디 : <%= person.getId() %> </p>
	<p> 이름 : <%= person.getName() %> </p>
</body>


.jsp 파일에서 값 재설정해서 출력하기

<jsp:useBean id="person" class="a1.Person" scope="request" />
을 해서 파일을 연결하고
<%
	// 값을  보내준다
	person.setId(20200427);
	person.setName("이순신");
%>

전체 코드 확인하기

<body>
	<p> 기본 </p>
	<jsp:useBean id="person" class="a1.Person" scope="request" />
	<p> 아이디 : <%= person.getId() %> <br>
		이   름 : <%= person.getName() %> </p>
	<p> ----------------------------------------------------- </p>
	
	<p> Person의 아이디와 이름을 useBean으로  넣어주기 <br>
		= jsp 자료를 자바에 넣기 </p>
	<%
		// 값 보내주기
		person.setId(20200427);
		person.setName("이순신");
	%>
	<p> 아이디 : <%= person.getId() %> <br>
	    이 름 : <%= person.getName() %> </p>
		
	<!-- 다른 곳에 연결해서 불러와도 이 페이지에서 이미 값을 보내줬기 때문에
		  보내준 이후 값이 출력된다 -->	
	<jsp:include page="1_useBeanPerson.jsp" />
	<hr>
	<p> 수고하셨습니다 </p>
</body>

처음에는 값을 재설정 없이 그대로 가져와 출력해주었고,
그 다음은 자바 식으로 값을 재설해 출력해주었다.
이미 값을 보내서 변경한 다음이기 때문에 해당 페이지에서 다음에 또 파일을 불러오면 변경된 값이 출력된다.


자바코드로 말고 그냥 보내고 받고 싶은데

그때 사용하는 것이 setProperty 이다.
<jsp:setProperty property="id" name="person" value="20201225" />
이런식으로 value 뒤에 변경할 값을 적어주면 되는 것이다. 자바 식으로 값을 보내고 getter로 다시 받아오는 것에 비해 코드가 간단해진다.

<body>
	<p> setProperty 액션태그로 자바빈즈 Person에 값을 보내 아이디와 이름 설정하고 출력하기 </p>
	<jsp:useBean id="person" class="a1.Person" scope="request" />
	
	<p> setProperty의 속성에서<br>
		property="person클래스의 setName()을 가져오려면 set빼고 name을 적어주면 된다" </p>	
		<jsp:setProperty property="id" name="person" value="20201225" />
		<jsp:setProperty property="name" name="person" value="김자바"/>
		<jsp:setProperty property="pw" name="person" value="6789"/>
		<jsp:setProperty property="phone" name="person" value="98766-5432"/>
	<p> 이름 : <%= person.getId() %> <br>
		아이디 : <%= person.getName() %> <br>
		비밀번호 : <%= person.getPw() %> <br>
		핸드폰 : <%= person.getPhone() %> </p>
</body>

적어놓은 것처럼 setProperty의 property 부분에는 가져올 person.getName()name만 적어주면 되고, name에는 연결할 useBean의 id을 적어주면 된다.


getProperty 액션 태그

값을 가져오기만 할거라면 setProperty를 사용하지 않아도 된다. getProperty를 사용해도 가져올 수 있다.
<jsp:getProperty property="name" name="person" />
모양은 setProperty와 다르지 않다.

<body>
	<p> 자바빈즈의 Person을 이용하여 아이디와 이름을 가져와 출력하기 </p>
	<jsp:useBean id="person" class="a1.Person" scope="request" />
	<p> 이   름 : <jsp:getProperty property="name" name="person" /> <br>
		아이디 : <jsp:getProperty property="id" name="person"/> <br>
		비밀번호 : <jsp:getProperty property="pw" name="person"/> <br>
		전화번호 : <jsp:getProperty property="phone" name="person"/> </p>
		
	<hr>
	<p> getProperty로는 값을 변경해 가져올 수 없다.<br>변경하고 싶다면 setProperty를 사용합시다
		<jsp:setProperty property="id" name="person" value="1" />
		<jsp:setProperty property="name" name="person" value="김자바"/>
		<jsp:setProperty property="pw" name="person" value="1357"/>
		<jsp:setProperty property="phone" name="person" value="4653-1111"/>
		
	<p> 이   름 : <jsp:getProperty property="name" name="person" /> <br>
		아이디 : <jsp:getProperty property="id" name="person"/> <br>
		비밀번호 : <jsp:getProperty property="pw" name="person"/> <br>
		전화번호 : <jsp:getProperty property="phone" name="person"/> </p>
		
</body>


.java로 구구단 파일 만들어서 .jsp로 출력하기

1) java 파일 만들기

import java.io.Serializable;

public class GuGuDan implements Serializable {
	public String process(int dan) {
		String result = "";
		for (int i = 1; i <= 9; i++) {
			result += dan + " * " + i + " = " + (dan * i) + "<br>";
		}
		return result;
	}
}

원래는 public int process의 모습으로 리턴해주려 했으나 계속 오류가 났기 때문에.. 숫자계산하는 부분을 따로 만들어주고 전체적으로 String형태로 바꾸어 리턴하게끔 되었다.

2) jsp 파일 만들기

<body>
	<h4> 구구단 출력하기 </h4>
	<jsp:useBean id="gugudan" class="dao.GuGuDan" scope="request" />
	5단 <br>
	<%= gugudan.process(5) %>
</body>

메소드를 불러와 계산할 단 수를 () 안에 넣어주면 된다.


결론?

값을 변형없이 가져오기만 하겠다 : getProperty 사용
값을 변형해서 사용하고 싶다 : setProperty 사용

0개의 댓글

관련 채용 정보