개발 공부 127

스프링 입문 - 스프링 웹 개발 기초

1. 정적 컨텐츠 서버에서 파일을 그대로 웹브라우저에 내려 주는 것 2. MVC와 템플릿 엔진 템플릿 엔진 : HTML을 서버에서 프로그래밍해서 동적으로 바꿔서 내려 줌 (ex: Jsp, php) MVC : 컨트롤러, 모델, 템플릿 엔진(화면) 3. API Json 데이터 구조 포맷으로 데이터 전달 사용 예시 ) 서버 끼리 통신할 때 정적 컨텐츠 MVC와 템플릿 엔진 MVC : Model, View, Controller View - 화면을 그리는 것에 집중 Controller , Model - 비즈니스 로직과 내부적인 것을 처리하는데 집중 파일 마우스 우클릭 -> Copy Path/ Reference.. -> Absolute Path 타임 리프의 장점 : 서버 없이 열어 볼 수 있다 [과정] 브라우저에서..

스프링 입문 - 프로젝트 생성 / 라이브러리/ 환경설정

Maven or Gradle => 필요한 라이브러리를 땡겨오고, 관리하는 툴 요즘하는 gradle을 거의 사용 Group : 기업 도메인명 Artifact : 결과물 (프로젝트명) Dependencies : 어떤 라이브러리를 땡겨 쓸 것인지 지정 gradle : 버전 설정하고 라이브러리 끌어와주는 기능 main을 실행 -> 웹브라우저에 localhost : 8080 입력해서 아래의 페이지 나오면 성공 gradle이나 maven같은 tool들은 의존 관리를 관리 해줌 스프링 부트 라이브러리 spring-boot-starter-web - spring-boot-starter-tomcat: 톰캣 (웹서버) - spring-webmvc: 스프링 웹 MVC spring-boot-starter-thymeleaf: 타..

Security를 이용한 로그인 처리

p.606~ 새로운 요청이 들어올때 마다 서버측에서 쿠키에 세션ID가 있는지 검사를 한다 요청에 세션ID가 포함되어 있으면, 세션 공간과 맵핑하여 인지 후 프로그램이 진행된다 세션ID가 없거나, 틀리면 서버는 무조건 새로 생성해서 돌려주게 된다. 있더라도 서버공간을 찾아 일이시키지 못 하면 새로 돌려주게 된다. 스프링 시큐리티의 기본 동작 방식: 서블릿의 여러 종류의 필터와 인터셉터를 이용해서 처리 됨 필터 : 스프링과 무관하게 서블릿 자원 인터셉터 : 스프링의 빈으로 관리되면서 스프링의 컨텍스트 내에 속한다 공통사항 : 특정한 서블릿이나 컨트롤러의 접근에 관여한다 Http는 보안에 취약함. fileter를 이용한 처리 -> web.xml 5.0을 지워준다 filter-name이 같아야함 param-na..

AOP / Transaction

AOP: 관점 지향 프로그래밍 Aspect: 추상 명사로 횡단 관심사를 의미 Advice : 횡단 관심사를 구현한 객체 Target : 핵심 로직을 가지고 있는 객체 Proxy: Target 객체 + Advice JointPoint: 메서드 추가 runtime삭제해주고 version 변경해줌 @Component : bean을 만들어줌. component-scan에서 스캔하여 사용함. context에 정보등록 필요 aspect를 구현한 클래스가 advice이고 여러가지 메서드에 포인트컷을 지정하는 advice가 붙을수있고 메서드에 붙는 execution의 형태가 많다. 먼저 실행할 것인지, 나중에 실행할 것인지에 따라 beforeAdvice / AfterAdive로 나눠짐. 기본 비즈니스 로직은 건드리지 ..

댓글의 페이징처리/ 댓글

p.429 rno (인덱스) bno (인덱스X) 댓글 전체 갯수 확인하기 service와 serviceImpl 모두 ReplyPageDTO로 변경해줌 화면처리 showList()안에 showList()가 있음=>재귀 함수 재귀 함수를 사용하는 경우 정상적으로 종료하는 것을 보장해야 한다. 댓글과 댓글 수에 대한 처리 p.480~ alter table tbl_board add(replycnt number default 0); update tbl_board set replycnt = (select count(rno) from tbl_reply where tbl_reply.bno = tbl_board.bno) View에 EL과 JS에 변화 필요. VO가 넘어가는 뷰는 다 영향을 받을 수 있음.