JSP

 

MemberJoin.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
  <head>	
   <jsp:include page="Header.jsp" />
 </head>    
 <body>
	 <div class="container">
	<div class="row">
	<div class="col-sm-12 text-center" >
	<div class="col-sm-3"></div>
	
	<div class="col-sm-6">
    <h2>회원가입</h2>
	<form action="MemberJoinProc.jsp" method="post">
		<table class="table table-boardered">
			<tr>
				<th>아이디</th>
				<td><input type="text" class="form-control" name="id" placeholder="id를 넣으세요"></td>		
			</tr>
			<tr>
				<th>패스워드</th>
				<td><input type="password" class="form-control" name="pass1" placeholder="비밀번호는 영문만 넣어주세요"></td>		
			</tr>
			
			<tr>
				<th>패스워드확인</th>
				<td><input type="password" class="form-control" name="pass2"></td>		
			</tr>
			
			<tr>
				<th>이메일</th>
				<td><input type="email" class="form-control" name="email"></td>		
			</tr>
			
			<tr>
				<th>전화번호</th>
				<td><input type="tel" class="form-control" name="tel"></td>		
			</tr>
			
			<tr>
				<th>주소</th>
				<td><input type="text" class="form-control" name="address"></td>		
			</tr>

			
			<tr>
				<td colspan="2">
				<input type="submit" class="btn btn-primary" value="전송">
				<input type="reset" class="btn btn-danger" value="취소">
				</td>
			</tr>
			
			
		</table>
	</form>
	</div>
	
	</div>
	</div>
</div>
</body>
</html>

 

 

MemberBean.java

package bean;

public class MemberBean {
	
	private String id;
	private String pass1;
	private String email;
	private String tel;
	private String address;
	
	
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getPass1() {
		return pass1;
	}
	public void setPass1(String pass1) {
		this.pass1 = pass1;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public String getTel() {
		return tel;
	}
	public void setTel(String tel) {
		this.tel = tel;
	}
	public String getAddress() {
		return address;
	}
	public void setAddress(String address) {
		this.address = address;
	}
	
	
	@Override
	public String toString() {
		return "MemberBean [id=" + id + ", pass1=" + pass1 + ", email=" + email + ", tel=" + tel + ", address="
				+ address + "]";
	}
	
		
}

 

 

 

1.자바빈

자바빈은 데이터를 표현하는 것을 목적으로 하는 데이터를 표현하는 것을 목적으로 하는 자바 클래스로서, 다음과 같은 형태로 구성된다.


 public class member{     

             private String name;

             private String age;

             private String id;

            public String getName(){

                 return name;

             }

            public String getAge(){

                 return age;

            }

            public String getId(){

                 return id;

            }

            public void setName(String name){

                     this.name = name;

            }

}

자바빈 규약에 따르는 클래스를 자바빈이라고 부르며, JSP 프로그래밍에서 사용되는 자바빈 클래스는 위 예시와 같이 데이터를 저장하는 필드, 데이터를 읽어올 때 사용되는 메소드(get으로 시작하는 메소드), 값을 저장할 때 사용되는 메소드(set으로 시작되는 메소드)로 구성된다.

 

1.1 자바빈 프로퍼티

프로퍼티는 자바빈에 저장되어 있는 값을 나타내며, 메소드 이름을 사용해서 프로퍼티의 이름을 결정하게 된다.

public void setMaxAge(int value);
public int getMaxAge();

프로퍼티의 값을 설정하는 메소드의 경우 프로퍼티의 이름중 첫 글자를 대문자로 바꾼 문자열 앞에 set을 붙이고 프로퍼티의 값을 읽어오는 메소드의 경우 프로퍼티의 이름 중 첫 글자를 대문자로 변환한다음 문자열앞에 get을 붙인다.

 

프로퍼티의 이름과 필드의 이름은 같지 않아도 된다.

private String name;
public void setNick(String nick){
              name = nick;
}

※nick 프로퍼티의 값을 실제로 저장하는 필드의 이름은 name이다.

프로퍼티의 데이터 타입이 boolean일 경우 해당 프로퍼티의 값을 리턴하는 메소드의 이름은 get 대신에 is를 앞에 붙인다.(규칙)

프로퍼티의 값을 변경할 필요 없이 읽을 수만 있으면 되는 경우에 읽기 전용 프로퍼티로 지정한다.

예를 들어 원의 반지름을 저장하는 circle 자바빈 클래스가 있고 이 반지름으로 원의 넓이를 구하는 기능이 있다고 한다면

 

public class circle{
          private double radius;
          public double getRadius(){
                   return radius;
          }
          public void setRadius(double radius){
                  this.radius = radius;
          }
          public double getArea(){
               return radius*radius*3.14;
          }
}

 

이런 식으로 코딩을 할 수 있을 것이다.

자바빈 프로퍼티의 타입은 배열로도 정의할 수 있다.

  public int[] getMark()
  public void setMark(int[] values)

 

 코드는 mark 프로퍼티를 int 타입의 배열로 지정하고 있다.

또한 배열 전체가 아닌 배열의 특정 원소에 접근할 수 있는 메소드를 다음과 같이 추가로 정의할 수 있다.

이클립스 shift + alt +s 클릭 후 setter getter 사용

public int getMark(int index){
  return mark[index];
 }
 public void setMark(int value, int index){
  mark[index] = value;
 }

 

위 코드는 int타입 배열인 mark프로퍼티에서 지정한 index의 값을 읽거나 변경하는데 사용된다.

 

2.<jsp:useBean 태그를 이용한 자바 객체 사용

JSP 페이지의 주요 기능 중의 하나는 데이터를 보여주는 기능이다. 게시판의 글 목록보기, 회원정보 보기, 글 읽기 기능 등이 이에 해당된다.

JSP 프로그래밍에서 이런 종류의 데이터 들은 자바빈 클래스에 담아서 값을 보여주는 것이 일반적이다.

 

<%
                 MemberInfo mi = new MemberInfo();
                 mi.setId("mryou01");
                 mi.setName("유영만");
                 out.print("이름:");
                 out.print(mi.getName()+", 아이디:"+mi.getId());
%>

 

 

JSP 규약은 JSP 페이지에서 빈번히 사용되는 자바빈 객체를 위한 액션 태그를 별도로 제공하고 있으며, 이들 액션 태그를 사용하면 자바빈 객체를 생성하거나,

빈의 프로퍼티의 값을 변경할 수 있다.

 

2.1 <jsp:useBean> 액션 태그를 사용하여 객체 생성하기

<jsp:useBean> 액션 태그는 JSP 페이지에서 사용할 자바빈 객체를 지정해 주는 기능을 한다.

<jsp:useBean> 액션 태그의 기본 문법은 다음과 같다.

 

<jsp:useBean id = "info" class = "chap11.member.MemberInfo" scope = "request">

 

이 코드는 MemberInfo클래스의 객체를 생성해서 이름이 info인 변수에 할당한다.

그리고 request 기본객체의 info 속성의 값으로 생성된 객체를 저장한다.

위의 예로든 코드는

MemberInfo info = new MemberInfo();

request.setAttribute("info", info); 와 비슷한 코드가 되는 것이다.

<jsp:useBean> 액션 태그는 지정한 영역에 이미 id 속성에서 지정한 이름의 속성 값이 존재할 경우 객체를 새로 생성하지 않고 기존에 존재하는 객체를 그대로 사용한다.

또한 <jsp:useBean> 액션 태그는 객체를 생성할 뿐만 아니라 지정한 영역에 저장한다. 그리고 이미 영역에 객체가 존재하고 있는 경우 그 객체를 그대로 사용한다는 것도 중요한 점이다.

<jsp:useBean> 액션 태그를 사용하면 각 영역별로 공유할 데이터를 쉽게 저장할 수 있게 된다.

 

예제에서 makeObject.jsp를 보면 <jsp:useBean> 액션태그를 사용하여 Member 객체를 생성한후 <jsp:forward>를 사용하여 다른 페이지로 흐름을 이동시킨다.

useObject.jsp에서는 member객체의 getId메소드와 getName메소드를 이용하여 이름과 아이디 프로퍼티를 출력한다.

useObject.jsp를 직접 실행하게 되면 request 기본 객체에 member속성이 존재하지 않으므로  Member클래스의 객체를 만들게 된다.

useObject.jsp에서는 각 프로퍼티의 값을 지정해주지 않으므로 null값이 출력된다.

<jsp:useBean> 액션 태그에 class 속성 대신에 type 속성을 사용하게 되면 그 클래스의 객체가 이미 존재한다고 가정한다.

만약 그 클래스의 객체가 존재하지 않은 상태에서 type 속성을 사용하게 되면 새롭게 객체를 생성하지 않고 에러를 발생시킨다.

 

 

<jsp:useBean id = "member" type = "member.Member" scope = "request">

※↑위 코드를 실행하는 시점에 member객체가 존재하고 있지 않다면 에러가 발생함.

 

2.2 <jsp:getProperty> 액션 태그와 <jsp:setProperty> 액션태그

<jsp:useBean>액션 태그를 이용해서 객체를 생성하고 나면 <jsp:setProperty> 액션 태그와 <jsp:getProperty> 액션 태그를 사용하여 자바빈 객체의 프로퍼티를

변경하거나 읽어올 수 있다.

(setProperty는 setter메소드를 쓰고 getProperty는 getter메소드를 사용하는 셈임.)

<jsp:setProperty> 액션 태그의 문법은 다음과 같다.

 

<jsp:setProperty name = "[자바빈]" property = "이름" value = "[값]"/>

 

name : 프로퍼티의 값을 변경할 자바빈 객체의 이름. <jsp:useBean> 액션 태그의 id 속성에서 지정한 값을 사용한다.

property : 값을 지정할 프로퍼티의 이름.

value : 프로퍼티의 값. 표현식을 사용할 수도 있다.

 

<jsp:useBean id = "member" class = "member.Member"/>
<jsp:setProperty name = "member" property = "id" value = "mryou01"/>

 

 

value 속성 대신에 param 속성을 사용할 수도 있다. param 속성은 파라미터의 값을 프로퍼티의 값으로 지정할 때 사용된다.

 

<jsp:setProperty name = "member" property = "id" param = "id"/>

 

※param 속성과 value 속성은 함께 사용할 수 없다.

property 속성의 값을 *로 지정하면 각각의 프로퍼티의 값은 같은 이름을 갖는 파라미터의 값으로 설정한다

 

<jsp:useBean id = "member" class = "member.Member"/>
<jsp:setProperty name = "member" property = "*"/>

 

 

이 코드의 경우 파라미터의 값을 같은 이름의 프로퍼티의 값으로 지정하는 코드이다.

 

<jsp:getProperty> 액션 태그는 자바빈 객체의 프로퍼티 값을 출력할 때 사용되며, 문법은 아래와 같다.

 

 <jsp:getProperty name = "자바빈 이름" property = "프로퍼티이름"/>

 

name : <jsp:useBean> 액션태그에서 지정한 자바빈 객체의 이름.

property : 출력할 프로퍼티의 이름.

 

 

 <jsp:getProperty name = "member" property = "name"/>

이 코드는 member객체의 name프로퍼티를 출력한다.

 

출처 :

http://blog.daum.net/_blog/BlogTypeView.do?blogid=0cVud&articleno=18&categoryId=5&regdt=20130102193433

 

 

 

동영상 강좌와 다르게  모바일 적용이 가능한 반응형 부트스트랩을 사용하였다.

여기서는  jsp 를 배우는 강좌 이기 때문에 html 적 요소에는 비중있게 생각 하지 않아도 될 것이다.

소스 :  https://github.com/braverokmc79/jsp_sin

 

 

유튜브 동영상 출처 :

소프트캠퍼스

강사 : 신형섭(잭임연구원)

저작권 : (주)소프트캠퍼스 http://www.softcampus.co.kr 더많은 무료 강의는 사이트에서 확인하실수 있습니다.

 

 

 

about author

PHRASE

Level 60  라이트

뜻을 세워서 힘쓰면 그 공은 스스로 높게 되고 또 노력 근면한다면 그 사업은 스스로 넓게 된다. 공(功)을 얻으려면 뜻을 굳게 세우고 업을 넓히려면 부지런해야 한다. 성왕(成王)이 한 말. -서경

댓글 ( 4)

댓글 남기기

작성