전체 글 202

DAO에서 while(rs.next)를 사용할 때

왜 자꾸 에러가 발생하나 했더니.. 얘 때문이었다..while (rs.next())보다 rs.getLong("MEMBER_NUMBER") 먼저 사용해서 발생한 에러. ResultSet rs가 아직 아무것도 가리키고 있지 않은 상태에서 getLong~ 으로 데이터를 가져오려고 시도했기 때문이다. 예를 들면, 책을 피지도 않았으면서 책을 읽으려고 하는 것과 마찬가지인 상태.  ResultSet : 줄여서 rs. " 결과 집합", 즉 DB에서 가져온 테이블 형태의 데이터  ResultSet rs = pstmt.executeQuery();쿼리를 실행하고 rs라는 변수에 담아달라는 것. while(rs.next()) { String id = rs.getString("MEMBER_ID"); String ..

웹 개발 2025.04.09

네이버 로그인 API 적용 시 MEMBER_ID가 NULL인 경우

네이버 로그인 API를 적용시키다보면 아이디와 비밀번호가 NULL이 나오는 경우가 있다.왜냐면 네이버 로그인 API에서는 회원 ID와 PWD 정보를 제공해주지 않기 때문.MEMBER_ID와 MEMBER_PASSWORD는 NOT NULL 속성을 가지기 때문에 에러가 날 수 밖에 없다.  이거는 아이디랑 비밀번호 랜덤 생성해서 네이버 로그인을 시켰는데 내 정보란에 들어가니 세션에 아이디, 세션번호, 관리자 여부가 null로 나오는 상황. 이렇게 로그인 서블릿이랑 세션 저장할 값 맞춰주면 네이버 로그인한 사용자도 정보란을 이용할 수 있을거라 생각했는데 로그인 후 메인으로 나올 때부터 null 값을 갖고 나오고 있다.  그래서 를 상단에 추가함.구글링 해보니 JSP를 기준으로 세션은 page 디렉티브의 sess..

웹 개발 2025.04.08

LIMIT ?, ?와 LIMIT ? OFFSET ? 차이

SQL에서 페이징할 때 자주 쓰는 두 가지 방식!비슷해 보이지만 표현만 다르고 의미는 같다.  1. LIMIT ?, ? SELECT * FROM table_nameLIMIT 시작인덱스, 개수;  첫 번째 ? → 몇 번째 행부터 시작할지 (0부터 시작)두 번째 ? → 가져올 행의 개수  OFFSET ? LIMIT ?SELECT * FROM table_nameLIMIT 시작인덱스, 개수;  OFFSET → 건너뛸 행의 수 (0부터 시작)LIMIT → 가져올 행의 개수 LIMIT ?, ?은 MYSQL 전용 스타일이고, 가독성 중요하거나 PostgreSQL도 고려 중이면 OFFSET ? LIMIT ? 이 낫다.

IT/DB 2025.04.03

이메일 API 사용하기

프로젝트를 진행하면서 아이디/비밀번호 찾기 할 시 휴대전화 / 이메일 둘 중 하나를 선택하여 본인인증하도록 설계했다.그래서 오늘은 프로젝트에 이메일 API를 적용하면서 차근차근 적어보려고 한다. 생각한 인증 절차는1. 사용자가 이메일로 인증을 클릭 >> 클릭에 따라 휴대전화 입력(기본) >> 이메일 입력으로 바뀜2. 사용자가 생년월일, 이메일을 입력하고 인증번호 전송 버튼 클릭3. 생년월일, 이메일이 둘 다 일치하는 회원이 DB에 존재하는지 확인4. 만약 존재한다면 서버에서 세션에 해당 회원의 아이디 저장5. 6자리 인증번호를 랜덤으로 생성하여 이메일로 발송하고 인증번호도 세션에 저장6. 사용자가 인증번호를 입력하고 확인 버튼 클릭7. 세션에 저장된 인증번호와 사용자가 입력한 인증번호가 동일한지 확인8...

웹 개발 2025.04.02

User Flow 작성

중간 프로젝트를 위해 작성한 User Flow.. 2월 단기 프로젝트 하면서 만들어봤다고 좀 쉽게 쉽게 만든 것 같다. 작성한 유저 플로우. 상품이나 리뷰, 게시판 보는 거 외에는 다 웬만하면 로그인(회원가입) 한 회원만 볼 수 있도록 설계하였다.근데 생각해보니 네이버 카페 같은 경우도 다 가입한 사람만 볼 수 있도록 하는데 최종 프로젝트 때 게시판 정도는 로그인한 사람만 보게 바꿔도 괜찮을 것 같다는 생각이 든다. 타켓 사이트 계속 찾아보기. 그리고 아래는 지금까지 구현한 회원 기능만 잘라낸 것.관리자까지 설계는 해놨지만 너무 규모가 커서 중간 프로젝트에는 회원 기능만 구현했다.요즘은 자신이 구현한 부분만 보여주는 것이 트렌드라길래 회원만 잘라냄.

웹 개발 2025.04.01

Servlet 코드가 없으면 로그인 기능이 작동할 수 없는가?

>> YES.  서블릿 또는 그에 준하는 서버측 처리 코드가 있어야 동작할 수 있다. 왜냐하면 로그인은 단순히 입력값만 받는 게 아니기 때문에.로그인은 아래와 같은 작업이 필요하다.클라이언트에서 사용자 입력 (아이디/비밀번호 등) 전송서버가 DB에서 사용자 정보 조회입력값과 DB값 비교 → 일치 여부 확인일치하면 세션 저장, 아니면 에러 처리로그인 성공 후 다른 페이지로 redirect이 전체 흐름을 서블릿 또는 컨트롤러가 담당한다. 그렇기 때문에 서블릿이 없을 땐 로그인 불가!DB와 통신하거나 로그인/회원가입 같은 서버 로직이 있을 때는 반드시 서블릿이 존재해야 해당 기능이 작동할 수 있다.

웹 개발 2025.03.31

Servlet과 AJAX의 관계

1. Servlet : 자바로 작성된 서버 프로그램.  브라우저에서 보내주는 요청을 받아서 처리하고, 다시 응답을 보내준다.---> 서버쪽 기술에 해당 2. AJAX : JS를 통해 페이지 전체를 새로고침하지 않아도 서버에 요청을 보내고 응답을 받을 수 있는 기술을 뜻함.---> 클라이언트쪽 기술에 해당Servlet과 AJAX의 흐름AJAX가 요청을 보내면 (요청)Servlet이 받아서 처리하고 (처리)결과를 다시 AJAX에게 전달 (응답)■ 비동기 방식 : 사용자가 버튼을 눌러 서버에 정보를 요청했을 떄, 페이지 전체를 새로고침하지 않고, 그동안 다른 작업도 가능하게 만드는 방식.□ 로그인 시, 댓글 작성, 좋아요 누르기 등에 사용한다.□ 사용자 UI가 좋아지고, 필요한 데이터만 받고 새로고침은 하지 ..

웹 개발 2025.03.31

JPA

JPA는 아직 배우지 않았지만 POJO 예시 중에 JPA라는 게 있고, 많이 들어본 단어라서 궁금한 마음에 찾아보았다. [ JPA ]: 자바 객체와 DB를 자동으로 연결해주는 기술 (객체를 테이블처럼 사용) SpringBoot에서 쓰이는 @Entity도 JPA 기술이다. 즉, Entity는 테이블과 매칭되는 클래스인거고, DTO는 데이터 전달을 위한 객체!DTO와 Entity의 차이가 뭔지 헷갈렸는데 궁금증 해결 완료..

웹 개발 2025.03.30