ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [6주][3일,4일][5~6th] JSP: 로그인폼~회원삭제. "회원가입리스트 보여주기" 까지
    N스크린하이브리드앱과정/JSP:Model-1 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;
     }    
    }//클래스

     

    (ㅇ_ㅇ)?

Designed by Tistory.