본문 바로가기

Programming/Framework

(27)
DAY 156. Spring 회원 가입 기능 01. MemberController.java - 서비스에게 member를 save() 하도록 한다. @GetMapping("/member/enroll") public String enroll() { log.info("회원 가입 페이지 요청"); return "member/enroll"; } @PostMapping("/member/enroll") public ModelAndView enroll(ModelAndView model, @ModelAttribute Member member) { log.info(member.toString()); int result = service.save(member); if(result > 0) { model.addObject("msg", "회원 가입이 정상적으로 완료되었습..
DAY 155. Spring 로그인 기능 1. HttpSession과 Model 객체를 활용한 방식 ▶ 로그인 처리 1) Model - 컨트롤러가 비즈니스 로직을 처리하고 만들어진 데이터를 Dispatcher Servlet에게 전달하는데 그 데이터를 Model이라고 부른다. - 컨트롤러에서 데이터를 View로 전달하고자 할 때 사용하는 객체이다. - 전달하고자 하는 데이터를 맵(key, value)로 형태로 담을 수 있다. (addAttribute() 활용) - Model 객체의 scope는 Request(하나의 요청이 완료될 때 까지만 유지되는 영역)이다. 01. MemberServiceImpl.java @Service public class MemberServiceImpl implements MemberService{ @Autowired p..
DAY 154. Spring 암호화 00. 메이븐 레파지토리에서 "spring security" 검색 모두 5.6.1 버전으로 3개를 pom.xml 파일에 추가한다. Alt + F5로 메이븐 업데이트 하고, Pakage Explorer에 Maven Dependencies 보면 이렇게 확인할 수 있다. 01. 스프링에서 제공하는 암호화 모듈 사용하기 https://ko.wikipedia.org/wiki/Bcrypt bcrypt - 위키백과, 우리 모두의 백과사전 bcrypt 파일 암호화 유틸리티에 대해서는 블로피시 문서를 참고하십시오. bcypt는 블로피시 암호에 기반을 둔 암호화 해시 함수로서 Niels Provos와 David Mazières가 설계하였으며 1999년 USENIX에서 발표되 ko.wikipedia.org ** salt :..
DAY 153. Spring MVC 패턴 - 회원 조회 Mapper Interface 방식으로 회원을 조회해보자. - MyBatis 3.0부터 지원하는 기능이다. 00. MemberDao.java -> MemberMapper.java 로 이름 변경 앞으로 dao를 mapper라고 부를 것이다. @Mapper public interface MemberMapper { Member findMemberById(@Param("id) String id); } @Mapper 어노테이션을 붙이고 인터페이스 이름도 MemberMapper로 변경! 01. mybatis-context.xml 추가 02. MemberServiceImpl.java @Service public class MemberServiceImpl implements MemberService{ //@Autowi..
Day 151. Spring MVC - 프로젝트 만들기 개요 00. Spring MVC - 클라이언트 화면을 표현하기 위한 View와 서비스를 수행하기 위한 개발 로직을 나누는 패턴이다. - Model, View, Controller 사이의 의존 관계를 DI 컨테이너에서 관리하여 웹 애플리케이션을 쉽게 구현, 개발할 수 있다. ※ Spring MVC 요청 처리 과정 클라이언트(웹 브라우저, 사용자)에서 요청(Request)을 보낸다. Dispatcher Servlet이 앞단에서 모든 요청을 받는다. => 프론트 컨트롤러 패턴이 적용되어있다. 이 때, 해당하는 요청이 어느 Controller가 처리해야 할지 모른다 Handler Mapping 객체한테 "이 요청은 어느 Controller가 처리하면 돼?" 라고 묻고 ""XXX Controller에서 처리하면 돼" ..
DAY 150. Spring Annotation Annotation - JDK5부터 추가된 기능으로 자바 코드에 추가적인 정보를 제공하는 메타데이터이다. - 비즈니스 로직에 영향을 주지는 않지만, 컴파일 과정에서 유효성 체크, 코드를 어떻게 컴파일하고 처리할지 알려주는 정보를 제공한다. - 어노테이션을 클래스, 메소드, 변수, 매개변수 등에 추가할 수 있다. 어노테이션으로 Spring AOP 구현 방식 테스트를 진행하는 실습을 해보자. - 어노테이션 기반이여도 Aspect 역할하는 클래스는 Bean으로 등록되어야 한다. - AspectJ 어노테이션을 사용한 Aspect 적용을 위한 프록시 설정 (어노테이션 기반으로 AOP를 적용할 수 있도록 활성화 하는 태그) - XML 설정 파일에 다음과 같이 설정한다. - autoporxy 설정을 추가하면, 클래스..
DAY 149. Spring AOP(Aspect Oridented Programming) Spring AOP(Aspect Oridented Programming) 관점 지향 프로그래밍 - 일반적으로 사용하는 클래스(Service, Dao) 에서 중복되는 공통 코드 부분(commit, rollback, log, security 처리) 을 별도의 영역으로 분리하고 - 코드가 실행되기 전이나 이 후 시점에 해당 코드를 붙여 넣음으로써 소스 코드의 중복을 줄이고, 필요할 때마다 가져다 사용할 수 있게 객체화하는 기술 - 한 애플리케이션의 여러 서비스에 걸쳐져 있는 기능 (= Corss-cutting Concern : 횡단 관점, 횡단 관심사) 를 분리하는 기능이다. - 궁극적으로 결합도를 낮추는 데 목적과 의의가 있다. - 개발자는 서비스에 집중할 수 있도록 한다. 동작 구조 & 용어 ▶ Aspec..
DAY 148. Spring DI - Annotation Spring DI - Annotation @Annotation 방식 xml 파일에는 구동시킬 필수 요소만 작성하고 소스코드에 Annotation으로 표시하여 구동하는 방식 (필수 요소 = ) ▶ @Annotation 종류 - Bean 등록 시 사용 @Component 객체(컴포넌트)를 나타내는 일반적인 타입으로 태그와 동일한 역할 내가 으로 만들고 싶은 클래스 위에 어노테이션을 붙인다. xml → java → @Bean @Annotation → @Component ▶ @Annotation 종류 - 의존성 주입 시 사용 @Autowired - 정밀한 의존 관계 주입(DI)이 필요한 경우에 유용하다. - 필드 변수, setter 메소드, 생성자, 일반 메소드에 적용이 가능하다. - 의존하는 객체를 주입할 때..