공부 (113) 썸네일형 리스트형 23.11.09 어제에 이어 로그인/회원가입 페이지 구현 코드를 하나하나 뜯어보면서 어떻게 작동되는지 알아보자 오늘은 어제 필터단에서 이해 되지 않았던 부분들에 대해 생각하다가 내가 핵심을 놓치고 있었다는 걸 알았다. JWT 토큰이 발행되는 시점은 로그인이 완료된 시점이다. 따라서 JWT 토큰이 유효하다면(시크릿 키와 일치, 만료기한, 적절한 형태) 비밀번호를 체크할 필요가 없다. 그 이유는 JWT 토큰이 발급된 사용자는 이미 "로그인 된" 사용자 이기때문. 개념적으로 알고 있었는데 그걸 잊고 있었다. 아무튼 앞으로 JWT 인증은 로그인(사용자 이름과 비밀번호)인증이 아니라 토큰의 유효성을 인증한다고 생각하면 된다. 어제에 이어 4번부터 다시 보자. 개선된 회원가입/로그인 방식의 개선방향을 간략하게 따져보자 1. DB에.. 23.11.08 큰일이다. 너무 어렵다! 정말 너무 어려워서 오늘은 반드시 오늘 배운 내용을 정리를 잘 하고 넘어가야겠다. 우선 오늘은 로그인/회원가입을 하는 프로젝트를 어떻게 잘 구현하는지에 대해 배웠다. 기존에 하던 로그인 방식은 DB에 아이디와 비밀번호를 저장하고, 클라이언트로부터 로그인 요청이 들어오면 DB에서 클라이언트에서 받아온 아이디와 비밀번호가 일치하면 로그인이 된다. 이렇게 로그인 된 상태에서 다른 작업을 수행한다~ 이런 간단한 방식으로 구현이 됐었다. 개선된 회원가입/로그인 방식의 개선방향을 간략하게 따져보자 1. DB에 비밀번호가 그대로 저장된다면 보안에 취약하다. DB에는 비밀번호가 평문이 아닌, 암호화된 형태로 존재해야 한다. 외부의 공격으로 부터 비밀번호를 지켜야 하고, 추가적으로 DB에 접근하.. 23.11.07 스프링 숙련주차 돌입 Bean에 대해배웠다. 정리해보자. 같은 속성의 Bean이 2개이상일때 어떻게 관리해야 하는가? 인터페이스 Food를 구현하고 있는 Chicken 클래스와 Pizza 클래가 있다. 이때 Chicekn Pizza를 둘 다 @Component로 등록하여 관리하고 싶을 때 Food 객체를 @Autowired 어노테이션을 사용하여 관리할 때 Chicken의 빈으로 등록할지, Pizza의 빈으로 등록할지 결정을 해주어야 한다 이때 등장하는 것이 @Primary어노테이션과 @Qualifier("~")이다. @Primary 어노테이션은 Food 인터페이스 @Autowired를 통해 관리할때 가장 우선순위가 높게 등록이 된다. @Qualifier("~")은 ~에 해당할 때 해당 클래스를 Bean으.. 23.11.06(Springboot_CRUD) 스프링 개인 과제 CRUD 게시판 프로젝트 마무리! 기본적으로 3Layer-Archetecture로 Controller-Service-Repository 구조로 설계했다. Restful API 설계를 위해 Controller 클래스에서는 각 기능에 맞게 API 메서드를 사용했다. 게시글 작성에는 Post 메서드, 게시글조회 /전체 게시글 목록 조회 에는 Get 메서드, 게시글 수정에는 Put 메서드, 게시글 삭제에는 Delete 메서드를 사용했다. Repository 는 jdbcTemplate을 이용해서 사용했다. 여기서 조금 아쉬운게 강의를 두시간만 더 들었다면 jdbc가 아닌 JPA를 이용하여 설계 했을 텐데 jdbcTemplate 이용해서 설계를 하려니 조금 복잡하고 코드도 어려웠다. 아무튼 DB에.. 23.11.03 스프링 첫 개인과제 발제. 기본적인 CRUD이다. 문제를 보자마자 어떻게 설계를 해야할까? 먼저 떠올랐다. 그전 팀플을 하면서 다른 팀원들이 설계에 공을 들이는 것을 보고 이번에도 설계에 공을 들였다. 필수 구현과제는 다음과 같다. [ ] 게시글 작성 기능 제목, 작성자명, 비밀번호, 작성 내용, 작성일을 저장할 수 있습니다. 저장된 게시글의 정보를 반환 받아 확인할 수 있습니다. 반환 받은 게시글의 정보에 비밀번호는 제외 되어있습니다. [ ] 선택한 게시글 조회 기능 선택한 게시글의 정보를 조회할 수 있습니다. 반환 받은 게시글의 정보에 비밀번호는 제외 되어있습니다. [ ] 게시글 목록 조회 기능 등록된 게시글 전체를 조회할 수 있습니다. 반환 받은 게시글의 정보에 비밀번호는 제외 되어있습니다. 조회된.. 23.11.02 어제 숙제 관련 질문을 했다. 숙제의 4번 문제는 3개의 테이블을 조인 한 후 특정 테이블의 조건에 맞춰 SELECT해서 보여줘라. 였는데 이 숙제를 하면서 들었던 의문 중 하나가 테이블을 조인한 결과값을 새로운 테이블의 형태로 갖는건은 불가능한가? 였다. 자바에서 사용했던 방식인 A리스트에서 1조건을 만족하는 인덱스값만 뽑아와 새로운 B리스트에 넣는 방식처럼. 이런 식으로 작업을 하면 B리스트에서 모든 작업을 할 수 있기에 너무 편했다. 위의 작동방식 A, B, C 테이블의 JOIN한 결과값을 새로운 테이블로 만들어서 볼 수는 없냐고 질문했다. 하지만 그것은 불가능하다고 한다. JOIN된 값은 그저 조회만 가능할 뿐 수정이나 삭제등이 불가능하다고 했다. 하지만 여러 테이블을 JOIN해서 할경우 ENTI.. 23.11.01 스프링 1주차 강의를 완강했다. 오늘의 본격적인 수업 내용은 클라이언트가 서버에게 요구할때 방식에 대해, 그리고 요청된 방식에 맞게 요청을 반환하는 방식에 대해 주로 배웠다. 또한 웹 코딩은 DB와 함께 하기에 DB를 어떻게 다루는지도 같이 배웠다. 오늘 배운 양이 조금 많지만 그래도 천천히 정리해보자. 지난 개인과제/팀프로젝트를 통해 우리는 MVC 모델을 사용하고/공부했다. 하지만 내생각에 기존의 쓰임만큼 정확히 분리된 역할을 하지 않았다. 드디어 오늘 SpringMVC를 배우면서 내가 개념도 모르고 추상적으로만 알고있던 MVC에 대해 배우고, 실습했다. MVC에 대해 알아보자. MVC란 Model, View, Controller로 이루어진 디자인 패턴이다. 각각의 역할을 분리한 정형화된 패턴이라 할 .. 23.10.31 오늘부터 스프링 강의의 시작! 처음 강의를 받고 강의를 3시간 정도 들었는데 당최 이게 무엇인지... 이해를 하기가 너무 어려웠다. 우선 스프링강의를 듣고 있지만, 스프링이 뭔지를 잘 이해하지 못했다. 그리고 서버와 클라이언트 등 내게 생소한 말들이 너무 많이 오늘은 키워드들을 먼저 정의하고 정리하려고 한다. 내일부터 오늘 배운 키워드들을 기반으로 더 익숙하게 공부를 해봐야지! 우선 스프링에 대해 알아보자. 스프링은 " 엔터프라이즈용 Java 애플리케이션 개발을 편하게 할 수 있게 해주는 오픈소스 경량급 애플리케이션 프레임워크" 처음부터 쉽지 않다. 생소한 단어들을 쪼개서 해석해보자! 엔터프라이즈용 이란 말은 기업에서 사용하는 비즈니스용 로직을 구현하기 위한 서비스를 제공한다!라는 말이다. 즉 스프링이란.. 호텔 예약 프로그램 자바 팀프로젝트로 진행했던 호텔 관리 프로그램을 완성했다. 어떻게 진행됐고, 어떻게 구현됐는지에 대해 기록하는 글. 프로그램 요구사항은 다음과 같다. 호텔은 여러 객실, 보유 자산을 가지고 있다. 객실은 객실 당 하루에 한 사람만 예약이 가능하다. 객실은 크기, 숙박비를 가진다. 예약은 객실, 고객의 이름, 고객의 전화번호, 예약 날짜를 가지고 있다. 전화 번호 제한(XXX-XXXX-XXXX) 정규 표현식 (선택) 예약 날짜 **** 날짜는 ISO 8601 형식으로 조합된 UTC 날짜 및 시간 예) 2016-10-27T17:13:40+00:00 고객은 이름, 전화번호, 소지금을 가진다. 고객 소지금보다 비싼 방은 예약 불가 호텔은 모든 예약 목록을 조회 할 수 있다. 고객은 자신의 예약 목록을 조회 할 .. 23.10.27 팀플을 완료했다. 오늘은 팀플을 오전에 마무리 하고 시간이남는 시간을 프로그래머스 문제를 풀었다. 이번주 팀플에 신경을 쓰고 깃에 정신력이 너무 갉혔는데 프로그래머스 문제를 푸는것은 그래도 재밌게 공부했다. 다음주부터는 본격적인 spring 수업 시작이니까 월요일부턴 spring 인강을 예습해야겠다. 오늘은 그냥 알고리즘 공부 했음!! 이전 1 ··· 6 7 8 9 10 11 12 다음