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]+" ");
}
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형태로 다시 바꿔줘서 출력시키도록 유도했다.
다음에는 이런 사항을 생각하면서 코드를 수정해주면 될 것 같다.