1. 자바빈 클래스 생성 MakeInfo.java


package com.model; // 패키지 명을 생성 후 기억할 것!!


public class MemberInfo {


private String id; 

private String pw;

private String name;

private String email;

public String getId() {

return id;

}

public void setId(String id) {

this.id = id;

}

public String getPw() {

return pw;

}

public void setPw(String pw) {

this.pw = pw;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getEmail() {

return email;

}

public void setEmail(String email) {

this.email = email;

}

}



2. 폼 페이지 form.jsp


<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>form</title>

</head>

<body>

<form action="formAction.jsp" method="post">

<fieldset>

<legend>회원가입 양식폼</legend>

<table>

<tr>

<td>아이디</td>

<td><input type="text" size="12" name="id" /></td>

</tr>

<tr>

<td>패스워드</td>

<td><input type="password" size="12" name="pw" /></td>

</tr>

<tr>

<td>이름</td>

<td><input type="text" size="12" name="name" /></td>

</tr>

<tr>

<td>이메일</td>

<td><input type="text" size="30" name="email" /></td>


</tr>

<tr>

<td colspan="2" class="btn"><input type="submit" value="가입" />

<input type="reset" value="취소" /></td>

</tr>

</table>

</form>

</fieldset>

</body>

</html>



회원가입 양식폼

아이디
패스워드
이름
이메일
 






3. 위의 폼에서 받아온 데이터를 이용하는 formAction.jsp


<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<%request.setCharacterEncoding("UTF-8");%>


<%@page import="com.model.MemberInfo" %>

패키지명 임포트 하는 것을 잊지 말 것!! 

안그러면 아래에서 MemberInfo 클래스 앞마다 패키지명을 붙여서 써야 한다.


<%

String id = request.getParameter("id");

String pw = request.getParameter("pw");

String name = request.getParameter("name");

String email = request.getParameter("email");


MemberInfo memberInfo = new MemberInfo(); // 폼에서 받아온 값들을 자바빈에 담아주기 위해 객체 생성


memberInfo.setId(id); // 폼에서 받아온 값들을 자바빈에 담아줌

memberInfo.setPw(pw);

memberInfo.setName(name);

memberInfo.setEmail(email);

%>    


<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>회원가입 처리</title>

</head>

<body>

<ul>

<li>아이디: <%=memberInfo.getId()%></li>

<li>패스워드: <%=memberInfo.getPw()%></li>

<li>이름: <%=memberInfo.getName()%></li> 

<li>이메일: <%=memberInfo.getEmail()%></li>

</ul>

</body>

</html>



4. 2번에서 입력한 값이 정상적으로 set메소드를 통해 자바빈에 담겨 get메소드를 통해 아래와 같이 출력된다.

  • 아이디: taiji
  • 패스워드: 1234
  • 이름: 서태지
  • 이메일: taiji@seotaiji.com

--------------------------------------------------------------------------------------------------------------------


5. jsp:useBean의 사용 (인스턴스 생성)

3번의 jsp를 jsp:useBean을 사용하여 다음과 같이 바꿔줄 수 있다.

jsp:useBean은 자바빈 클래스를 쓰기 위한 객체 생성과 함께 scope에서 저장 영역(page, request 등)을 지정해줄 수 있다.


<%@ page language="java" contentType="text/html; charset=UTF-8"  pageEncoding="UTF-8"%>
<%request.setCharacterEncoding("UTF-8");%>

<%-- <%@page import="com.model.MemberInfo" %> -->
jsp:useBean을 쓰면 위의 항목도 필요없어진다.

<jsp:useBean id="memberInfo" class="com.model.MemberInfo" scope="request"></jsp:useBean>
<%-- 클래스를 불러올 때 패키지명을 포함시키는 것을 잊지 말 것! --%>

<%
String id = request.getParameter("id");
String pw = request.getParameter("pw");
String name = request.getParameter("name");
String email = request.getParameter("email");

/* MemberInfo memberInfo = new MemberInfo();
request.setAttribute("memberInfo", memberInfo);
*/
jsp:useBean으로 인스턴스를 생성하여 request 영역에 담아줬으므로 위 부분은 필요없게 된다.

memberInfo.setId(id);
memberInfo.setPw(pw);
memberInfo.setName(name);
memberInfo.setEmail(email);
%>    

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>회원가입 처리</title>
</head>
<body>
<ul>
<li>아이디: <%=memberInfo.getId()%></li>
<li>패스워드: <%=memberInfo.getPw()%></li>
<li>이름: <%=memberInfo.getName()%></li> 
<li>이메일: <%=memberInfo.getEmail()%></li>
</ul>
</body>
</html>


-----------------------------------------------------------------------------------------------------------------------------------


<jsp:useBean id="memberInfo" class="com.model.MemberInfo" scope="request"></jsp:useBean>

위의 한 줄은 다음의 내용을 모두 담고 있다.


MemberInfo memberInfo = request.getAttribute("memberInfo");

if(memberInfo == null) {

memberInfo = new MemberInfo();

request.setAttribute("memberInfo", memberInfo);

}


jsp:useBean을 사용하면 자바빈의 객체를 생성하고 메모리 영역을 지정하는 등의 과정을 한 줄에 표현하여 간략해진다.




-----------------------------------------------------------------------------------------------------------------------------------


6. 내용을 다른 곳으로 forward 시킨 경우

본문 내용을 다른 곳으로 따로 빼낸 경우 그 jsp에서도 jsp:useBean이 필요하다.


1) formAction.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"   pageEncoding="UTF-8"%>

<%request.setCharacterEncoding("UTF-8");%>


<jsp:useBean id="memberInfo" class="com.model.MemberInfo" scope="request">

</jsp:useBean>


<%

String id = request.getParameter("id");

String pw = request.getParameter("pw");

String name = request.getParameter("name");

String email = request.getParameter("email");


memberInfo.setId(id);

memberInfo.setPw(pw);

memberInfo.setName(name);

memberInfo.setEmail(email);

%>    


<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>회원가입 처리</title>

</head>

<body>

<jsp:forward page=="/useObject.jsp" /> 

</body>

</html>



2) useObject.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%>

<jsp:useBean id="memberInfo" class="com.model.MemberInfo" scope="request">

</jsp:useBean>


<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title></title>

</head>

<body>

<ul>

<li>아이디: <%=memberInfo.getId()%></li>

<li>패스워드: <%=memberInfo.getPw()%></li>

<li>이름: <%=memberInfo.getName()%></li> 

<li>이메일: <%=memberInfo.getEmail()%></li>

</ul>

</body>

</html>




-----------------------------------------------------------------------------------------------------------------------------------


7. jsp:setProperty, getProperty의 프로퍼티 사용

jsp:useBean의 자식 속성으로 jsp:setProperty를 쓸 수 있다.

name에는 useBean의 id를, property에는 자바빈 setter의 프로퍼티명을(setterId면 id), 

param에는 form에서 입력하여 전달해오는 파라미터 name을 써준다.


1) formAction.jsp // setProperty로 각 값에 대한 프로퍼티를 설정한다.

<%@ page language="java" contentType="text/html; charset=UTF-8"  pageEncoding="UTF-8"%>

<%request.setCharacterEncoding("UTF-8");%>


<jsp:useBean id="memberInfo" class="com.model.MemberInfo" scope="request">

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

<jsp:setProperty name="memberInfo" property="pw" param="pw"></jsp:setProperty>

<jsp:setProperty name="memberInfo" property="name" param="name"></jsp:setProperty>

<jsp:setProperty name="memberInfo" property="email" param="email"></jsp:setProperty>

</jsp:useBean>


jsp:setProperty를 사용하면 아래의 항목들이 필요없게 된다.

<%--

String id = request.getParameter("id");

String pw = request.getParameter("pw");

String name = request.getParameter("name");

String email = request.getParameter("email");

memberInfo.setId(id);

memberInfo.setPw(pw);

memberInfo.setName(name);

memberInfo.setEmail(email);

%-->   

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>회원가입 처리</title>

</head>

<body>

<jsp:forward page="/useObject.jsp" />

</body>

</html>


2) useObject.jsp // getProperty로 불러올 수 있다.

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<jsp:useBean id="memberInfo" class="com.model.MemberInfo" scope="request" />

// 단일태그로 사용 가능

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title></title>

</head>

<body>

<ul>

<li>아이디:<jsp:getProperty name="memberInfo" property="id" /></li>

<li>패스워드: <jsp:getProperty name="memberInfo" property="pw" /></li>

<li>이름: <jsp:getProperty name="memberInfo" property="name" /></li> 

<li>이메일: <jsp:getProperty name="memberInfo" property="email" /></li>

</ul>

</body>

</html>


--------------------------------------------------------------------------------------------------------------

8. jsp:setProperty의 축약

property와 param의 값이 동일하면 property="*"을 이용하여 모든 값들을 한줄로 축약이 가능하다.


<%@ page language="java" contentType="text/html; charset=UTF-8"  pageEncoding="UTF-8"%>

<%request.setCharacterEncoding("UTF-8");%>


<jsp:useBean id="memberInfo" class="com.model.MemberInfo" scope="request" />

<jsp:setProperty name="memberInfo" property="*" />


<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>회원가입 처리</title>

</head>

<body>

<jsp:forward page="/useObject.jsp" />

</body>

</html>



'JSP' 카테고리의 다른 글

실습: 쿠키를 사용한 로그인 유지  (0) 2016.03.09
쿠키(Cookie)  (0) 2016.03.08
자바빈과 <jsp:useBean> 액션 태그  (0) 2016.03.07
페이지 모듈화 & 요청 흐름 제어  (0) 2016.03.07
에러 처리  (0) 2016.03.04
Posted by netyhobby
,