전체 글 131

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가 넘어가는 뷰는 다 영향을 받을 수 있음.

Rest / Ajax 댓글처리

RestController는 data를 돌려줄 수 있다. text데이터인데, 일반형식. (마인타입?) http프로토콜은 객체로 전달 불가. 객체가 문자로 바껴서 전달됨. Json으로 받고싶은경우 XML과 JSON 둘다 지원하는 경우, sample.json으로 요청하면 json방식으로 나옴 getSample로 요청하면 xml방식으로 나옴 아래와같이 procuduer가 생략된 경우 두 가지 다 가능! Key값과 Value값이 붙어 있다 Header에 있는 정보를 다루기 위해서 responseEntity를 이용할 수 있다. 객체를 돌려줄때는 xml이나 json타입으로 문자열화 되어 전달된다 배열, 컬렉션 형태로 돌아갈때는 그에 해당하는 구조로 변환되어 돌아간다 인자가 클라이언트에서 넘어오는 것을 받아 줄 수 ..

검색

get메서드와 modify메서드가 똑같이 get방식이니 modify메서드를 삭제하고 묶어줌 검색 p.325~ 멤버 변수를 추가해준다 trim : 조건식을 접합시켜주는 역할을 함 자바에서 getter함수는 property와 연동됨. item= "searchCondition"과 test="searchCondition"이 일치해야 함 prefix : 앞(접두) / suffix:뒤(접미) OR로 접합하겠다는 의미 '%' : 모든 데이터를 찾겠다는 의미 foreach구문 - 조건식 OR 조건식 OR 조건식 으로 반복 후 (조건식 OR 조건식 OR 조건식 ) AND T와 C의 조건이라는 가정 하에, 결과적으로 아래와 같은 쿼리문이 만들어진다. AND 와 OR 우선순위는 AND이므로 ( )로 묶어주어야 함. pref..

페이징 처리

현재 tbl_board 데이터 수만큼 insert진행 PK는 auto index가 걸려있다 PK를 생성하면 자동적으로 인덱스가 만들어진다 rownum : 한 줄에 붙여지는 일련 번호 rownum을 이용하면 원하는 만큼 이용 가능 SELECT rownum rn, bno, title, content from tbl_board WHERE rownum > 10; 결과 안나옴 인라인뷰로 원하는 데이터만 가져올 수 있다. Query 결과로 다시 SELECT함 rownum가 붙어있는 쿼리로 시작해서 결과가 나옴 성능이 좋으려면 인덱스를 사용 하는 것이 좋다 query로 작성할때 Mapper와 xml부터 작업해준다 1page단위로 10개를 요청하겠다는 의미 2번째 페이지의 5개 글을 보여줌 /로 요청했을때 작동하는지 ..

실습

/로 요청시 board/list로 가게끔 하고싶으면, redirect를 쓰는 이유는 보드 컨트롤러작업이 나오게 하기 위한 것임 양쪽의 내용이 동일해야 함 requestScope을 사용하면 속도가 좀 더 빠름 model이 requestScope에 해당 코어라이브러리 에서 제공해주는 forEach가 반복하는데 어떤것을 사용하는지 items로 지정할 수 있다. db에 데이터가 얼만큼 있느냐에 따라 반복되어 나옴 요청을 넣을시 아래와같이 HomeController와 BoardController가 찍히는데 Redirect 이기때문에 아래와 같이 나옴 log를 찍고자할때 추가해 주어야함. 클라이언트측에서 데이터를 넣어서 처리할 페이지 필요 컨트롤러 : 1) 단순 페이지를 보여주는 메서드 필요 2) 데이터가 넘어왔을..

게시물 수정/ 삭제/ 모달

1. 게시물등록 replseState({}, null, historystate: 기록이 남게 되어있음 뒤로가기 버튼을 눌렀을때 stack에 있는 데이터를 하나씩 꺼내어 내용들을 바꿔 url돌아가게 하는 것 history로작업하는 부분에서 replaceState를 넣게되면 제일 위에있는 url을 강제로 바꿀 수 있다. 브라우저에서 방묵기록을 강제로 삭제하는 것이 꺼내어 없애는 것 2. 목록페이에서 게시물 눌렀을때 특정한 페이지로 이동 bno라는 값을 get방식의 parameter로 넘겨 전달하는 코드가 있어야 함 글을 눌렀을때 누름과 동시에 브라우저 url을 get방식으로 넘겼을때 동작이 일어나야함 controller에서 void로 설정했기 때문에 get.jsp 만들고 아래의 코드를 추가 해준 list.j..

비즈니스 계층 (Service) 설정

비즈니스계층 : 고객의 요구사항을 반영하는 계층. 프레젠테이션 계층과 영속 계층의 중간 다리 역할. 로직을 기준으로 처리. 비즈니스 영역에 있는 객체들은 service용어를 많이 사용. 영속계층: 데이터베이스를 기준으로 설계를 나눠 구현 설계 시 계층 간의 연결은 인터페이스를 이용해서 느슨한 연결을 함. Service측에서는 Client입장에서 업무에 관련된 서비스 메소드이름으로 지어준다. ex) 게시물 등록 -> register get( ) : 특정한 게시물을 가져옴 getList( ) : 전체 리스트를 구함 - 메서드의 리턴 타입을 처음부터 결정해서 진행 가능 BoardServiceImpl @Log4j : pom.xml에서 주석처리 해주어야 imple.java파일에서 log4j에러 사라짐 @Servi..

영속/비즈니스 계층 DB CRUD

서블릿이 요청을 받아 비즈니스로직을 처리하고 DB에서 데이터를 가져오는 모든 작업을 할 수 있다. 이러한 구조는 하나로 묶어 스파게티용 코드라고도 한다. 서블릿: 비즈니스 로직 DAO를 뒤에 둬서 작업하는 구조를 따로 만든다 MVC 구조 Spring core : 비즈니스 로직 담당 Controller : Mapping을 통해 일 처리를 하는 주최가 된다. 모든 처리를 다 하지 않고 들어와서 처리를 시켜 결과 받아서 전달해주는 역할에 집중 Service: 비즈니스 로직 처리 ServiceImpl: 인터페이스. 명령어들이 잔뜩 들어있는 명세서. abstract메서드만 가득 들어있다. 프로그래밍을 배운 상태여야 지원이 가능하다 이것이 강제 구현 명세서이다. 그래야 그 인터페이스에 맞는 클래스가 되어 지원을 할..