목록Web/Spring (11)
단의 개발 블로그
JWTJSON Web Token의 약자로 인증을 위한 데이터 형식이다. JSON 형식으로 암호화된 문자열로 구성하여 데이터를 전송한다. 이 문자열은 서버와 클라이언트 간의 인증과 정보 전달에 사용된다. 즉, 클라이언트 - 서버 간 안전한 정보 전달을 위한 인증 권한 부여 메커니즘으로, 토큰 기반 인증 (Token-Based Authentication) 방식에 사용된다. 형식은 헤더, 페이로드, 서명으로 구성된다.JWT 구조빨간색이 헤더, 보라색이 페이로드, 하늘색이 서명이다. HeaderJWT 토큰의 정보를 담고 있는 메타데이터다.사용되는 알고리즘과 토큰의 타입을 정의한다.위 예시에서는 HS256 알고리즘과 JWT 타입으로 지정되어 있다.PayloadJWT 토큰에 실제 정보가 담긴 부분이다.사용자 정보를..
구성 속성이란스프링에는 다음 두 가지 형태의 서로 다른 구성이 존재한다. 아래 두가지 구성은 XML 구성과 자바 구성 모두에서 사용된다. 빈 연결 (Bean wiring): 스프링 애플리케이션 컨텍스트에서 빈으로 생성되는 애플리케이션 컴포넌트 및 상호 간에 주입되는 방법을 선언하는 구성속성 주입 (Property Injection): 스프링 애플리케이션 컨텍스트에서 빈의 속성 값을 설정하는 구성예를 들어 우리가 데이터 베이스 연결할 때 sql문을 지정할 경우가 있었다. datasource 메소드를 빈으로 등록하는 방법이 빈 연결 방법이다.@Beanpublic DataSource dataSource() { return new ...;} 스프링 환경 추상화스프링 환경 추상화는 구성 가능한 속성을 한 곳에서 ..
사용자 등록을 추가한다.controller/RegistrationController@Controller@RequestMapping("/register")@RequiredArgsConstructorpublic class RegistrationController { private final UserRepository userRepository; private final PasswordEncoder passwordEncoder; @GetMapping public String registerForm() { return "registration"; } @PostMapping public String processRegistration(RegistrationForm form) { userRe..
Security란?웹 애플리케이션에서 정보는 귀중한 자산이다. 해커들은 안전하지 않은 애플리케이션에서 정보를 훔쳐간다. 개발자는 애플리케이션에 있는 정보를 보호하는 조치를 취해야 한다. 특히 사용자의 아이디, 패스워드, 계좌 정보 등은 대부분의 서비스에 가장 중요하다. 스프링 애플리케이션은 이러한 보안 설정을 쉽게 사용할 수 있는 기능이 구현되어 있다. 이것을 스프링 시큐리티라고 하는데, gradle에 해당 의존성을 명세에 추가한다.implementation 'org.springframework.boot:spring-boot-starter-security'testImplementation 'org.springframework.security:spring-security-test'해당 설정을 저장한 후, ..
이전에 기술한 데이터베이스 게시글에서 JPA에 대해서 부족한 부분이 있어서 다시 찾아서 정리했다. JPA란JPA는 Java에서 ORM을 기술 표준으로 사용하는 인터페이스의 모음이다. 이 말은 java를 통해 데이터베이스와 같은 영속 계층을 처리함을 의미한다. 즉 자바 코드로 DB와 주고 받고 한다는 뜻이다. 우리가 사용하는 JPA는 RDBMS만 적용되는 규격이고, 인터페이스이기 때문에 Hibernate, Open JPA등이 해당 기술을 구현했는데, 주로 Hibernate를 많이 사용한다. 해당 기술을 사용하면 애플리케이션에서 많이 사용되는 CRUD를 간편하게 처리할 수 있다. 우리가 정의한 Entity를 간단한 메소드 호출로 처리할 수 있다. 또한 네이티브 SQL도 사용할 수 있기 때문에 복잡한 구문이 ..
데이터베이스대부분의 서비스는 서버와 상호작용하여 작동한다. 스프링 서버는 클라이언트에 요청을 받고 어떠한 데이터를 가공해서 처리해서 다시 뷰로 전달한다. 이때 데이터는 저장된 어떠한 것을 사용하는데, 이전에 작업한 식자재를 수기로 입력하는 것이 아닌 데이터베이스 서버와 통신하여 데이터를 불러온다. 주로 사용되는 데이터베이스는 관계형 데이터베이스가 범용적으로 사용된다. 자바에서 해당 데이터베이스와 연결하기 위해선 JDBC와 JPA가 주로 사용된다. 스프링은 이 두가지를 모두 지원한다.스프링 mariadb + jpa스프링은 여러 하위 프로젝트가 다수 구성되어 있다. Spring data 연결 종류는 아래와 같다.Spring data JPA: 관계형 데이터 베이스Spring data MongoDB : 문서형 ..
폼 제출 처리하기Sumbit your taco 버튼을 클릭하면 사용자 에러가 발생한다. 우리가 작성한 HTML에서 태그를 살펴보면 method 속성이 POST로 되어있다. 해당 설정이 되면 브라우저는 데이터를 모아서 요청 경로에 POST 방식으로 전송한다. 그러면 서버에서는 해당 요청과 데이터를 처리하는 컨트롤러 메소드가 있어야 한다. 이전에 작성한 DesignTacoController.java에 새롭게 추가한다....@PostMapping public String processDesign(Taco design) { //post 요청을 처리하는 메소드다. log.info("Processing design: " + design); return "redirect:/orders/curren..
애플리케이션고객이 상품을 구매할 때 선택할 수 있는 내역은 수시로 변경된다. 그렇기 때문에 HTML페이지에 단순히 하드 코딩해서는 안된다. 구매 가능한 상품을 데이터베이스에서 가져와서 고객이 볼 수 있도록 해야한다. 스프링에서는 데이터를 가져오고 보여주는 역할을 컨트롤러가 하고, 브라우저에 보여주는 데이터를 HTML로 나타내는건 뷰가 한다. 고객에게 상품을 보여주기 위해 아래 3개의 클래스를 생성한다.타코 식자재 속성을 정의하는 도메인(domain) 클래스식자재 정보를 가져와서 뷰에 전달하는 스프링 MVC 컨트롤러 클래스식자재 내역을 사용자의 브라우저에 보여주는 뷰 템플릿 도메인 생성타코 식자재를 정의하는 Ingredient 클래스를 생성한다. 해당 클래스는 domain 패키지를 새로 생성해서 그 안에 ..
웹 요청스프링 애플리케이션에 추가할 첫번째 기능은 홈페이지 이다. 홈 페이지는 다음 두가지 파일을 생성하여 처리된다.웹 요청을 처리하는 컨트롤러 클래스처리된 요청을 전달 받아 사용자에게 보여주는 뷰 템플릿스프링은 MVC라고 널리 사용되는 디자인 패턴이 존재한다. 개발 영역을 MVC(Model, View, Controller)로 구분하여 각 역할을 나눠서 코드를 작성한다. 컨트롤러는 웹 요청과 응답을 처리하는 역할을 한다. 컨트롤러는 응답마다 데이터를 채워서 전송해야 할 때도 있는데 이때 Model을 사용하고, 사용자에게 HTML를 전달하는데 이때 요청을 View로 전달한다. src/main/java 아래에 각자 생성한 projectname 패키지에서 new -> package를 클릭하고 controlle..
프로젝트생성인텔리제이 file - new - project 클릭왼쪽 Spring initiallizr 클릭 - Name : 프로젝트 명 입력, 나머지는 각자 해당 사항에 맞게 설정초기 라이브러리는 lombok, dev tools, thymeleaf, spring web으로 설정 후 create 클릭다음과 같이 폴더와 파일이 만들어진다. 프로젝트 구조폴더 및 파일설명src/main/java애플리케이션 소스 코드가 위치하는 곳src/test/java테스트 코드가 위치하는 곳src/main/resources리소스 파일이 위치하는 곳.gradlegradle이 사용하는 폴더, task로 생성된 파일이 저장되며 편집하는 일이 거의 없음.idea인텔리제이 구성 관련 디렉토리 gradlegradle이 사용하는 폴더로 ..