JSP

[jsp]자바빈 액션태그 간단 회원가입 실습

jackypark 2022. 9. 21. 16:44

요구사항:

 

우선 내가 평소에 하는 식대로 자바 파일을 임포트 해서 만들어보았다. 

회원가입 양식은 저번에 만들었던 회원가입 양식을 사용했다.

https://jackycode.tistory.com/66?category=1035658 

 

유효성 검사(정규식사용)

정규식을 사용해서 유효성 검사를 진행했다... 나는 http부분의 input에 있는 pattern을 사용하여 정규식을 사용해서 검사를 진행했다. 과제 1 회원 기본 정보 아이디: 4~12자의 영문 대소문자와 숫자

jackycode.tistory.com

joinChk.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="test.JoinBean" %>
<%
    JoinBean register = new JoinBean();
    register.setId(request.getParameter("id"));
    register.setMyName(request.getParameter("myName"));
    register.setPw(request.getParameter("pw"));
    register.setEmail(request.getParameter("email"));
    register.setYear(request.getParameter("year"));
    register.setMonth(request.getParameter("month"));
    register.setDay(request.getParameter("day"));
    register.setIntro(request.getParameter("intro"));
    register.setHobby(request.getParameterValues("hobby"));


%>
<html>
<head>
    <title>Title</title>
</head>
<body>
<table border="1" width ="700" height="500" align = "center" >
    <tr bgcolor="steelblue" >
        <p ><td colspan = "2" align = "center"><b>회원 기본 정보</b></td></p>
    </tr>
    <tr>
        <!-- 영문 대소문자 숫자로만 입력 정규식에는 글자제한수 안넣음 대신 maxlength minlength로 대체 이유: 그게더 깔끔해 보였다 -->
        <td bgcolor="gray"><b>아이디:</b></td>
        <td><%=register.getId()%></td>
    </tr>
    <tr>
        <!-- 영문 대소문자 숫자로만 입력 -->
        <td bgcolor="gray"><b>비밀번호:</b></td>
        <td><%=register.getPw()%></td>
    </tr>
    <tr>
        <td bgcolor="gray"><b>메일주소:</b></td>
        <td><%=register.getEmail()%></td>
    </tr>
    <tr>
        <td bgcolor="gray"><b>이름:</b></td>
        <td><%=register.getMyName()%></td>
    </tr>
    <tr bgcolor="steelblue" >
        <p ><td colspan = "2" align = "center"><b>개인 신상 정보</b></td></p>
    </tr>
    <tr>
        <td bgcolor="gray"><b>생일:</b></td>
        <td><%=register.getYear()%>년<%=register.getMonth()%>월<%=register.getDay()%>일</td>
    </tr>
    <tr>
        <td bgcolor="gray"><b>관심분야:</b></td>
        <td><%=register.getRealHobby()%>
    </tr>
    <tr>
        <td bgcolor="gray"><b>자기소개:</b></td>
        <td><%=register.getIntro()%></td>
    </tr>
</table>
</div>
</body>
</html>

 

위 코드는 Java Bean 태그를 사용하지 않았을 때 자바 파일에 값을 set 하고 값을 get 한 것입니다.

 

그다음 코드는 회원 가입할 때 입력했던 내용을 멤버 변수에 저장하는 역할인 JoinBean.java파일입니다.

JoinBean.java

package test;

public class JoinBean {
    private String id;
    private String pw;
    private String myName;
    private String email;
    private String year;//생 년
    private String month;//생 월
    private String day;//생 일
    private String[] hobby;
    private String intro;

    private String realHobby;
    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 getMyName() {
        return myName;
    }
    public void setMyName(String myName) {
        this.myName = myName;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    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 getDay() {
        return day;
    }
    public void setDay(String day) {
        this.day = day;
    }
    public String[] getHobby() {
        return hobby;
    }
    public void setHobby(String[] hobby) {
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < hobby.length; i++) {
            sb.append(hobby[i]+"&nbsp;");
        }
        this.realHobby=sb.toString();
    }

    public String getIntro() {
        return intro;
    }
    public void setIntro(String intro) {
        this.intro = intro;
    }
    public String getRealHobby() {
        return realHobby;
    }

}

 

중간에 setHobby함수가 다른 setter와 getter와 다른 것을 확인하실수 있습니다. 그 이유는 바로 취미는 체크박스 형태인데 벼 올로 값을 가져오게 됩니다. 그런데 다른 것처럼 setter getter를 만들면 출력할 때 배열의 주소 값을 출력하게 됩니다. 고로 setHobby에서 처리해서 string형태로 출력이 되게끔 유도했습니다.

만약에 만약에 이 처리를 하지 않고 한다면 다른 방법이 있긴 합니다. 처음에 사용했던 방법인데 register.getRealHobby ( ) 대신에 밑에 코드를 사용하면 되긴 한다

        <td>
            String[] hobby=register.getHobby();
            for(String h:hobby){
                out.println(h);
            }
      </td>

 

다음은 액션 태그를 사용해서 한 방법이다.

joinChk.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<jsp:useBean id="register" class="test.JoinBean" scope="page"></jsp:useBean>
<jsp:setProperty name="register" property="*" />
<html>
<head>
    <title>Title</title>
</head>
<body>
<table border="1" width ="700" height="500" align = "center" >
    <tr bgcolor="steelblue" >
        <p ><td colspan = "2" align = "center"><b>회원 기본 정보</b></td></p>
    </tr>
    <tr>
        <!-- 영문 대소문자 숫자로만 입력 정규식에는 글자제한수 안넣음 대신 maxlength minlength로 대체 이유: 그게더 깔끔해 보였다 -->
        <td bgcolor="gray"><b>아이디:</b></td>
        <td><jsp:getProperty name="register" property="id"/></td>
    </tr>
    <tr>
        <!-- 영문 대소문자 숫자로만 입력 -->
        <td bgcolor="gray"><b>비밀번호:</b></td>
        <td><jsp:getProperty name="register" property="pw"/></td>
    </tr>
    <tr>
        <td bgcolor="gray"><b>메일주소:</b></td>
        <td><jsp:getProperty name="register" property="email"/></td>
    </tr>
    <tr>
        <td bgcolor="gray"><b>이름:</b></td>
        <td><jsp:getProperty name="register" property="myName"/></td>
    </tr>
    <tr bgcolor="steelblue" >
        <p ><td colspan = "2" align = "center"><b>개인 신상 정보</b></td></p>
    </tr>
    <tr>
        <td bgcolor="gray"><b>생일:</b></td>
        <td><jsp:getProperty name="register" property="year"/>년<jsp:getProperty name="register" property="month"/>월<jsp:getProperty name="register" property="day"/>일</td>
    </tr>
    <tr>
        <td bgcolor="gray"><b>관심분야:</b></td>
        <td>
            <jsp:getProperty name="register" property="realHobby"/>
        </td>
    </tr>
    <tr>
        <td bgcolor="gray"><b>자기소개:</b></td>
        <td><jsp:getProperty name="register" property="intro"/></td>
    </tr>
</table>
</div>
</body>
</html>

실행결과

느낀 점:

데이터베이스는 배열로 된 형식이 없다.. 그래서 getProperty로 배열을 출력시킬 수가 없다... 그래서 java파일 안에서 배열을 String형태로 다시 바꿔줘서 출력시키도록 유도했다.

다음에는 이런 사항을 생각하면서 코드를 수정해주면 될 것 같다.