web

지난 시간에 어떤 URI로 요청이 들어와도 무조건 login 페이지가 뜨는 마법을 겪고 글을 끝냈습니다. 이 매직에서 벗어나려면 SecurityConfig 클래스를 만들어서 configuration 수정을 해줘야 합니다. 이번 시간에는 그 방법에 대해서 다뤄보도록 하겠습니다. 로그인 페이지 사용하지 않기 @Configuration 어노테이션은 작성하지 않으셔도 됩니다. 일반적으로 패키지랑 이름을 제대로 지켜주면 스프링이 알아서 이 클래스 파일이 Config 파일이구나~ 하고 인지합니다. 간혹 인식하지 못하는 경우에만 추가해주시면 되겠습니다. 우리를 괴롭히는 로그인 페이지를 사용하지 않을거라면 위 두 가지 방식으로 제어할 수 있습니다. 첫 번째는 모든 요청에 대해서 권한을 허용하는 방법이고 두 번째는 로그..
간단하게 사용자 이름(닉네임)과 비밀번호 정보를 가지고 회원가입 기능을 구현해보겠습니다. 저번에 포스팅하다가 끊긴 게시판 만들기와 같은 프로젝트입니다. 프론트엔드는 이미 따로 구성해놓으셨다는 가정하에 진행하겠습니다. 저는 디자인을 잘 몰라서.. 프론트엔드 부분을 대충 구성해놓았기에 공유해드리기도 민망해서 그렇습니다. 제일 먼저 spring security를 사용하려면 dependency를 추가해줘야겠죠. build.gradle에 다음과 같은 의존성을 추가해줍니다. implementation 'org.springframework.boot:spring-boot-starter-security' 자 기본 설정(?)은 완료가 되었으니 실질적인 코드 작성을 해보겠습니다. 일단 이번에도 JPA를 가지고 만들게요. U..
Gradle 프로젝트 의존관계를 추가해줄때 implementation으로도 추가가 가능하고 compile로도 추가가 가능합니다. 자꾸 혼용해서 쓰다보니 무슨 차이점이 있는지 궁금해서 찾아보게 되었습니다. 한 줄 요약 implementation > compile compile은 왜 사라졌는가? 최신 버전 Gradle 공식 문서에서는 compile 옵션에 대해서 언급조차 하지 않습니다. 과거 문서를 찾아본 결과를 토대로 설명드리겠습니다. A
스프링 부트에서 사용하는 h2 데이터베이스 기본 설정은 인메모리 형식으로 저장되게 되어있습니다. 인메모리의 경우 데이터베이스가 꺼졌다가 켜지면 데이터가 다 사라진다는 특징이 있습니다. spring.datasource.url=jdbc:h2:mem:testdb spring.datasource.driverClassName=org.h2.Driver spring.datasource.username=sa spring.datasource.password=password spring.jpa.database-platform=org.hibernate.dialect.H2Dialect application.properties에 보통 이런 식으로 작성하실 텐데요. 디스크에 저장하는 방식도 간단합니다. spring.datasou..
사용자가 메인 페이지에서 글쓰기 버튼을 누르면 글 작성 페이지로 넘어가고 작성한 내용을 mysql 데이터베이스에 저장해봅시다. mysql 및 기본 프로젝트 설정은 이미 준비되어있다는 가정하에 진행합니다. 오늘의 포스팅은 JPA로 테이블 매핑만 해보도록 하겠습니다. dependency dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation 'org.springframework.boot:spring-boot-starter-web' implementation ..
Spring Initializr를 이용해서 프로젝트를 만들면 프로젝트명Application이 자동으로 생성됩니다. 메서드 선언부에는 main 메서드 하나만 선언되어 있고 SpringApplication.run 메서드를 호출해서 웹 애플리케이션을 실행합니다. 그 위의 @SpringBootApplication 가 오늘 살펴볼 어노테이션입니다. @SpringBootApplication은 크게 @SpringBootConfiguration 과 @EnableAutoConfiguration 그리고 @ComponentScan 이 세 가지로 이루어져 있습니다. @ComponentScan @ComponentScan은 @component 어노테이션 및 @Service, @Repository, @Controller 등의 어노..
· web
오늘은 TCP/IP 계층에서 3계층을 담당중인 전송 계층 = 트랜스포트 계층에 대해서 다뤄보겠습니다. 인터넷 프로토콜 스택의 4계층 애플리케이션 계층 - HTTP, FTP 전송 계층 - TCP, UDP 인터넷 계층 - IP 네트워크 인터페이스 계층 통신 과정(프로토콜 계층별 관점) 통신 과정을 탑다운 방식으로 살펴보겠습니다.(전송 측) 채팅을 한다고 가정하면, 프로그램에서 메시지를 생성하고 소켓 라이브러리를 통해 전송 계층에 전달합니다. 전송 계층에서는 보낼 데이터 + 자신의 정보(TCP)를 더해서 인터넷 계층에 보냅니다. 인터넷 계층인 IP도 자신의 패킷을 생성해서 앞의 데이터에 덧붙입니다. 각 계층마다 정보를 덧붙여서 인터넷으로 전달합니다. TCP/IP 패킷 정보 IP패킷에 TCP 관련 정보 포함 T..
· web
인터넷 인터넷은 컴퓨터들이 서로 통신 가능하도록 하는 거대한 네트워크입니다. 인터넷은 간단하게 설명하면 선(wire)입니다. 컴퓨터와 컴퓨터를 연결하는 거죠. 인터넷 통신 이 연결선을 통해서 컴퓨터끼리 데이터를 주고받는 과정이 인터넷 통신입니다. 라우터나 중간 서버 등을 거쳐가면서 도착지까지 데이터가 이동합니다. IP(Internet Protocol) 인터넷을 이용하여 통신할 때 사용하는 규약 IP주소를 통해서 컴퓨터들이 서로를 찾아내고 통신을 할 수 있습니다. 지정한 주소로 데이터 전달이 용이함 데이터 전달 시 패킷이라는 단위로 데이터를 전달 패킷에는 출발지 IP, 도착지 IP, 데이터 등등의 내용이 포함됩니다. 사람들은 보통 도메인 주소로 특정 서버에 데이터를 요청합니다.(ex, 173.194.121..
· web
자꾸 헷갈리게 되는 동기와 비동기에 대해서 정리해보려고 합니다. Blocking vs Non-Blocking 동기, 비동기 처리 방식을 언급할때 같이 언급되는 용어인 blocking과 non-blocking에 대해 알아보겠습니다. 저는 이 두 가지를 일종의 상태를 설명하는 용어라고 이해하고 있습니다. Blocking의 경우에는 우리가 무엇인가를 호출하고 System call이 완료된 후 리턴하기 까지 계속 wait queue에 들어가 있는 상태를 일컫습니다. 한 마디로 정의하자면 작업 중단된 상태입니다. Non-Blocking은 System call과 관계없이 리턴하기에 queue에 들어갈 필요도 없습니다. 동기식 방식 동기식 방식은 순차적으로 작업을 진행합니다. 순차적이라서 앞의 작업이 끝나지 않으면 ..
오류 발생 경위 spring boot gradle에 h2 dependency를 추가하고 웹으로 db 콘솔 접근할 때 오류가 발생했습니다. 사실.. 저는 간단하게 해결했습니다. 오류에서도 JDBC를 언급하고 있는데요. 제가 당장 jdbc를 사용하지 않기에 따로 추가해주지 않았습니다. 저는 implementation 'org.springframework.boot:spring-boot-starter-jdbc' 를 추가하고 오류를 해결했습니다. 다른 해결법 저와는 다른 이유로 고생하시는 분들을 위해서 다른 해결법도 정리해두겠습니다. application.properties 를 확인한다 보통 localhost:8080/h2-console 에 접속하셔서 확인을 해볼텐데요. application.properties ..
moongomi
'web' 카테고리의 글 목록 (3 Page)