JSP 쇼핑몰 만들기
28. JSP와 데이터베이스 연동 6
가변길이로 저장해야한다.
멤버 하나를 MemberBean에 저장하고 이 레코드들을 또 벡터에 저장을 한다.
반복문을 사용해서 rs에 저장한 데이터를 추출해야한다.
데이터가 여러개가 있으니 계속 새로운 객체를 만들어서 담아줘야한다.
public Vector<MemberBean> allSelcetMember() {
// 가변길이로 저장
Vector<MemberBean> v = new Vector<>();
// 무조건 데이터 베이스는 예외처리 해줘야한다.
try {
// 커넥션 연결
getCon();
// 쿼리 준비
String sql = "SELECT * FROM MEMBER";
// 쿼리실행
pstmt = con.prepareStatement(sql);
// 쿼리 실행 시킨 결과를 리턴해서 받아줌(테이블에 검색된 것을 자바 객체에 저장)
rs = pstmt.executeQuery();
// 반복문을 사용해서 rs에 저장한 데이터를 추출해야한다.
while (rs.next()) {
MemberBean mBean = new MemberBean(); // 컬럼으로 나뉘어진 데이터를 빈 클래스에 저장
mBean.setId(rs.getString(1));
mBean.setPass1(rs.getString(2));
mBean.setEmail(rs.getString(3));
mBean.setTel(rs.getString(4));
mBean.setHobby(rs.getString(5));
mBean.setJob(rs.getString(6));
mBean.setAge(rs.getString(7));
mBean.setInfo(rs.getString(8));
// 패키징된 MemberBean을 벡터에 저장
v.add(mBean); // 0번지부터 데이터를 순서대로 저장
}
// 자원반납
con.close();
} catch (Exception e) {
e.getStackTrace();
}
return v;
}html에 값을 넣어서 꽃으면 된다.
<div align="center">
<h2>모든회원보기</h2>
<table border="1">
<tr height="50">
<td align="center" width="150px"> 아이디 </td>
<td align="center" width="250px"> 이메일 </td>
<td align="center" width="200px"> 전화번호</td>
<td align="center" width="200px"> 취미 </td>
</tr>
<%
for(int i = 0; i < vec.size(); i++){
MemberBean bean = vec.get(i);
%>
<tr height="50">
<td align="center" width="150px"> <%= bean.getId() %> </td>
<td align="center" width="250px"> <%= bean.getEmail() %> </td>
<td align="center" width="200px"> <%= bean.getTel() %></td>
<td align="center" width="200px"> <%= bean.getHobby() %> </td>
</tr>
<%
}
%>
</table>
</div>29. JSP와 데이터베이스 연동 7
MemberInfo 작성하기
id를클릭하면 상세보기를 해보자. a태그의 링크를 이용하면된다.
jsp주소에 id값을 심어서 보내주면된다.
MemberDAO에서는 한사람의 데이터값을 받아와야하니 MemberInfo에서 한사람의 id값을 넣어준다.
String id = request.getParameter("id"); //Memverlist에서 받은값
//한사람 정보 뱉어내기
public MemberBean oneSelectMember(String id) {
//한사람만 정보리턴하기에 빈클래스 객체 생성
MemberBean bean = new MemberBean();
try {
//커넥션연결
getCon();
//쿼리준비
String sql = "SELECT * FROM MEMBER WHERE id = ?";
pstmt = con.prepareStatement(sql);
//?값에 매핑
pstmt.setString(1, id);
//쿼리실행
rs = pstmt.executeQuery();
if(rs.next()) {
bean.setId(rs.getString(1));
bean.setPass1(rs.getString(2));
bean.setEmail(rs.getString(3));
bean.setTel(rs.getString(4));
bean.setHobby(rs.getString(5));
bean.setJob(rs.getString(6));
bean.setAge(rs.getString(7));
bean.setInfo(rs.getString(8));
}
rs.close();
con.close();
}catch (Exception e) {
e.printStackTrace();
}
return bean;
}<div align="center">
<h2>회원 정보 보기</h2>
<table border="1">
<tr height="50">
<td align="center" width="150px"> 아이디 </td>
<td width="250px"> <%= mBean.getId() %> </td>
</tr>
<tr height="50">
<td align="center" width="150px"> 이메일 </td>
<td width="250px"> <%= mBean.getEmail()%> </td>
<tr height="50">
<td align="center" width="150px"> 전화 </td>
<td width="250px"> <%= mBean.getTel() %> </td>
</tr>
<tr height="50">
<td align="center" width="150px"> 취미 </td>
<td width="250px"> <%= mBean.getHobby() %> </td>
</tr>
<tr height="50">
<td align="center" width="150px"> 직업 </td>
<td width="250px"> <%= mBean.getJob() %> </td>
</tr>
<tr height="50">
<td align="center" width="150px"> 나이 </td>
<td width="250px"> <%= mBean.getAge() %></td>
</tr>
<tr height="50">
<td align="center" width="150px">정보</td>
<td width="250px"><%= mBean.getInfo()%></td>
</tr>
</table>
</div>30. JSP와 데이터베이스 연동 8
정보에서 수정하기와 삭제하기
밑에 칸하나를 더만들어서 수정버튼 삭제버튼 목록보기버튼 회원가입버튼
수정버튼 하면 화면 그대로 하면서 수정
아이디 이메일 전화 기준 + 맨밑에 비밀번호입력
비밀번호가 맞을때만 수정하게 하기
버튼 4개 만들 것이다. input submit은 form안에서만 사용할 수 있다.
<button onclick="location.href='MemberList.jsp'" >회원전체보기</button>
js를 사용해서 버튼을 누르면 페이지로 갈 수 있다.
form은 값을 가지고 데이터를 가야하는 부분까지만 감싼다.
버튼이 같이 감싸지면 MemberUpdateProc로 같이가지려한다.
버튼바깥과 테이블 안쪽에 넣어주는 것으로 하자.
<div align="center">
<h2>회원 정보 수정 하기</h2>
<table border="1">
<form action="MemberUpdateProc.jsp" method="post" >
<tr height="50">
<td align="center" width="150px"> 아이디 </td>
<td width="250px"> <%= mBean.getId() %> </td>
</tr>
<tr height="50">
<td align="center" width="150px"> 이메일 </td>
<td width="250px"> <input type="email" name ="email" value="<%= mBean.getEmail()%>"/></td>
<tr height="50">
<td align="center" width="150px"> 전화 </td>
<td width="250px"> <input type="tel" name ="tel" value="<%= mBean.getTel()%>"/></td>
</tr>
<tr height="50">
<td align="center" width="150px"> 패스워드 </td>
<td width="250px"> <input type="password" name ="pass1"/> </td>
</tr>
<tr height="50">
<td align="center" colspan="2">
<input type="submit" value = "회원수정하기"/>
</form>
<button onclick="location.href='MemberList.jsp'">회원전체보기</button>
</td>
</tr>
</table>
</div>31. JSP와 데이터베이스 연동 9
MemberUpdate를 처리하기 위해 MemberUpdateProc.jsp를 만들자.
그런데 문제가 있다.
폼데이터 처리라는것은 폼안에 잇는 값을 보내느 것이다.
id는 박스가없어서 보낼수가 없는데 input type hidden하면 데이터가 보내진다.
<input type="hidden" name="id" value="<%=mBean.getId() %>"/>
4개뿐이안되는데 멤버빈받으면 어카나 그냥 받아오고 나머지는 null값이 될뿐이다.
<jsp:useBean id="mBean" class="model.MemberBean">
<jsp:setProperty name="mBean" property="*" />
</jsp:useBean>원래는 한회원 가져오는 것을 사용해도되지만 비밀번호만 쓰는 메소드를 따로 만들어보자.
비밀번호가 일치하는지 비교해주자.
// 한회원의 비밀번호
public String getPass(String id) {
getCon();
String pass = "";
try {
String sql = "SELECT PASS1 FROM MEMBER WHERE id = ?";
pstmt = con.prepareStatement(sql);
pstmt.setString(1, id);
rs = pstmt.executeQuery();
if (rs.next()) {
pass = rs.getString("PASS1");
}
rs.close();
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
return pass;
}<%
String id = request.getParameter("id");
String email = request.getParameter("email");
String tel = request.getParameter("tel");
MemberDAO mdao = new MemberDAO();
//스트링타입으로 저장되어 있는 db의 패스워드를 가져오기
String dbPass = mdao.getPass(id);
if (mBean.getPass1().equals(dbPass)) { //기존패스와 db패스가 같다면 멤버테이블 수정
} else {
%>
<script type="text/javascript">
alert("패스워드가 맞지 않습니다 다시 확인해주세요");
history.go(-1);
</script>
<%
}
%>32. JSP와 데이터베이스 연동 10
32.1 업데이트
수정하는 처리를 해보자 비밀번호가 맞으면 업데이트하면된다.
폼데이터에서 가져온 정보로 멤버빈 객체를 만들어 놓았으니 그것을 가져다 사용하면된다.
업데이트하고 멤버리스트를 리다이렉트 해주면된다.
public void updateMember(MemberBean mBean) {
getCon();
String sql = "UPDATE MEMBER SET EMAIL=?, TEL=? WHERE ID = ?";
try {
pstmt = con.prepareStatement(sql);
pstmt.setString(1, mBean.getEmail());
pstmt.setString(2, mBean.getTel());
pstmt.setString(3, mBean.getId());
pstmt.executeUpdate();
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}if (mBean.getPass1().equals(dbPass)) { //기존패스와 db패스가 같다면 멤버테이블 수정
//MemberDAO의 회원수정 메소드 호출
mdao.updateMember(mBean);
response.sendRedirect("MemberList.jsp");
} 32.2 삭제
삭제는 아이디와 비밀번호만 받으면된다.
//한회원을 삭제하는 메소드
public void deleteMember(String id) {
try {
getCon();
String sql = "DELETE FROM MEMBER WHERE id = ? ";
pstmt = con.prepareStatement(sql);
pstmt.setString(1, id);
pstmt.executeUpdate();
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}<%
MemberDAO mdao = new MemberDAO();
String dbPass = mdao.getPass(mBean.getId());
if (mBean.getPass1().equals(dbPass)) {
//MemberDAO의 회원삭제 메소드 호출
mdao.deleteMember(mBean.getId());
response.sendRedirect("MemberList.jsp");
} else {
%>2023.03.24
코드 자체는 어렵지 않은데 설계하는데서 항상 어려움을 겪는 것 같다.
'기초단계 > JSP&Servlet' 카테고리의 다른 글
| 2023.03.26 JSP (0) | 2023.03.26 |
|---|---|
| 2023.03.25 JSP (0) | 2023.03.26 |
| 2023.03.22 JSP (0) | 2023.03.22 |
| 2023.03.21 JSP (0) | 2023.03.21 |
| 2023.03.20 JSP (0) | 2023.03.20 |