HTML

240118 홈페이지 만들기

코딩하는딩굴 2024. 1. 18. 11:54

수업에 앞서 조사 및 기본적으로 알고 있으면 좋은 여러 가지

1. 프레임워크와 라이브러리의 차이점

2. 오버로딩과 오버라이딩의 차이점

3. 힙 영역의 사용법

4. 클래스와 인터페이스의 차이점

5. var, let, const, 호이스팅

 

서버와 클라이언트가 있으면

서버에서는 Java, JSTL, EL 등을 먼저 계산하여 JSP 에 넣어 줌

클라이언트에서 확인 가능한 사항은, HTML, CSS, JS 만 확인 가능

 

CDN : 서버에 없는 파일을 연결하여 사용할 수 있음, 서버에 필요한 파일이 없어도 CDN 을 연결하면 필요한 파일을 CDN 에서 제공할 수 있음

 

제이쿼리 문법 : $ 표시로 시작

$(document).ready(function() {} );

 

Button 속성에 submit 을 넣고 클릭 시 알림창 뜨는 함수 만들기

<form onsubmit="return check()">
function check() {
  // alert("제이쿼리가 동작합니다.");
  let id = $("#id").val();
  alert(id);
  return false;
}

 

제이쿼리 실습

<script type="text/javascript">
  function check() {
    // alert("제이쿼리가 동작합니다.");
    let id = $("#id").val();
    // Not a Number
    // alert(id + " : " + id.length + " / 숫자 검사 : " + isNaN(id));
    if (id.length < 3 || id == "") {
      alert("아이디는 3글자 이상이여야 함");
      $("#id").focus();
      return false;
    }
    let name = $("#name").val();
    if (name.length < 3) {
      alert("이름은 3글자 이상이여야 함");
      $("#name").focus();
      return false;
    }
    let pw1 = $("#pw1").val();
    let pw2 = $("#pw2").val();
    if (pw1.length < 8) {
      alert("비밀번호는 8자리 이상만 받습니다.");
      $("#pw1").focus();
      return false;
    }
    if (pw2.length < 8) {
      alert("비밀번호는 8자리 이상만 받습니다.");
      $("#pw2").focus();
      return false;
    }
    
    if (pw1 != pw2) {
      alert("비밀번호는 서로 같아야 합니다.");
      $("#pw1").val(""); // val 안의 값을 넣지만, 빈칸이면 값을 지우는 효과를 가짐
      $("#pw1").focus();
      return false;
    }
  }
</script>

 

$(document).ready 대신 사용할 수 있는 축약형과

$() 안에 쉼표로 여러개를 넣을 수 있음

  // $(document).ready(function() {});
  // 대신 사용할 수 있는 축약형
  $(function() {
    $(".id-alert, .name-alert, .pw-alert").hide();
    // $(".name-alert").hide();
    // $(".pw-alert").hide();
  })

 

다시 나타내고 싶을 떄에는 각 조건문에 show(); 를 사용하여 작성

if (id.length < 3 || id == "") {
  // alert("아이디는 3글자 이상이여야 함");
  $(".id-alert").show();
  $("#id").focus();
  return false;
}

 

이후 정상 입력 시 사라지게 만들기

if (id.length < 3 || id == "") {
  // alert("아이디는 3글자 이상이여야 함");
  $(".id-alert").show();
  $("#id").focus();
  return false;
} else {
  $(".id-alert").hide();
}

 

AJAX

비동기적 상호작용 언어

 

script 안에 .ajax 를 이용하여 필요한 사항들을 작성

-> 홈페이지 회원가입 중 ID 중복체크 하는 항목

  function idCheck() {
    // alert("ID 검사를 누름");
    let id = $("#id").val();
    if (id.length < 3) {
      $(".id-alert").show();
    } else {
      $(".id-alert").hide();
      // alert(id);
      $.ajax({
        url : './idCheck', // 어디로 보낼 지 정함
        type : 'post', // 보내는 타입 설정
        dataType : 'text', // 보내는 데이터의 타입 설정
        data : {'id' : id}, // 앞이 보낼 이름
        success : function(result){
          alert("통신성공~");
        },
        error : function(request, status, error){
          alert("통신실패~~");
        }
      });
    }
    return false;
  }

 

서블릿에서 처리하는 법

String id = request.getParameter("id");
    
System.out.println("검사요청 : " + id);
    
MemberDAO dao = new MemberDAO();
MemberDTO dto = new MemberDTO();
    
dto.setMid(id);
    
int result = dao.idCheck(dto);
    
if (result == 0) {
    System.out.println("중복 없음 : " + id);
} else {
    System.out.println("중복 있음 : " + id);
}
    
PrintWriter pw = response.getWriter();
pw.print(result);

 

PrintWriter 를 너무 오랜만에 사용..

pw.print 를 사용하여 괄호 안의 값을 페이지로 전송

 

중간의 DAO 에는

  public int idCheck(MemberDTO dto) {
    int result = 1;
    Connection conn = dbConn.getConn();
    PreparedStatement pstmt = null;
    ResultSet rs = null;
    String sql = "SELECT count(*) as count,mid FROM c23c_26.member WHERE mid=?";
    
    try {
      pstmt = conn.prepareStatement(sql);
      pstmt.setString(1, dto.getMid());
      rs = pstmt.executeQuery();
      
      if (rs.next()) {
        result = rs.getInt("count");
      }
      
    } catch (SQLException e) {
      System.out.println("MemberDAO - idCheck 실패");
      // e.printStackTrace();
    } finally {
      close(conn, pstmt, rs);
    }
    return result;
  }

 

마지막으로 제이쿼리 문장 안의

success : function(result){
  // alert("통신성공~");
  if (result == 1) {
    alert("이미 가입되어 있어요.");
  } else {
    alert("가입 가능해요.");
}

 

으로 마지막 처리 진행