프로그래밍/Spring 63

org.springframework.beans.factory.CannotLoadBeanClassException 해결방법

오류의 원인은 해당 빈 클래스를 로드 할 수 없을 경우에 발생 해당 오류가 발생하는 곳으로 이동해보면 그 java 파일에 오류가 나있을 확률이 높음 두 가지 해결 방법 👇 1️⃣ 프로젝트 클린 window 메뉴 > Project > Clean 2️⃣ JRE 라이브러리의 경로를 올바르게 지정 프로젝트에서 우클릭 > Properties > Java Build Path > Libraries 탭으로 이동하여 JRE 라이브러리 경로 지정

스프링 프레임워크 모듈과 컨테이너(IoC)

스프링 프레임워크에서 제공하고 있는 모듈 스프링 모듈 기능 spring-core 스프링의 핵심인 DI(Dependency Injection)와 IoC(Inversion of Control)를 제공 spring-aop AOP구현 기능 제공 spring-jdbc 데이터베이스를 쉽게(적은 양의 코드) 다룰 수 있는 기능 제공 spring-tx 스프링에서 제공하는 트랜잭션 관련 기능 제공 spring-webmvc 스프링에서 제공하는 컨트롤러(Controller)와 뷰(View)를 이용한 스프링MVC 구현 기능 제공 스프링 프레임워크에서 제공하고 있는 모듈을 사용하려면, 모듈에 대한 의존설정을 개발 프로젝트에 XML 파일등을 이용해 서 개발자가 직접 하면 됨 스프링 컨테이너(IoC) 스프링에서 객체를 생성하고 조..

11.24(스프링 MVC 처리 흐름)

스프링의 장점 스프링 프레임워크는 DI나 AOP와 같은 기능뿐만 아니라 기본적으로 웹 개발을 위한 MVC 프레임워크도 함께 제공함 스프링MVC는 스프링을 기반으로 하고 있기 때문에 스프링에서 제공하는 기능을등을 손쉽게 사용할 수 있음 또 다른 종류의 프레임워크와 연동하는 수고를 하지 않아도 됨 스프링 MVC의 주요 구성 요소 👉 DispatcherServlet 클라이언트의 요청을 전달 받음 컨트롤러에게 클라이언트의 요청을 전달하고 컨트롤러가 리턴한 결과 값을 View에 전달하여 알맞은 응답을 생성함 👉 HandlerMapping 클라이언트의 요청 URL을 어떤 컨트롤러가 처리할지를 결정 👉 Controller 클라이언트의 요청을 처리한 뒤, 그 결과를 DispatcherServlet에 알려줌 👉 Mode..

11.23(MVC1 패턴과 MVC2 패턴)

MVC1 jsp로 구현한 기존 웹 어플리케이션 모델 1 구조로 웹 브라우저의 요청을 jsp 페이지가 받아서 처리하는 구조 JSP 페이지에 비지니스 로직을 처리 하기 위한 코드와 웹 브라우저에 결과를 보여주기 위한 출력 관리 코드가 뒤섞여 있는 구조 JSP 페이지 안에서 모든 정보를 표현(view)하고 저장(model)하고 처리(control)되므로 재사용이 힘들고, 읽기도 힘들어 가독성이 떨어짐 👉 정리 정의 : 모든 클라이언트 요청과 응답을 JSP가 담당하는 구조 장점 : 단순한 페이지 작성으로 쉽개 구현 가능. 중소형 프로젝트에 적합 단점 : 웹 애플리케이션이 복잡해지면 유지보수 문제가 발생 MVC2 MVC1 구조와 달리 웹 브라우저의 요청을 하나의 서블릿이 받게 됨 서블릿은 웹 브라우저의 요청을 알..

11.18(DispatcherServlet과 web.xml 설정)

DispatcherServlet이란? 더보기 스프링 MVC에서 DispatcherServlet은 다른 웹 프레임워크의 프론트 컨트롤러처럼 클라이언트의 request를 컨트롤러에 전달할 뿐만 아니라, 스프링 IoC 컨테이너와 통합하여 스프링의 모든 기능을 제공 DispatcherServlet 설정 방법 DispatcherServlet은 httpServlet을 상속 받는 실제 서블릿임 그리고 code-based 또는 web.xml에서 설정함 아래는 WEB-INF 디렉토리 에 있는 web.xml 파일이며 DispatcherServlet이 처리할 url-mapping을 반드시 같이 작성해주어야 함 example org.springframework.web.servlet.DispatcherServlet 1 exam..

11.17(MVC 뷰 구현)

컨트롤러의 처리 결과가 뷰로 전달되는 과정 @Controller 클래스 포함한 모든 웹 요청을 처리하는 객체를 '핸들러'라고 함 HandlerAdapter는 핸들러의 실행 결과를 DispatcherServlet이 요구하는 ModelAndView로 변환해줌 (ex. 컨트롤러 메서드가 String을 리턴하는 경우) DispatcherServlet은 ViewResolver를 사용하여 출력할 View 객체를 구한 후 내용을 생성함 ViewResolver 컨트롤러가 지정한 뷰 이름으로 View 객체를 구함 View 객체에는 컨텐트 타입(text/html)을 리턴하는 getContenType() 메서드와 파라미터로 모델과 요청/응답 객체를 갖는 render()메서드가 있음 더보기 ViewResolver 구현 클래스..

11.09(Spring Security - 사용자 인증)

사용자 인증 1. in-memory 사용자 인증(메모리상에 사용자 등록) 2. UserDetails구현체를 통해 db에서 인증하기 → 이번에 다룰 부분 Service, DAO 빈관리용 context:component-scan도 적어주기 > Namespace > context 체크 관리자만 이용가능한 페이지 만들기 > admin 컨트롤러 생성 void로 만들어도 viewName설정이 없다면, 요청 url에서 가져옴( /WEB-INF/views/admin/adminList.jsp) > jsp(view단)생성 > security-context.xml에 intercept-url 추가해주기!! 이제 memberLogin이 아닌 security로 로그인정보 접근해야 함 가져올때는 이런식으로 가져옴 principal..

11.06(Spring Security - security 권한 생성)

sql에 권한테이블 생성해서 권한주기 > 멤버vo가 security에서 요구하는 필드를 처리할 수 있도록 UserDetails 구현체로 바꿔주기 (그래야 security에서 사용가능) security에서는 UserDetails을 통해서 회원 객체에 접근 가능 > 필드 추가하기(username, password, enabled(활성화여부), List authorities이런 권한 목록 필드 필요(list인 이유는 권한은 1개 이상이니까)) => 이제 멤버의 준비는 끝! security에 전달해서 사용 가능! 스프링 시큐리티가 db에 갔다 올 수 있는 service와 dao만들기(memberId를 가지고 db에 갔다 올 목적!) spring security관련 security.model 패키지 새로 만들기 ..

11.05(Spring Security - 로그인 페이지 커스터마이징, csrf 속성, login, logout)

로그인 페이지 커스터마이징 security-context.xml form-login작성 login-processing-url : 로그인폼 제출 url. 핸들러메소드 필요 없음. logout-url : 로그아웃 처리 url. 핸들러메소드 필요 없음. 왜냐면 시큐리티에서 제공한 모듈로 넘어가니까 xss공격등에 대비해 중요한 요청에는 csrf속성값을 주고받음 모든 POST요청에 csrf 토큰값 인증 사용 기본값 csrf 끄기(보안상 취약) memberLoginForm에서 csrf사용하기 추가 form태그를 form:form으로 변경 -> form:form태그는 method="POST"일때 _csrf인증 토큰 발행 해줌(hidden 타입으로 속성값 발행) login, logout을 post방식으로 처리해야만 함..