본문 바로가기
일했던김개미

[AJAX] jsp model2로 구현한 id/pw찾기 구현

by 김갬 2013. 9. 2.
반응형

* 파일구조 형태 *

Controller: JoinusController.java

Dao: MemberDao.java , TWMemberDao.java

Vo: Members.java

View단: find.jsp

 

 

< find.jsp >

 

<html>
<head>
      <title>find</title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="css/find.css" type="text/css" rel="stylesheet" />
<script src="../js/jquery-1.10.1.js" type="text/javascript" charset="utf-8"></script>

<script type="text/javascript">

// window로드 됐을때, id가 btnFindUid / btnFindPW 인 것을 클릭하면 해당 함수 실행
 $(window).load(function() {
  $("#btnFindUid").click(btnFindUid);
  $("#btnFindPW").click(btnFindPW);
 });

 

// btnFindUid를 클릭했을 때 실행되는 함수내용.

 function btnFindUid(event) {

 

  // id가 Email인 객체를 Email이라는 변수에 저장.

  var Email = $("#Email");

 

  // 변수 Email의 value가 공백("")이면 alert창(경고창) 띄우고 return false를 함.
  if (Email.val() == "") {
   alert("이메일을 입력하세요");
   return;
  }

 

  var name = $("#name");
  if (name.val() == "") {
   alert("이름을 입력하세요");
   return;
  }

 

  // 해당 값들을 findIDResult.htm의 주소로 변수 Email과 name의 값들을 controller에 전달,

  // 전달한 후 받은 익명의 function으로 controller로 부터 받은 결과값(result변수 값)을 alert창을 통해 출력.

  $.post("findIDResult.htm", {
   Email : Email.val(),
   name : name.val()
  }, function(data) {
   alert(eval(data).result);
  });
 }

 

 

</script>

</head>

<body>

<div class="leftt">
   <form name="form1" action="findIDResult.htm" method="post">
    <fieldset>
     <legend class="hidden"> ID/비밀번호 찾기 </legend>
     <ul id="findID">
      <li>ID찾기</li>
      <li><label>· E-mail </label><input type="text" id="Email" name="Email" /></li>
      <li><label>· 이름 </label> <input type="text" id="name" name="name" /></li>
      <li>
       <input type="button" name="btnFindUid" id="btnFindUid" value="아이디 찾기" />
      </li>
     </ul>
    </fieldset>
   </form>
  </div>

 


  </body>

</html>

 

 

 

< JoinusController.java >

 

 

@Controller
public class JoinusController {

 

 // Dao를 전역변수로 선언해 현재 class파일에서 공통으로 사용한다.

 @Autowired
 private MembersDao membersDao;

 

 // 해당 페이지명으로 요청이 들어왔을 시 실행할 함수부분.

 @RequestMapping("/joinuser/findIDResult.htm")

 

 // findid함수 선언 후 매개변수는 find.jsp에서 post되어 보내진 Email, name과 

 // 윈도우창에서 출력할 서블릿객체(HttpServletResponse) 선언
 public void findId(String Email, String name, HttpServletResponse response) throws IOException {

  // 출력시 한글깨짐현상 방지를 위해 새로 encoding해줌. UTF-8로
  response.setCharacterEncoding("UTF-8");

 

  // 자바출력객체 printwriter에 서블릿객체의 값을 저장해 생성.

  PrintWriter out = response.getWriter();
 

  // memberDao에 있는 FindID함수의 결과값이 true이면,

  if (membersDao.FindID(Email, name) == true) {

 

  // Members라는 value객체 m에(VO부분에 생성한 Members.java) 

  // memberDao에 있는 getID함수의 결과값을 저장.(Email과 name값을 담아서)
   Members m = membersDao.getID(Email, name);

 

   // 문자열변수 id에 m에 있는 id를 가져와 저장.
   String id = m.getId();

 

   // 출력객체 out변수를 이용해 결과값 전송.

   // result에 '입력하신 정보와 일치하는 아이디는 " + id + " 입니다.' 를 담아 view단에서 출력함.
   out.write("({'result':'입력하신 정보와 일치하는 아이디는 " + id + " 입니다.'})");

 

  // memberDao에 있는 FindID함수의 결과값이 false이면,

  } else {

 

// result에 '입력하신 정보로 찾을 수 없습니다.' 를 담아 view단에서 출력함.
   out.write("({'result': '입력하신 정보로 찾을 수 없습니다.'})");
  }
 }

 

}

 

 

< TWMemberDao.java >

- MemberDao.java에서 사용할 함수들을 인터페이스로 정의해 놓은 파일.

 

// value객체인 Members.java를 사용하려고 import함.

import tourwingz.vo.Members;

 

public interface TWMemberDao {

 

 public Members getID(String Email, String name);

 public Members getPW(String id, String name, String pwQ, String pwA);
 public boolean FindID(String Email, String name); 
 public boolean FindPW(String id, String name, String PwQ, String PwA);

 

}

 

 

 

< MemberDao.java >

 

 

// TWMemberDao.java 인터페이스 파일을 상속받아 클래스 생성.

public class MembersDao implements TWMemberDao {

 

 // 전역변수로 자바코드와 데이터베이스를 연결시켜주기 위해 선언

 private JdbcTemplate template;

 

 public void setTemplate(JdbcTemplate template) {
  this.template = template;
 }

 

 

 // 상속받아서 사용하는 함수기 때문에 override(재정의)해 사용한다.

 // ID를 찾기위해 입력된 Email과 name을 매개변수로 해 구현한 함수.

  @Override
 public Members getID(String Email, String name) {

 

  // DB에서 돌린 쿼리문, ?는 매개변수에 따라 달라진다.

  // Members테이블에서 입력된 email과 name이 있으면 해당되는 필드값을 출력하라는 쿼리문.

  String sql = "select * from Members where email=? and Name= ?";

 

  // try/catch문으로 묶어준 이유는 쿼리문의 결과값이 없다면 null을 무조건 return하게 했다.

  try {

   // 위 쿼리문의 ? 에 해당하는 것을 매개변수 Email과 name을 넣어 실행한다.
   return template.queryForObject(sql, new Object[] { Email, name },
     new RowMapper<Members>() {
      @Override
      public Members mapRow(ResultSet rs, int rowNum) throws SQLException {
       Members m = new Members();
       m.setId(rs.getString("id"));
       m.setPwd(rs.getString("pwd"));
       m.setPwQ(rs.getString("pwQ"));
       m.setPwA(rs.getString("pwA"));
       m.setEmail(rs.getString("email"));
       m.setName(rs.getString("name"));
       m.setSignupDate(rs.getDate("signupdate"));
       m.setDeleteDate(rs.getDate("deletedate"));
       m.setLiveCity(rs.getString("livecity"));
       m.setJob(rs.getString("job"));
       m.setGender(rs.getString("gender"));
       m.setPurpose(rs.getString("purpose"));
       return m;
      }
     });
  } catch (Exception e) {
   return null;
  }
 }

 

 // getID(Email, name)함수를 이용해 값이 있는지 없는지 판단하는 함수

 @Override
 public boolean FindID(String Email, String name) {

 

  // getID함수를 이용해 VO(Value Object) m에 담는다.

  Members m = getID(Email, name);

 

  // m의 값이 null이 아니면

  if (m != null) {

 

   // m의 ID값을 id라는 변수에 담는다.
   String id = m.getId();

 

   // true를 return한다.
   return true;

  }

  // m의 값이 null이면 false를 return한다.

  return false;
 }

 

}

반응형

댓글