본문 바로가기

전체 글

(147)
소개팅 웹 애플리케이션(4)_매칭 기능과 부가 기능 먼저 마이페이지 버튼을 클릭하면 내 정보와 메시지함을 확인할수 있습니다. 회원정보수정 버튼을 클릭하면 내 정보를 수정할수 있습니다. 동영상으로 보시면 다음과 같습니다. 이제 이 소개팅 어플을 가장 핵심 기능인 매칭 기능에 대해서 리뷰해보겠습니다. 만보기 매칭이라는 버튼을 클릭하면 내 위치 좌표에서 반경 10km(만보) 이내에 있는 이성 회원을 한명 매칭합니다. 매칭된후에는 쪽지를 보낼수 있으며 계속해서 매칭을 원하는 경우에는 만보기 매칭버튼을 계속 클릭하면 됩니다. 10km이내에 매칭된 회원이 없을때까지 매칭을 할수 있으며 중복된 매칭은 발생하지 않도록 합니다. QueryDSL을 사용해서 이 기능을 쉽게 구현할수 있었습니다. 이 부분에 대한 코드는 다음과 같습니다. package com.study.boa..
소개팅 웹 애플리케이션(3)_게시판 오늘은 게시판 기능에 대해서 리뷰해보겠습니다. 먼저 첫화면에 글 목록과 어떤 글에 댓글수, 조회수등을 볼수 있고 제목을 클릭하면 그 글로 이동합니다. 글에 대한 댓글을 쓸수 있으며 비밀번호를 설정하고 나중에 댓글을 삭제할때 비밀번호를 입력해서 삭제할수 있습니다. 다시 목록으로 이동해서 글쓰기 버튼을 누르면 게시글을 작성할수 있습니다. 동영상으로 연속해서 보시면 위와 같습니다. 다음글에서는 소개팅 어플의 가장 중요한 매칭기능과 쪽지보내기, 마이페이지등에 대해서 리뷰해 보겠습니다. 감사합니다.
소개팅 웹 애플리케이션(2)_로그인 소개팅 애플리케이션 '그대 만 보기' 의 첫 화면과 회원 가입 부분에 대해서 정리해보겠습니다. index.html 페이지 화면입니다. 이 페이지에 대한 코드입니다. 그대 만 보기 로그인 회원가입 Ajax 함수를 사용해서 api 방식으로 비동기 통신을 하도록 했습니다. 로그인 버튼을 클릭시 Json 데이터 타입을 Post 방식으로 MemberController에서 Url이 /member/login인 매핑된 곳으로 요청을 하게됩니다. @PostMapping("/member/login") public @ResponseBody String login(@RequestBody Member member, HttpServletRequest request){ Member loginMember = memberService..
스프링 예외 처리 체크 예외와 인터페이스 서비스 계층은 순수하게 유지 리포지토리가 던지는 체크 예외를 런타임 예외로 전환해서 서비스계층에 던지면 됨 인터페이스를 도입 인터페이스의 구현체가 체크 예외를 던지려면, 인터페이스 메서드에 먼저 체크예외를 던지는 부분이 선언돼 있어야함 -> 인터페이스가 순수하지 못하고 종속적이게 됨 데이터 접근 예외 직접 만들기 리포지토리에서 아이디가 중복이라 예외를 서비스 계층에 던지면 서비스 계층은 복구를 시도 하려는데 이러면 또 서비스 계층이 특정 기술에 의존하게돼버림 -> 예외를 변환해서 던질것(직접만든 MyDuplicateKeyException) 이렇게 하더라도 개발자가 모든 오류코드에 대해서 일일이 잡아줘야함 그리고 데이터베이스 마다 다름 -> 스프링이 데이터 접근 계층에 대한 수십가지..
소개팅 웹 애플리케이션(1)_설계도 인프런 김영한 강사의 강의를 학습하면서 평소에 만들어보고 싶었던 소개팅 웹 애플리케이션을 만들어가면서 따라가 보았습니다. 확실히 내가 직접 설계를 할때 생각과 고민을 하면서 강의를 따라가보니 강사님이 왜 어떤 포인트에서 강조했는지 깨닫는 부분들이 많았고 이해가 더 잘되었습니다. 실무에 강하신 분이라 실수나 개념 오해가 많은 부분을 잘 짚어주셔서 고민하는 시간을 줄일수 있었습니다. 이 애플리케이션은 Spring MVC 패턴으로 설계하였고 Spring boot 환경에서 JPA를 사용하여 코딩했습니다. 데이터베이스 접근 기술은 Spring data JPA와 QueryDSL을 사용하였고 데이터베이스는 h2 입니다. 오늘부터 이 애플리케이션에 대한 리뷰를 시작해보겠습니다. 애플리케이션의 이름은 '그대 만 보기' ..
자바 예외 이해 예외 계층 Error: 복구 불가능한 시스템 예외(그냥 둬야함) 애플리케이션 로직은 Exception부터 예외로 잡아야함 Exception: 체크 예외 -애플리케이션 로직에서 사용할수 있는 실직적인 최상위 예외 -Exception과 그 하위 예외는 모두 컴파일러가 체크하는 체크예외(단, RuntimeException 제외) RuntimeException: 언체크 예외, 런타임 예외 -컴파일러가 체크하지 않는 언체크 예외 -RuntimeException과 그자식 예외는 모두 언체크 예외 -RuntimeException과 그 하위 언체크 예외를 통상 런타임 예외라고 부름 예외 기본 규칙 1. 예외는 잡아서 처리하거나 던져야 함 2. 예외를 잡거나 던질때 지정한 예외 뿐만 아니라 그 예외의 자식들도 함께 처리..
스프링 데이터 접근 핵심 원리 애플리케이션 서버와 DB 일반적인 사용법 1. 커넥션 연결: 주로 TCP/IP를 사용해서 커넥션을 연결 2. SQL 전달: 커넥션을 통해 DB에 SQL 전달 3. 결과 응답: DB는 SQL을 수행하고 결과를 응답, 애플리케이션 서버는 응답결과를 활용 과거에는 DB를 교체하면 애플리케이션 로직을 다 바꿔야했다(개발자는 모든 DB에 대한 로직을 알아야했음) -> JDBC(Java Database Connectivity) 표준 인터페이스(자바에서 데이터 베이스에 접솔할수 있도록 하는 자바 API) 등장 -> JDBC 드라이버는 Connection(연결), Statement(SQL 전달), ResultSet(결과 응답) 을 추상화하여 DB에 맞도록 구현해서 라이브러리를 제공함 -> 즉 DB에 맞는 드라이버만 갈..
스프링 MVC(2) 검증 정리 메시지, 국제화 하드코딩을 일일이 바꿀려면 번거러움 -> 메시지 프로퍼티로 관리(messages.properties) 나라마다 다른언어로 뿌려줘야함 -> 국제화 타임리프의 메시지 표현식 #{...}을 사용하면 편리하게 스프링 메시지 조회 가능 -> #{label.item} 국제화 -> 스프링이 언어 선택시 Accept-Language 헤더값을 사용 -> messages_en.properties 파일을 만들어서 관리하면 홈페이지 언어 설정에 따라 자동으로 갈아낌 검증(Validation) 컨트롤러의 중요한 역할중 하나는 HTTP 요청이 정상인지 검증하는 것이다. 서버측에서 검증은 필수 th:if="${errors?.containsKey('globalError')}" ?문법: errors가 null일때 Nu..