분류 전체보기 133

[SpringBoot] Security - 회원가입 DB 인증

회원 가입하기 회원가입 → DB저장 → 인증 스프링 시큐리티에선 1. 하나의 계정에 복수개의 권한 부여 가능. 즉! 계정:권한 => 1:N 관계 2. DB 저장시 password 는 반드시 ‘암호화’ 해서 저장되어야 한다 a. 암호화는 스프링 시큐리티의 PasswordEncoder 사용 3. 인증을 위해 DB 조회시 필요한 ‘동작’들이 제공되어야 한다. * DB 테이블 작성 [회원계정] 1:n [권한] ERD 폴더와 sql 생성 * UserDTO 생성 * DummyData 만들기 * 로그인 폼에 회원가입 폼 링크추가 loginForm.jsp * /join 핸들러 추가 IndexController.java @GetMapping("/join") public String join() { return "join..

Spring 2022.05.16

[SpringBoot] Security

Authentication (인증) / Authorization (인가) 인증(Authentication) : 자신을 증명 - 내가 (스스로) 자신을 증명할 만한 자료를 제시 하는 것. - 시스템 접근 시, 등록된 사용자인지 여부를 확인하는 것 - 로그인 인가(Authorization) : 권한 부여 - 접근 후, 인증된 사용자에게 권한을 부여하는 것 - 남에 의해서 ‘자격’ 이 부여된것. - 권한에따라 사용 가능한 기능이 제한됨 - 사용자 등급(ex: 일반/VIP/관리자) 서버로 들어오는 request를 낚아챌 수단이 필요하다. ‘request’ 를 처리하기 전에 보안체크부터 해야 한다. 검문소 역할을 해야 하는데 스프링 시큐리티는 서블릿 프로그래밍의 filter 객체를 사용하여 이를 구현한다. fil..

Spring 2022.05.16

[SpringBoot] MyBatis

XML과 애너테이션(annotation)을 사용하여 ‘저장 프로시저’나 ‘SQL 문’으로 ‘객체’들을 연결(매핑)시킨다. (SQL Mapper 라고도 한다) ** 과거 아파치재단 에서 iBATIS로 개발했으나, 그 개발진들이 ‘구글코드’로 옮기면서 MyBatis로 이름을 바꾸어 계속 업데이트중. (iBATIS 는 중단됨) 더 많이 코드를 줄일수 있고, 자바 코드가 아닌 ‘XML매퍼파일’ 을 통해서 DB에 접근 가능. 매우 간단 XML매퍼파일에 쿼리(SQL) 만 설정해두어도 알아서 동작 (기존의 Connection 만들던 방식, JdbcTemplate 을 사용하던 방식 다 필요 없어짐) Mybatis 프레임워크 자바코드(** DAO) XML 매퍼파일, SQL 세팅 -> DB DAO는 인터페이스로만 주어지고..

Spring 2022.05.13

[Spring Boot] Validation

폼 데이터 검증 (Parameter Validation) 신뢰성 있는 웹 어플리케이션 작성을 위해 폼데이터 검증 필수 기본적으로 폼데이터는 2단계 걸쳐 검증해주어야 한다. 1단계: ‘클라이언트’ 에서 submit 하기 전에 검증 : (JavaScript) 사용 2단계: ‘서버’ 에서도 검증 : Spring, JSP 등 사용... WriteDTO 클래스 가져오기 직전 단원에서 작성한 DTO 클래스와 패키지를 복사해옵시다. 생성자, getter, setter 의 출력코드 살려둡니다. 일단 기본적인 form 동작 작성 컨트롤러 생성 package com.lec.spring.controller; import java.util.List; import javax.validation.Valid; import org...

Spring 2022.05.12

[SpringBoot] Request Parameter

request parameter를 받는 다양한 방법 스프링에서 제공하는 다양한 방법들에 대해 배웁니다. 1. request parameter 처리 2. GET 방식 / POST 방식 처리 3. @RequestParam 4. 커맨드 객체 5. @ModelAttribute 6. @PathVariable 7. redirect: forward: 프로젝트 생성 Bt011_RequestParam Starter : SpringWeb, DevTools, Lombok * HomeController 작성 package com.lec.spring; import java.util.Map; import javax.servlet.http.HttpServletRequest; import org.springframework.ster..

Spring 2022.05.12

[SpringBoot] RequestMapping

@Controller ~ @RequestMapping RequestMapping 웹 어플리케이션은 원하는 형태의 request URL을 받아서 그 URL을 처리하는 동작(handler)를 찾아서 (mapping) 수행하고 원하는 ‘뷰’ 로 response 해주기 용어: 메소드? 핸들러? 컨트롤러? @Controller 클래스 안의 @RequestMapping 등으로 지정된 메소드를 핸들러(Handler) 라고도 함. 그러나, 보통 혼용되어 이야기 됨. 컨트롤러 이야기 할때 메소드, 핸들러, 컨트롤러… ← 대체로 같은것을 지칭하는 것 * 기본적인 Controller 클래스 제작 흐름 @Controller를 이용한 클래스 생성 ↓ 요청 경로 지정 @RequestMapping, @GetMapping …. - ..

Spring 2022.05.12

[SpringBoot] MVC

스프링부트는 웹루트가 (마치) 3개인 것처럼 동작한다. /static /templates /webapp static : 정적 웹소스 , JS, css, html, 이미지 ... 템플릿 : Thymeleaf, Mustache ... applicaiotn.properties : 스프링부트 설정파일 webapp(웹루트) : JSP들... pom.xml : 메이븐 설정파일 src/main/resources 의 static 폴더 이미지, JS, css, html ← 이런 파일들을 위한 홈 디렉토리 static (정적) 이다 함은 서버입장에서 별도의 프로세스 없이 그대로 response만 하는 파일들 스프링 부트에선 홈 디렉토리가 3개라 보시면 됨 src/main/resource/static ← 정적인 파일들 sr..

Spring 2022.05.12

[SpringBoot] Dependency Injection 의존주입

스프링 빈 (bean) 스프링은 경량 컨테이너로서 객체 생성, 소멸과 같은 Life Cycle을 관리하며 스프링 컨테이너로부터 필요한 객체를 얻을 수 있다. 스프링 컨테이너에 의해서 자바 객체가 만들어지게 되면 이 객체를 스프링은 스프링 빈(Bean)이라고 부른다. 스프링부트에서 bean 생성 & 사용 스프링부트의 경우 @Component, @Service, @Controller, @Repository, @Bean, @Configuration 등으로 필요한 빈들을 등록하고 필요한 곳에서 @Autowired를 통해 주입받아 사용하는 것이 일반적이다. Dependency Injection (의존 주입) 필요한 객체는 누가 만드나? 방법1] 직접 new 생성 방법2] 외부에서 만들어서 주입 설계 변경이 발생하..

Spring 2022.05.12

[Spring] Spring이란

* 스프링의 핵심 - 스프링은 자바 언어 기반의 프레임워크 - 자바 언어의 가장 큰 특징 - 객체 지향 언어 - 스프링은 객체 지향 언어가 가진 강력한 특징을 살려내는 프레임워크 - 스프링은 좋은 객체 지향 애플리케이션을 개발할 수 있도록 도와주는 프레임워크 * 스프링 프레임워크 특징 1. 경량 컨테이너 a. 자바 객체를 담고 있는 컨테이너 2. DI (Dependency Injection: 의존주입) 지원 a. 설정파일로 객체 의존 관계 설정 및 생성. 3. AOP (Aspect Orientec Programming) 지원 a. 트랜잭션, 로깅, 보안 등 공통기능을 핵심기능에서 분리하여 적용 가능 4. IoC (Inversion Of Control) 제어반전 지원 5. POJO (Plain Old Ja..

Spring 2022.05.11

[JSP] Comment

* 게시판 댓글 기능 (JSON + AJAX 사용) JSON resopnse + AJAX 를 사용한 댓글 * 구현할 댓글 기능 - 댓글 목록 - 댓글 작성 - 댓글 삭제 : 삭제는 한번 confirm 하고 진행 * ERD, DDL 작성 * 라이브러리 준비 * select 쿼리문 준비 # 특정글 의 (댓글 + 사용자) 정보 필요한 쿼리문 작성 D.java // ★ 댓글 // 댓글과 작성자 SELECT public static final String SQL_COMMENT_SELECT = "SELECT c.uid \"uid\", c.content \"content\", c.regdate \"regdate\",\r\n" + "u.uid \"user_uid\", u.username \"user_username\"..

JSP 2022.04.13