N스크린하이브리드앱과정/JSP:Model-1

[6주][3일,4일][5~6th] JSP: 로그인폼~회원삭제. "회원가입리스트 보여주기" 까지

광천스러움 2013. 8. 21. 16:10

이걸 열심히 배우면 쇼핑몰 하나쯤은 거뜬히 만들 수 있겠지?ㅋ

혹시나 나중에 친구가 쇼핑몰을 개업해서 나에게 홈페이지와 전산관리를 부탁할지도 모르니 열심히 공부해야 겠다. 그때 내가 도움이 될 수 있게..ㅋ 하지만 내 머리가 이리도 딸릴 줄이야...ㅠ_ㅠ;

아직 머리가 잘 돌아갈려면 내 공부 스타일이 한참 멀었다는 것을 오늘도 새삼 느낀다..

 

1. loginForm.jsp

<%
 String id;
 if(session.getAttribute("id")!=null){
  id = "세션값 있음";
 }else{
  id = "세션값 없음";
 }
%>
<h1>로그인</h1>
<form action="loginPro.jsp" method="post">
아이디: <input type="text" name="id"><br>
패스워드: <input type="password" name="passwd"><br>
<input type="submit" value="로그인">
<input type="button" value="로그아웃" onclick="location.href='logout.jsp'"><br>
<input type="button" value="회원가입" onclick="location.href='insertForm.jsp'"><br>
</form>
<%=id %>

 

2. loginPro.jsp

<%
//id passwd 가져오기
String id = request.getParameter("id");
String passwd = request.getParameter("passwd");
//디비작업 객체 생성 dbPro
//int check=메서드 userCheck(id,passwd) 1,0,-1인지
MemberDBBean dbpro = new MemberDBBean();
int check = dbpro.userCheck(id,passwd);
//check==1 세션생성"id" 이동 main.jsp
//check==0 비밀번호틀림 뒤로이동
//check==-1 아이디없음 뒤로이동

if(check==1){
 session.setAttribute("id", id);
 %>
 <script type="text/javascript">
 alert("세션값 생성");
 location.href="main.jsp";
 </script>
 <%
}else if(check==0){
 %><script type="text/javascript">
 alert("비밀번호 틀림");
 history.back();
 </script>
 <%
}else{
 %><script type="text/javascript">
 alert("아이디 없음");
 history.back();
 </script>
 <%
}
%>

 

3. insertForm.jsp

<h1>회원가입</h1>
<form action="insertPro.jsp" method="post">
아이디: <input type="text" name="id"><br>
패스워드: <input type="password" name="passwd"><br>
이름: <input type="text" name="name"><br>
<input type="submit" value="전송"><br>
</form>

 

4. insertPro.jsp

<%
//한글처리
request.setCharacterEncoding("utf-8");
//패키지 member 파일이름 MemberDataBean
//멤버변수 id passwd name reg_date

//액션태그 useBean 이동 객체 생성 member
//액션태그 setProperty 폼=>자바빈저장
%>
<jsp:useBean id="member" class="member.MemberDataBean"/>
<jsp:setProperty property="*" name="member" />
아이디:<jsp:getProperty property="id" name="member"/><br>
패스워드:<jsp:getProperty property="passwd" name="member"/><br>
이름:<jsp:getProperty property="name" name="member"/><br>
<%
member.setReg_date(new Timestamp(System.currentTimeMillis()));
out.println("날짜: "+member.getReg_date());
//디비작업 패키지 member 파일이름 MemberDBBean
//객체생성 dbPro
MemberDBBean dbpro = new MemberDBBean();
//메서드 insertMember(member)
dbpro.insertMember(member);
//이동 회원가입성공 loginForm.jsp
%><script type="text/javascript">
 alert("회원가입 성공!");
 location.href="loginForm.jsp";
 </script><%
%>

 

5. updateForm.jsp

<%
//세션 값 가져오기
String id=(String)session.getAttribute("id");
//세션값 없으면 loginForm.jsp이동
if(id==null){
 response.sendRedirect("loginForm.jsp");
}
//디비객체생성 dbPro
MemberDBBean dbPro=new MemberDBBean();
//자바빈 member=getMember(id)메서드 호출
MemberDataBean member=dbPro.getMember(id);
%>
<h1>회원정보수정</h1>
<form action="updatePro.jsp" method="post">
아이디:<%=member.getId() %>
<input type="hidden" name="id" value="<%=member.getId()%>"><br>
패스워드:<input type="password" name="passwd"><br>
이름:<input type="text" name="name" value="<%=member.getName()%>"><br>
<input type="submit" value="회원수정">
</form>

 

6. updatePro.jsp

<%
//한글처리
request.setCharacterEncoding("utf-8");
//액션태그 자바빈 객체생성 member
//액션태그 폼 => 자바빈 저장
%>
<jsp:useBean id="member" class="member.MemberDataBean"/>
<jsp:setProperty property="*" name="member"/>
<%
//디비객체생성 dbPro
MemberDBBean dbPro=new MemberDBBean();
//int check =수정메서드호출 updateMember(member)
int check=dbPro.updateMember(member);
//check==1 수정완료 main.jsp 이동
//check==0 비밀번호 틀림 뒤로이동
if(check==1){
 %>
 <script type="text/javascript">
 alert("수정완료");
 location.href="main.jsp";
 </script>
 <%
}else{
 %>
 <script type="text/javascript">
 alert("비밀번호틀림");
 history.back();
 </script>
 <%
}
%>

 

7. deleteForm.jsp

<%
//세션값 가져오기
String id=(String)session.getAttribute("id");
//세션값 없으면 loginForm.jsp 이동
if(id==null){
 response.sendRedirect("loginForm.jsp");
}
%>
<h1>회원정보삭제</h1>
<form action="deletePro.jsp" method="post">
아이디: <%=id %><br>
<input type="hidden" name="id" value="<%=id %>"><br>
패스워드: <input type="password" name="passwd"><br>
<input type="submit" value="회원삭제"><br>
</form>

 

8. deletePro.jsp

<%
//세션값 가져오기
String id=(String)session.getAttribute("id");
//세션값 없으면 loginForm.jsp 이동
if(id==null){
 response.sendRedirect("loginForm.jsp");
}
//passwd값 가져오기
String passwd = request.getParameter("passwd");
//디비객체생성 dbPro
MemberDBBean dbPro = new MemberDBBean();
// int check = deleteMember(id,passwd)
int check = dbPro.deleteMember(id, passwd);
// check==1 세션값 삭제, 삭제성공메시지, loginForm.jsp 이동
// check==0 비밀번호틀림. 뒤로이동
if(check==1){
 session.invalidate();
 %>
 <script type="text/javascript">
 alert("삭제 성공!");
 location.href="loginForm.jsp";
 </script>
 <%
}else if(check==0){
 %><script type="text/javascript">
 alert("비밀번호 틀림");
 history.back();
 </script>
 <%
}
%>

 

9. main.jsp

<%
//세션값 가져오기
String id=(String)session.getAttribute("id");
//세션값이 없으면 loginForm.jsp이동
if(id==null){
 response.sendRedirect("loginForm.jsp");
}
%>
<%=id %>님이 로그인하셨습니다.<br>
<a href="info.jsp">회원정보조회</a><br>
<a href="updateForm.jsp">회원정보수정</a><br>
<a href="deleteForm.jsp">회원정보삭제</a><br>
<%
if(id!=null){
 if(id.equals("admin")){
  %>
  <a href="list.jsp">회원목록</a>
  <%
 }
}
%>

 

10. info.jsp

<%
//세션값 가져오기
String id=(String)session.getAttribute("id");
//세션값 없으면 loginForm.jsp이동
if(id==null){
 response.sendRedirect("loginForm.jsp");
}
//디비객체 생성 dbPro
MemberDBBean dbPro=new MemberDBBean();
//자바빈 member=메서드호출 getMember(id)
MemberDataBean member=dbPro.getMember(id);
%>
<h1>회원정보조회</h1>
아이디:<%=member.getId() %><br>
비밀번호:<%=member.getPasswd() %><br>
이름:<%=member.getName() %><br>
가입일:<%=member.getReg_date() %><br>
<a href="main.jsp">메인화면으로</a>

 

11. list.jsp (다음 시간에 바뀔 예정임)

<%
//세션값 가져오기
String id = (String)session.getAttribute("id");
//세션값 없으면 loginForm.jsp이동
if(id==null){
 response.sendRedirect("loginForm.jsp");
}
//디비객체 생성 dbPro
MemberDBBean dbPro = new MemberDBBean();
List memberList=null;
//memberList = getMemberList() 회원전체가져오기
memberList = dbPro.getMemberList();
%>
<h1>회원목록</h1>
<h3><a href="main.jsp">메인화면으로</a></h3>
<table border="1">
<tr><td>아이디</td><td>비밀번호</td><td>이름</td><td>가입일</td></tr>
<%
 for(int i=0; i<memberList.size(); i++){
  MemberDataBean member = (MemberDataBean) memberList.get(i);
  %>
  <tr><td><%=member.getId() %></td>
  <td><%=member.getPasswd() %></td>
  <td><%=member.getName() %></td>
  <td><%=member.getReg_date() %></td></tr>
 <%} 
%>
</table>

 

* java파일 패키지 만드는 경로(member 패키지)

 

 

12. MemberDataBean.java

public class MemberDataBean {
 private String id;
 private String passwd;
 private String name;
 private Timestamp reg_date;
 
 public String getId() {
  return id;
 }
 public void setId(String id) {
  this.id = id;
 }
 public String getPasswd() {
  return passwd;
 }
 public void setPasswd(String passwd) {
  this.passwd = passwd;
 }
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 public Timestamp getReg_date() {
  return reg_date;
 }
 public void setReg_date(Timestamp reg_date) {
  this.reg_date = reg_date;
 } 
}

 

13. MemberDBBean.java

public class MemberDBBean {
 //디비연결 1,2단계
 private Connection getConnection() throws Exception{
  Connection con=null;
  String url="jdbc:mysql://localhost:3306/jspbeginner";
  String user="jspid";
  String pwd="jsppass";
  
  //1단계 드라이버로더
  Class.forName("com.mysql.jdbc.Driver");
  //2단계 디비연결
  con=DriverManager.getConnection(url,user,pwd);
  return con;
 }
 //회원가입
 public void insertMember(MemberDataBean member){
  Connection con=null;
  PreparedStatement pstmt=null;
  String sql="";
  try {
   //1,2단계 메서드 호출
   con=getConnection();
   //3단계 insert
   sql="insert into member(id,passwd,name,reg_date) values(?,?,?,?)";
   pstmt=con.prepareStatement(sql);
   pstmt.setString(1, member.getId());
   pstmt.setString(2, member.getPasswd());
   pstmt.setString(3, member.getName());
   pstmt.setTimestamp(4, member.getReg_date());
   //4단계 실행
   pstmt.executeUpdate();
  } catch (Exception e) {
   e.printStackTrace();
  }finally{
   if(pstmt!=null)try{pstmt.close();}catch(SQLException ex){}
   if(con!=null)try{con.close();}catch(SQLException ex){}
  }
 }
 //회원삭제
 public int deleteMember(String id, String passwd){
  int check=0;
  Connection con=null;
  PreparedStatement pstmt=null;
  String sql="";
  ResultSet rs=null;
  try{
   //1,2단계 메서드 호출
   con=getConnection();
   // 3단계 : id에 해당하는 passwd를 가져오는 sql(sql 생성)
   sql = "select passwd from member where id=?";
   pstmt = con.prepareStatement(sql);
   pstmt.setString(1, id);
   // 4단계 실행 => rs저장
   rs = pstmt.executeQuery();
   // 5단계 rs 데이터있으면 id있음
   //   폼비밀번호 rs비밀번호 비교 맞으면 => 수정
   //                     틀리면 => 비밀번호틀림
   //            없으면 id없음
   if(rs.next()){
    //id있음
    String dbPass=rs.getString("passwd");
    if(passwd.equals(dbPass)){
     //비밀번호 맞음 수정
     sql = "delete from member where id=?";
     pstmt=con.prepareStatement(sql);
     pstmt.setString(1, id);
     
     // 4단계 실행
     pstmt.executeUpdate(); //insert,update,delete
     check=1;
    }else{
     check=0;
    }
   }   
  }catch (Exception e) {
   e.printStackTrace();
  }finally{
   if(rs!=null)try{rs.close();}catch(SQLException ex){}
   if(pstmt!=null)try{pstmt.close();}catch(SQLException ex){}
   if(con!=null)try{con.close();}catch(SQLException ex){}
  }
  return check;
 }
 
 //유저체크
 public int userCheck(String id,String passwd){
  int check=-1;
  Connection con=null;
  PreparedStatement pstmt=null;
  String sql="";
  ResultSet rs=null;
  try {
   //1,2단계 메서드 호출
   con=getConnection();
   //3단계 id에 해당하는 passwd가져오기
   sql="select passwd from member where id=?";
   pstmt=con.prepareStatement(sql);
   pstmt.setString(1, id);
   //4단계 rs저장
   rs=pstmt.executeQuery();
   //5단계 데이터가 있으면
   //    비밀번호 비교 맞으면 check=1
   //               틀리면 check=0
   // 없으면 아이디 없음 check=-1
   if(rs.next()){
    //아이디있음
    String dbPass=rs.getString("passwd");
    if(passwd.equals(dbPass)){
     check=1;//비밀번호맞음
    }else{
     check=0;//비밀번호틀림
    }
   }else{
    check=-1;//아이디없음
   }
  } catch (Exception e) {
   e.printStackTrace();
  }finally{
   if(rs!=null)try{rs.close();}catch(SQLException ex){}
   if(pstmt!=null)try{pstmt.close();}catch(SQLException ex){}
   if(con!=null)try{con.close();}catch(SQLException ex){}
  }
  return check;
 }
 //회원정보가져오기
 public MemberDataBean getMember(String id){
  Connection con=null;
  PreparedStatement pstmt=null;
  ResultSet rs=null;
  String sql="";
  MemberDataBean member=null;
  try {
   //1,2단계 메서드호출
   con=getConnection();
   //3단계 id에 해당하는 모든정보 가져오기
   sql="select * from member where id=?";
   pstmt=con.prepareStatement(sql);
   pstmt.setString(1, id);
   //4단계 rs저장
   rs=pstmt.executeQuery();
   //5단계 데이터가 있으면
   //자바빈 생성   rs=>자바빈저장
   if(rs.next()){
    member=new MemberDataBean();
    member.setId(rs.getString("id"));
    member.setPasswd(rs.getString("passwd"));
    member.setName(rs.getString("name"));
    member.setReg_date(rs.getTimestamp("reg_date"));
   }
  } catch (Exception e) {
   e.printStackTrace();
  }finally{
   if(rs!=null)try{rs.close();}catch(SQLException ex){}
   if(pstmt!=null)try{pstmt.close();}catch(SQLException ex){}
   if(con!=null)try{con.close();}catch(SQLException ex){}
  }
  return member;
 }

//회원수정하기
 public int updateMember(MemberDataBean member){
  Connection con=null;
  PreparedStatement pstmt=null;
  ResultSet rs=null;
  String sql="";
  int check=-1;
  try {
   //1,2단계 연결메서드 호출
   con=getConnection();
   //3단계 id에 해당하는 passwd가져오기
   sql="select passwd from member where id=?";
   pstmt=con.prepareStatement(sql);
   pstmt.setString(1, member.getId());
   //4단계 rs저장
   rs=pstmt.executeQuery();
   //5단계 rs데이터가 있으면
   //  비밀번호비교 맞으면 check=1
   //      //3단계 update //4단계 실행
   //   틀리면 check=0
   if(rs.next()){
    String dbPass=rs.getString("passwd");
    if(member.getPasswd().equals(dbPass)){
     check=1;
     //3단계
     sql="update member set name=? where id=?";
     pstmt=con.prepareStatement(sql);
     pstmt.setString(1, member.getName());
     pstmt.setString(2, member.getId());
     //4단계
     pstmt.executeUpdate();
    }else{
     check=0;
    }
   }
  } catch (Exception e) {
   e.printStackTrace();
  }finally{
   if(rs!=null)try{rs.close();}catch(SQLException ex){}
   if(pstmt!=null)try{pstmt.close();}catch(SQLException ex){}
   if(con!=null)try{con.close();}catch(SQLException ex){}
  }
  return check;
 }
 //회원리스트
 public List getMemberList(){
  List memberList = new ArrayList<>();
  
  Connection con = null;
  String sql="";
  PreparedStatement pstmt=null; //sql문장을 먼저 미리 쓰겠다
  ResultSet rs = null;
  try {
   //1,2단계 디비연결 메서드 호출
   con = getConnection();
   //3단계 sql
   sql="select * from member";
   pstmt = con.prepareStatement(sql);
   //4단계 rs저장
   rs=pstmt.executeQuery();
   //5단계 데이터 있는 경우
   //  자바빈객체생성
   //  rs => 자바빈저장
   while(rs.next()){ //첫번째행
    MemberDataBean member = new MemberDataBean(); //한사람꺼에대한 기억장소를 생성
    member.setId(rs.getString("id"));
    member.setPasswd(rs.getString("passwd"));
    member.setName(rs.getString("name"));
    member.setReg_date(rs.getTimestamp("reg_date"));
    
    // 자바빈 => memberList한칸 저장
    memberList.add(member);
  
   }
  } catch (Exception e) {
   e.printStackTrace();
  }finally{
   
  }
  return memberList;
 }    
}//클래스

 

(ㅇ_ㅇ)?