티스토리 뷰

FRONT-END/JSP

[JSP] JAVABEAN

진심스테이크 2018. 4. 16. 17:15

 

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
댓글