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 등)을 지정해줄 수 있다.
-----------------------------------------------------------------------------------------------------------------------------------
<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 |