이 전 글에서 body의 값을 가져왔으니 그 값에 해당하는 객체를 만드는 작업을 하겠다. https://resian-programming.tistory.com/53 위 링크에 있는 글에서 data 변수는 Header 중에서도 body의 해당하는 값을 가지고 있다. 이 값을 이용하여 User 객체를 생성할 것인데 스승님께서 구현하신 parseQueryString Method 사용할 예정이다. parseQueryString은 body의 값과 어떤 값으로 split 할 것인지 parseValues Method에 파라미터로 전달하고 parseValues Method는 파라미터의 값을 통해 body의 값이 없을 때의 null 처리와 람다를 이용하여 Map에 Key, Value로 값을 할당하는 역할을 한다. 우선 ..
문제 설명 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 방식: 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, ... 2번 수포자가 찍는 방식: 2, 1, 2, 3, 2, 4, 2, 5, 2, 1, 2, 3, 2, 4, 2, 5, ... 3번 수포자가 찍는 방식: 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, ... 1번 문제부터 마지막 문제까지의 정답이 순서대로 들은 배열 answers가 주어졌을 때, 가장 많은 문제를 맞힌 사람이 누구인지 배열에 담아 return 하도록 solution 함수를 작..
창천향로님의 블로그를 보며 내가 이해한 것을 기반으로 aop를 그려보았다. 실제로는 아직 구현해본 적이 없으므로 미리 작성된 코드를 봤고, 학원 동기와의 토론을 통해 이해한 것이다. Aop? 과거 MSA 기반으로 모듈 설계를 한 적이 있다. 큰 기능을 중점으로 모듈을 나눴는데 예를 들면 한 api에서 캘린더 기능과 TodoList의 기능이 있다고 한다면 캘린더, todoList 그리고 중앙의 연결고리를 해줄 common까지 3개의 모듈로 나뉘게 된다. 즉 하나의 인프라를 기반을 둔 api의 기능을 나누는 것인데 aop는 비즈니스 로직을 기반으로 둔 기능을 나누는 것이다. 말하자면 로그인 기능을 매번 모든 Controller에서 로직으로 처리해야 할 때 이 로그인 기능을 aop로 만들어 분리하는 것으로 코..
전 글의 요구사항은 GET Mapping일 때 상황이었기 때문에 Header에 body가 없었다. 이번에는 HTML의 Get을 Post로 바꾸고 회원가입이 제대로 되는 것까지 진행해볼 예정이다. Http Header의 이미지를 구글에서 찾아보면 Header 부분이 진행된 뒤 한 칸 띄어진 후 body가 있는 것을 확인할 수 있다. BufferedReader.readLine() 을 이용하여 이 부분을 우선 추출해보기로 하겠다. 맨 처음으로 한 것은 'localhost:8080/user/form.html' 에 접근하여 값을 넣고 회원가입을 눌러보았다. 그 후 콘솔 창을 확인했더니 NullPointerException이 확인되었다. 생각해보니 회원가입 버튼을 누르면 나오는 'create.html' 이 없는 상..
코드스쿼드에 다닐 때 was를 직접 구현해보는 과제가 있었다. 그 당시 역량이 부족하여 불가능했지만, 취업 준비를 하며 학원 동기와 함께 진행해보기로 했다. 이번 미션에 해당하는 모든 글은 복습하며 동시에 작성함을 미리 말해둔다. 맨 첫 구현 조건은 Header의 값을 전부 가져온 뒤 요청된 url를 뽑아내 해당 html로 이동하는 것이다. 어제 실습으로 BufferedReader로 InputStream에 있는 정보를 가져올 수 있다는 것은 기억했다. 다만 여기서 고생한 것은 InputStream을 new BufferedReader에 바로 넣어야 하는지 아니면 위에 InputStreamReader를 새로 생성하여 넣어야 하는지에 대한 부분이었고, 이 부분은 각 클래스를 들어가 return Type과 파라..
현재 사전과제 진행 중에 flyway라는 기술을 접하게 되었다. 개념적인 부분은 사전과제 제출 후 다루기로 하고 고생했던 부분부터 적어둘 예정이기에 이번 글은 짧을 예정이다. gradle 기반이기에 build.gradle에서 dependencies 추가 대신 plugins에 id "org.flywaydb.flyway" version "6.0.1"를 추가 후 맨 하단에 flyway 설정을 해주는데 url, user, password 등 필요한 것을 추가한 뒤 gradle을 import 한다. 기본 설정이 끝났다면 IntelliJ Terminal에서 ./gradlew flywayMigrate를 추가하여 DB에 flyway_schema_history tables를 생성한다. 이 기술을 처음 접했을 때 스키마를..
텀블벅 사전 과제 프로젝트 작업 중 QueryDsl이라는 것을 접하게 되었다. jpa에서 Repository를 생성할 때, CrudRepository 혹은 JpaRepository implements 받는다. 객체로 DB를 다루는 JPA 특성상 Entity로 지정된 Class로만 CRUD가 가능한데 내가 하고 싶었던 것은 지정된 Entity가 아닌 DTO로 반환받는 것이었다. DTO로 반환받는 방법 중 그 당시 생각한 방법을 간략하게 나열해보자면 아래와 같다. 1. Entity로 반환받은 뒤 반환된 값으로 DTO를 생성한다. 2. Repository가 아닌 Query문을 작성한다. 3. @Query 어노테이션을 사용한다. 1번은 불필요한 데이터를 호출해야 한다는 점 2번은 Query문을 작성하여 적용해도..
전에 다니던 회사에서 Spring boot와 jsp를 사용하는 API 유지보수를 했다. Spring boot와 Hibernate만 다루던 내가 Mybatis를 배울 좋은 기회였고, Query를 직접 짜며 DB에 관한 관심도 더욱 깊어질 수 있었다. 직접 체험해보고 느낀 점을 적기 전에 간략하게 API에 관해 설명하자면 Spring boot 1.5 이하 버전과 jsp, Maria DB 기반이며 N개의 모듈은 Util 모듈과 연결되어 있다. Spring boot와 jsp의 문제점 - Tomcat 유지보수를 시작한 뒤 제일 먼저 난관에 부딪히게 된 것은 Tomcat의 설정 문제였다. Spring boot은 자체적으로 Tomcat 설정을 제공하는데 JSP만은 제공을 하지 않는다. 이게 무슨 문제가 되는가? 하는..
이력서를 완성하고, 면접 본다고 오랜만에 정리하게 되었다. 코딩 테스트로 Oath 2를 이용한 로그인 시스템을 구현하게 되었는데, 앞으로도 종종 사용할 것 같으니 잊어버리기 전에 정리하기로 하겠다. 흔히 볼 수 있는 Naver, Google 등의 계정으로 특정 웹 혹은 앱에 로그인 하는 것이 Oath 2이다. 그 외에도 API를 가져와 사용할 수 있는 표준 기술이며 구현하기도 까다롭고, 보안상의 문제로 인해 Spring boot 나 API를 제공하는 서버는 SDK를 제공해주니 참고해서 만들면 된다. 참고로 이해 안하고 SDK만 가져다 쓰면 나중에 확장할 때 매우 격하게 삽질할 수 있으니 Oath 2의 구동 방식을 반드시 이해하길 추천한다. 1. Client는 특정 Server에서 제공하는 어떠한 데이터를..
project를 진행하면서 @Autowired와 @Resource, @Inject에 대해 알아보았다. 근데 아무리 생각해도 궁금증이 남아 머리에서 재생되며 튀어나오길래 이야기를 나눠봤다. 주제 @Autowired와 @Resource의 장단점과 왜 spring에서는 @Inject를 대신하는 @Autowired는 제공하는데 @Resource를 대신하는 어노테이션은 없는 것인가? 뭔가 장단점은 모르겠으나 정리해보자면 "@Resource가 @Autowired보다 먼저 나왔다는 것이고 @Resource가 좀 더 무결하다는 느낌이 든다." "@Autowired spring bean에서 같은 type이 있으면 알아서 주입해주지만 동일 type이 두 개가 있으면 Qualifier로 지정해야 주입이 된다." 는 두 가지..
- Total
- Today
- Yesterday
- springboot
- RequestHandler
- HTTP
- Gradle
- body
- spring-boot
- 모듈
- MySQL
- web
- @Autowired
- 개발
- Spring
- header
- homebrew
- JAR
- 인텔리J
- mapping
- graphQL
- 프로그래머스
- 한 입 크기로 잘라먹는 리액트
- Request Handler
- Spring Boot
- 개발일지
- 스터디 회고
- 자바스크립트
- JavaScript
- 멀티모듈
- 일지
- Java
- 회고
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |