Spring Legacy Project로 Spring MVC Project를 생성합니다.계층구조는 com.ict.controller로 설정했습니다.만들어진 프로젝트의 Pom.xml을 수정합니다.MVN 리포지터리에서 검색한 코드르dependencies 태그 내에 채워 넣
ㅇ
먼저 프로젝트 세팅먼저root-context.xml 파일 하단의 Namespaces에서 mybatis-spring을 체크합니다.그 다음 resouce 창에서 sqlSessionFactory 객체를 생성한 다음밑에 Mybatis 스캔을 하고root-context.xml
결과값이 없는 void 메서드 만들기인터페이스 BoardMapper에 insert와 delete 각각의 void 메서드를 생성해줍니다.xml 파일에 Mybartis 이용한 쿼리문 만들기insert 문은 insert 태그 내부에delete 문은 delete 태그 내부에각
<context:component-scan>이제 모든 서비스와 mapper의 테스트 구현이 끝났습니다.실제로 jsp 파일의 경로를 따라 Model을 이용해 데이터를 주고 받으며화면을 구현하는 일만 남았습니다.이에 따라 필요한 데이터들을 bean에 자동으로 저장 즉
hint페이징 처리는 게시판의 모든 글을 보여주지 않고n개씩 끊어서 보여주는 처리를 의미합니다.Oracle sql에서는 rownum이라는 개념을 이용해 처리합니다.많은 글들을 빠르게 조회하기 위해orcle에서는 hint라는 구문을 쿼리문에 삽입해서 처리합니다.과 같은
페이지를 만들기 위한 준비물저번에 위와 같은 oracle 구문을 통해5페이지를 원한다면 pagenum을 바꿈으로서원하는 rownum을 row마다 부여해10개씩 row를 불러올 수 있다는 걸 깨달았습니다.그렇다면 이제 페이지 버튼과 페이지를 마음껏 설정할 수 있도록필요한
mapper.xml 으로 쿼리보내기board_tbl 테이블의 pk_board를 힌트로 DESC를 걸고조회 구문을 선언합니다.현재 조회 중인 ${page} 변수를 집어넣기만 하면10개의 페이지네이션이 list에 적용될 것 입니다.물론 mapper.java에선언해주셔야 합
RESTREST는 "Representational State Transfer"의 약자이다.기존엔 url에 파라미터를 붙여서 정보를 get이나 포스트 방식으로 처리해왔다.REST는 그 대신 url 자체가 어떤 자원인지 1:1로 매칭해 나타내도록설계하는 개념이다.컴퓨터용
객체 리스트 JSON 리턴객체 리스트를 JSON리턴 해보겠습니다.객체 List를 return 해주는 sendVOList 메서드입니다.해당 url로 접속해보면List 단위로 묶인 VO 하나씩 리턴해주고 있습니다.Map 자료형의 JSON 리턴Map도 보내봅시다.중첩된 J
REST 방식 댓글 기능 구현URL부터 시작해 모든 부분을 REST 방식으로 구성해서댓글 서비스를 구현해보겠습니다.먼저 댓글 table을 oracle에 생성해줍니다.댓글은 글과 무조건 연동되기 때문에 이를 감안해,board와 외래 키를 걸어주어야 합니다.이제 게시판 프
@GetMapping 댓글 조회전체 댓글 목록을 조회하는 list 메서드를 생성해봅시다.이번엔 파라미터에 @PathVariable 어노테이션을 사용해볼 겁니다.이는 상단의 {bno}자리에 들어온 요소를?bno = {bno} 와 같이 간주한다는 의미입니다.그리고 prod
@DeleteMapping일반 방식이 아닌 REST 방식에서는삭제로직을 Delete 방식으로 요청합니다.@DeleteMapping 어노테이션으로delete 방식을 요청해봅시다.DELETE 요청을 처리하는 @DeleteMapping을 걸어주었고@PathVariable을
PUT, PATCH 방식 댓글 수정PUT과 PATCH는 같지는 않지만현재 수준에서는 구분이 엄격하게 나눠지지 않기 때문에그냥 두 가지를 모두 써보고 싶어서 둘 다 포함시켜서 보내보았습니다.consumers에는 JSON을 입력받음을 명시하고produces는 문자열을 리턴
ajax 는?아약스는 비동기 통신을 의미합니다.지금껏 페이지 이동 -> 페이지 로딩 -> 페이지 이동을 전제로개발이 이루어졌지만비동기 방식 개발을 할 경우페이지의 이동이 아닌 해당 페이지 내의 html코드를 수정하는 식으로전체 페이지 이동/변경을 지양합니다.이런 방식의
REST를 이용한 댓글 기능 완성댓글을 입력받기 위해 댓글 입력 button이 있는 div를 만들어줍니다.이후 자바 스크립트 내부에 button의 아이디를 onclick 시 실행하는온클릭 메서드 $("을 생성해줍니다.내부에 먼저 replyer와 reply를 버튼 내부
댓글에 버튼 만들기 이제껏 JSON 형식의 데이터들을 비동기 방식으로 조회하고 전송하면서 콘솔과 화면에 출력하는 것을 해보았습니다.
이벤트 위임이란?
jsp 파일 내의 코드 보내기연습 중인 jsp 파일 내부에 js script와 style 태그들로 어지러워졌습니다.이런 코드들을 resources 폴더 밑에 옮기고해당 파일의 링크를 임폴트해주는 것으로 jsp 파일을 깔끔하게 만들 수 있습니다.resources 폴더로s
벡틱li, ul, div등 태그 엘리먼트 내부에 파라미터를 넣고 싶을 때우리는 '' "" 와 + 를 써가면서변수를 스크립트에 적어야 했습니다.예를 들어 댓글(reply)을 불러오는 리스트를 만들고 싶을 때처럼 실수하기도 쉽고 복작한 구문을 str 같은 let 자료형에저
글 밑에 댓글게시판에서 글을 조회하면 당연히댓글 리스트도 조회가 되어야 합니다.그래야죠.REST 방식으로 비동기 데이터를 주고 받는 댓글창한 번 해봅시다.전에 만들었던 게시판 조회 시 표현되는 창인detail.jsp입니다.여기에 댓글 로직을 집어넣기 전에먼저 필요한 c
AOP AOP 는 핵심 로직과 보조 로직을 분리하자는 개념에서 출발합니다. 여태까지 모든 메서드의 실행 소요 시간이 몇 초인지 구하고 싶으면 메서드마다 기능을 추가해야 했습니다. 이제는 그런 보조 메서드의 기능을 전역에 추가하거나 기능을 추가할 메서드 범위를
트랜잭션 AOP를 이용해 트랜잭션을 이해하고 적용해볼 수 있습니다. 트랜잭션은 2개 이상의 쿼리문을 함께 실행하는 프로그래밍 개념입니다. 트랜잭션에서 함께 실행되는 쿼리문들은 모두 함께 성공하거나 실패해야 합니다. 위 표의 4가지 원칙에 따라 기능을 묶으면 트
트랜잭션 활용 이제 트랜잭션이 뭔지 알았습니다. 이것을 활용해서 게시판 row를 삭제할 때 그 글에 소속된 댓글도 함께 삭제할 수 있습니다. 지금까지는 글이 삭제되더라도 댓글은 남아서 DB의 저장공간을 차지하고 있었는데 이제 그런 일이 발생하지 않도록 미연에 방
Spring Security스프링 시큐리티는 특정 사이트로 들어오는 접근을 가로채서로그인이 되어있는지 등을 검증한 다음 로직을 실행시켜주는 구조입니다.원래 JSP에서는 "필터"를 이용해서 구현 가능했지만스프링에서는 빈 컨테이너에서 관련 자원들을 같이 관리하기 떄문에이미
로그인 성공로그인 성공을 처리하기 위해 custom handler를 생성합니다.위와 같이,앞으로 모든 security 처리는 \~\~~handler를 생성한 후 default handler들을 상속받아 생성해줍니다.오버라이딩에 성공한 onAuthenticationSuc
스프링 시큐리티 디폴트 DB 테이블DB와 연동해서 로그인 처리를 해보기 위해서먼저 스프링 시큐리티의 디폴트 DB 테이블 구조를 본따서테이블을 작성해보겠습니다.username, password, authority등 컬럼명 및 형식이고정되어 있는 테이블입니다.그리고 해당
비밀번호 암호화 / 복호화스프링 시큐리티에서는 BcrtptPasswordEncoder를 통해비밀번호 복호화를 지원하고 있습니다.security - context.xml에 위와 같은 bean을 추가해줍니다.그 후 비크립트인코더를 인증매니저에도 추가해주어야 합니다.이제 저
스프링 시큐리티에서 DB 연동커스텀 테이블들을 생성하고mybatis를 통해 DB와 연동을 해보겠습니다.resultMap두 개의 커스텀 테이블을 생성했으니 VO를 생성해줍니다.mapper 인터페이스를 생성하면 xml 파일을 만들어 sql 문을 처리해주어야 합니다.맴버변수
security service 구현service 구현의 순서는 늘VO -> mapper -> (Test 잠깐) -> service구현 ->bean 추가였었습니다.mapper를 작성하고 test도 했으니 service를 구현해보겠습니다.기본 user detail serv
Custom User 만들기DB에서 보안적인 검사없이 바로 데이터를 가져올 때는 VO를 그대로 활용할 수 있었으나시큐리티에서는 인가된 자료만 취급할 수 있습니다.DB의 데이터를 원하는 value object로 만들기 위해서는User의 자식클래스를 활용해 커스텀을 생성해
principalDB와 연동된 security 로그인이 활성화되었다면 이제 jsp 파일 내부에sec 태그를 활용해볼 수 있습니다.springframework의 security tag 경로를 설정하고 sec라는 이름으로 임폴트했습니다.이제 sec를 활용한 principa
자동 로그인 토큰 발급해주기한 번 로그인하면 일정 시간동안로그인 로직이 없어도 로그인 유지가 되도록 하려면자동 로그인 기능이 필요합니다.일단 spring security가 권장하는 사양으로oracle 테이블을 생성해보겠습니다.생성이 완료되었으면 이제 security-c
인터셉터 어노테이션 설정모든 주소를 하나하나 security-context에security-intercept-url태그를 추가해서 적용하는 것은복잡하고 관리도 어려운 일입니다.어노테이션으로 처리하는 방법을 적용해보도록 해야겠습니다.먼저 servlet-context의 N
파일 업로드파일 업로드 테스트와 연습을 위해 prj_upload라는 이름으로스프링 레거시 프로젝트 -> Spring MVC 로 생성했습니다.web.xml파일을 아래의 코드와 같이 수정해야 파일 업로드를 실행할 수 있습니다.wep-app 태그를 수정하자 오류가 뜨지만 서
ajax 파일 업로드ajax를 통해 upload를 해보아야 할 때위와 같이 작성해서 간단히 테스트를 먼저 해보겠습니다.uploadAjax.jsp의 내부를 위와 같이 간단하게 작성해서 확인하고ajax 를 쓰기 위해 jquery 스크립트를 위와 같이 작성해줍니다.conso
파일 업로드 정규식파일 확장자 중 exe, sh, zip, alz와 같은 실행파일 확장자를 거르고파일 크기도 제한을 걸도록 하고 싶을 때.ajax 파일을 검문하는 정규식이 필요합니다.jsp 파일 내부에 한 번 작성해보고 테스트 해보도록 하겠습니다.uploadAjax.j
VO 생성 DB에 이미지 저장처리를 위해 BoardVO의 bno(글번호)를 저장하고 이미지의 정보를 담는 BoardAttachVO를 생성했습니다. 기존의 BoardVO 가 이미지 정보까지 가져와야 하며 이미지 정보가 글 하나에 여러 개가 될 수 있기 때문에
RESTREST는 "Representational State Transfer"의 약자입니다.기존엔 url에 파라미터를 붙여서 정보를 get이나 포스트 방식으로 처리해왔습니다.REST는 그 대신 url 자체가 어떤 자원인지 1:1로 매칭해 나타내도록설계하는 개념입니다.연
CRUD 쿼리 작성HR 오라클 계정 내에 있는 countries 테이블과 연동하기 위해 VO를 생성하고@Data 어노테이션을 달아줍니다.기초작업이 끝났으니mapper 에 쿼리를 작성하여 DB와 연결해보겠습니다.먼저 SELECT 문입니다.이렇게mapper안에 select
REST Controller 위와 같이 RESTcontroller를 생성합니다. 사용할 서비스 객체를 선언하고 어노테이션을 연결해줍니다. 이후 위와 같이 countries의 리스트를 불러오는 메서드를 get방식으로 작성했습니다. > YARC를 통한 테스트 Y