티스토리 뷰
JavaBean
- JSP에서 데이터를 JavaBean에 담아서 값을 보여줌
액션 태그
1. <jsp:useBean>
- 기본 형태
<jsp:useBean id="빈이름" class="자바빈 클래스 이름" scope="범위"/>
- id : JSP 페이지에서 자바빈 객체에 접근할 때 사용
- class : 패키지 이름을 포함한 자바빈 클래스 이름
- scope : 범위
2. <jsp:setProperty>
- 기본 형태
<jsp:setProperty name="자바빈" property="이름" value="값"/>
- name : property 값을 바꿀 자바빈 객체 이름 -> <jsp:useBean> 에서 지정한 id값 사용
- property : 값을 지정할 property 이름
- value : property 값
3. <jsp:getProperty>
- 기본 형태
<jsp:getProperty name="자바빈" property="이름"/>
- name : <jsp:useBean> 에서 지정한 id값 사용
- property : 값을 가져올 property 이름
JavaBean을 이용한 회원가입
login.java - JavaBean
package result;
public class Login {
private String id; // 아이디
private String password; // 비밀번호
private String password_check; // 비밀번호 확인
private String mail; // 메일주소
private String name; // 이름
private String id_num; // 주민번호 앞자리
private String id_num_back; // 주민번호 뒷자리
private String year; // 생일 년도
private String month; // 생일 월
private String date; // 생일 일
private String[] hobby; // 관심분야
private String intro;// 자기소개
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getPassword_check() {
return password_check;
}
public void setPassword_check(String password_check) {
this.password_check = password_check;
}
public String getMail() {
return mail;
}
public void setMail(String mail) {
this.mail = mail;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getId_num() {
return id_num;
}
public void setId_num(String id_num) {
this.id_num = id_num;
}
public String getId_num_back() {
return id_num_back;
}
public void setId_num_back(String id_num_back) {
this.id_num_back = id_num_back;
}
public String getYear() {
return year;
}
public void setYear(String year) {
this.year = year;
}
public String getMonth() {
return month;
}
public void setMonth(String month) {
this.month = month;
}
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
public String[] getHobby() {
return hobby;
}
public void setHobby(String[] hobby) {
this.hobby = hobby;
}
public String getIntro() {
return intro;
}
public void setIntro(String intro) {
this.intro = intro;
}
}
register.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
request.setCharacterEncoding("UTF-8");
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title></title>
<script language="javascript"
src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-3.3.1.min.js"></script>
<script>
function checks() {
var hobbyCheck = false;
var getMail = RegExp(/^[A-Za-z0-9_\.\-]+@[A-Za-z0-9\-]+\.[A-Za-z0-9\-]+/);
var getCheck = RegExp(/^[a-zA-Z0-9]{4,12}$/);
var getName = RegExp(/^[가-힣]+$/);
var fmt = RegExp(/^\d{6}[1234]\d{6}$/); //형식 설정
var buf = new Array(13); //주민등록번호 배열
//아이디 공백 확인
if ($("#id").val() == "") {
alert("아이디 입력바람");
$("#id").focus();
return false;
}
//아이디 유효성검사
if (!getCheck.test($("#id").val())) {
alert("형식에 맞게 입력해주세요");
$("#id").val("");
$("#id").focus();
return false;
}
//비밀번호 공백 확인
if ($("#password").val() == "") {
alert("패스워드 입력바람");
$("#password").focus();
return false;
}
//아이디 비밀번호 같음 확인
if ($("#id").val() == $("#password").val()) {
alert("아이디와 비밀번호가 같습니다");
$("#password").val("");
$("#password").focus();
return false;
}
//비밀번호 유효성검사
if (!getCheck.test($("#password").val())) {
alert("형식에 맞게 입력해주세요");
$("#password").val("");
$("#password").focus();
return false;
}
//비밀번호 확인란 공백 확인
if ($("#password_check").val() == "") {
alert("패스워드 확인란을 입력해주세요");
$("#password_check").focus();
return false;
}
//비밀번호 서로확인
if ($("#password").val() != $("#password_check").val()) {
alert("비밀번호가 상이합니다");
$("#password").val("");
$("#password_check").val("");
$("#password").focus();
return false;
}
//이메일 공백 확인
if ($("#mail").val() == "") {
alert("이메일을 입력해주세요");
$("#mail").focus();
return false;
}
//이메일 유효성 검사
if (!getMail.test($("#mail").val())) {
alert("이메일형식에 맞게 입력해주세요")
$("#mail").val("");
$("#mail").focus();
return false;
}
//이름 공백 검사
if ($("#name").val() == "") {
alert("이름을 입력해주세요");
$("#name").focus();
return false;
}
//이름 유효성 검사
if (!getName.test($("#name").val())) {
alert("이름형식에 맞게 입력해주세요")
$("#name").val("");
$("#name").focus();
return false;
}
if (($("#id_num").val() == "") || ($("#id_num_back").val() == "")) {
alert("주민등록번호를 입력해주세요");
$("#id_num").focus();
return false;
}
if (check_jumin() == false) {
return false;
}
//취미 유효성 검사
for (var i = 0; i < $('[name="hobby"]').length; i++) {
if ($('input:checkbox[name="hobby"]').eq(i).is(":checked") == true) {
hobbyCheck = true;
break;
}
}
if (!hobbyCheck) {
alert("하나이상 관심분야를 체크해 주세요");
return false;
}
//자기소개란 공백 검사
if ($("#intro").val() == "") {
alert("자기소개를 입력해주세요")
$("#intro").val("");
$("#intro").focus();
return false;
}
return true;
}
function check_jumin() {
var jumins3 = $("#id_num").val() + $("#id_num_back").val();
//주민등록번호 생년월일 전달
var fmt = RegExp(/^\d{6}[1234]\d{6}$/) //포멧 설정
var buf = new Array(13);
//주민번호 유효성 검사
if (!fmt.test(jumins3)) {
alert("주민등록번호 형식에 맞게 입력해주세요");
$("#id_num").focus();
return false;
}
//주민번호 존재 검사
for (var i = 0; i < buf.length; i++) {
buf[i] = parseInt(jumins3.charAt(i));
}
var multipliers = [ 2, 3, 4, 5, 6, 7, 8, 9, 2, 3, 4, 5 ];// 밑에 더해주는 12자리 숫자들
var sum = 0;
for (var i = 0; i < 12; i++) {
sum += (buf[i] *= multipliers[i]);// 배열끼리12번 돌면서
}
if ((11 - (sum % 11)) % 10 != buf[12]) {
alert("잘못된 주민등록번호 입니다.");
$("#id_num").focus();
return false;
}
var birthYear = (jumins3.charAt(6) <= "2") ? "19" : "20";
birthYear += $("#id_num").val().substr(0, 2);
var birthMonth = $("#id_num").val().substr(2, 2);
var birthDate = $("#id_num").val().substr(4, 2);
var birth = new Date(birthYear, birthMonth, birthDate);
$("#year").val(birthYear);
$("#month").val(birthMonth);
$("#date").val(birthDate);
}
</script>
</head>
<body>
<form action="result.jsp" name="data"
method="post" onsubmit="return checks()">
<!--밑에 submit 누르면 메일로 보내짐-->
<table border="1" bordercolor="grey" align="center">
<tbody>
<tr>
<td colspan="2" bgcolor="lightblue" align="center">회원 기본 정보</td>
</tr>
<tr>
<td bgcolor="lightgrey" align="center">아이디</td>
<td><input size="15" type="text" name="id" id="id"> 4~12자의 영문
대소문자와 숫자로만 입력</td>
</tr>
<tr>
<td bgcolor="lightgrey" align="center">비밀번호</td>
<td><input size="15" type="password" name="password" id="password">
4~12자의 영문 대소문자와 숫자로만 입력</td>
</tr>
<tr>
<td bgcolor="lightgrey" align="center">비밀번호 확인</td>
<td><input size="15" type="password" name="password_check" id="password_check"></td>
</tr>
<tr>
<td bgcolor="lightgrey" align="center">메일 주소</td>
<td><input type="text" name="mail" id="mail"> 예) id@domain.com</td>
</tr>
<tr>
<td bgcolor="lightgrey" align="center">이름</td>
<td><input type="text" name="name" id="name"></td>
</tr>
<tr>
<td colspan="2" bgcolor="lightblue" align="center">개인 신상 정보</td>
</tr>
<tr>
<td bgcolor="lightgrey" align="center">주민등록번호</td>
<td><input size="7" type="text" name="id_num" id="id_num"> - <input
size="7" type="password" name="id_num_back" id="id_num_back" onBlur="check_jumin()">
예)123456-1234567</td>
</tr>
<tr>
<td align="center" bgcolor="lightgrey"><b>생일</b></td>
<td><input type="text" AUTOCOMPLETE="off" name="year"
id="year" size="4" readonly><b> 년</b> <input
type="text" AUTOCOMPLETE="off" name="month" id="month"
style="width: 20px;" readonly><b> 월</b> <input
type="text" AUTOCOMPLETE="off" name="date" id="date"
style="width: 20px;" readonly><b> 일</b></td>
</tr>
<tr>
<td bgcolor="lightgrey" align="center">관심분야</td>
<td><input type="checkbox" name="hobby" value="컴퓨터">컴퓨터
<input type="checkbox" name="hobby" value="인터넷">인터넷
<input type="checkbox" name="hobby" value="여행">여행 <input
type="checkbox" name="hobby" value="영화감상">영화감상 <input
type="checkbox" name="hobby" value="음악감상">음악감상</td>
</tr>
<tr>
<td bgcolor="lightgrey" align="center">자기소개</td>
<td><textarea cols="50"
style="margin: 0px; height: 300px; width: 480px" name="intro"></textarea>
<!--크기 조정 가능--></td>
</tr>
</tbody>
</table>
<p align="center">
<input type="submit" value="회원 가입">
<!--누르면 메일이 보내짐-->
<input type="reset" value="다시 입력">
<!--누르면 초기화-->
</p>
</form>
</body>
result.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
request.setCharacterEncoding("UTF-8");
%>
<jsp:useBean id="s" class="result.Login" scope="page" />
<jsp:setProperty name="s" property="*" />
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title></title>
</head>
<body>
<table border="1" bordercolor="grey" align="center">
<tbody>
<tr>
<td colspan="2" bgcolor="lightblue" align="center">회원 기본 정보</td>
</tr>
<tr>
<td bgcolor="lightgrey" align="center">아이디</td>
<td><jsp:getProperty name="s" property="id" /></td>
</tr>
<tr>
<td bgcolor="lightgrey" align="center">비밀번호</td>
<td><jsp:getProperty name="s" property="password" /></td>
</tr>
<tr>
<td bgcolor="lightgrey" align="center">비밀번호 확인</td>
<td><jsp:getProperty name="s" property="password_check" /></td>
</tr>
<tr>
<td bgcolor="lightgrey" align="center">메일 주소</td>
<td><jsp:getProperty name="s" property="mail" /></td>
</tr>
<tr>
<td bgcolor="lightgrey" align="center">이름</td>
<td><jsp:getProperty name="s" property="name" /></td>
</tr>
<tr>
<td colspan="2" bgcolor="lightblue" align="center">개인 신상 정보</td>
</tr>
<tr>
<td bgcolor="lightgrey" align="center">주민등록번호</td>
<td><jsp:getProperty name="s" property="id_num" /> - <jsp:getProperty
name="s" property="id_num_back" /></td>
</tr>
<tr>
<td align="center" bgcolor="lightgrey"><b>생일</b></td>
<td><jsp:getProperty name="s" property="year" /> 년
<jsp:getProperty name="s" property="month" /> 월
<jsp:getProperty name="s" property="date" /> 일</td>
</tr>
<tr>
<td bgcolor="lightgrey" align="center">관심분야</td>
<td> <!-- 배열로 선언해서 값을 불러옴 -->
<%
String[] hobby = s.getHobby();
for (int i = 0; i < hobby.length; i++) {
out.println(hobby[i]);
}
%>
</td>
</tr>
<tr>
<td bgcolor="lightgrey" align="center">자기소개</td>
<td><jsp:getProperty name="s" property="intro" /><!--크기 조정 가능--></td>
</tr>
</tbody>
</table>
</body>
</html>
실행 결과
생일은 자동완성
CheckBox로 선택한 값들이 넘어오는것을 볼 수 있다
'FRONT-END > JSP' 카테고리의 다른 글
[JSP] JSTL (0) | 2018.05.04 |
---|---|
[JSP] MVC PATTERN (0) | 2018.05.02 |
[JSP] ACTION TAG - 액션 태그 (0) | 2018.04.16 |
[JSP] 간단한 장바구니 (0) | 2018.04.13 |
[JSP] SENDREDIRECT( ) (1) | 2018.04.13 |
댓글