2023/08 12

페이징 처리

현재 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메서드만 가득 들어있다. 프로그래밍을 배운 상태여야 지원이 가능하다 이것이 강제 구현 명세서이다. 그래야 그 인터페이스에 맞는 클래스가 되어 지원을 할..

JDBC (Mapper) / Exception

Mapper interface : 갖고있는 모든 메서드가 추상메서드이다 root-context에 Mapper를 사용하겠다고 등록해주어야 함 Namspaces에서 mybatis클릭해주면 source에 mybatis 추가된것을 볼 수 있음 com.zerock.mapper 패키지를 스캔해서 사용 하라고 추가해줘야 함 클래스의 정보를 꺼내서 이름이 무엇인지 사용하고 있는 logger가 공식적으로는 log4j이다 query를 다 확인하려면 기본jdbc가 아닌 모듈에서 바꾼 jdbc로 사용해야한다. 변경 전 변경 후 오류났을때 확인해야 할 사항 중 한 가지 repository에 저장된 jar파일 @ControllerAdvice 컨트롤러 역할을 하고, advice exception처리를 한다는 것을 의미 @Excep..

JDBC

1. JDBC드라이버 다운 2. connection pool (HikariCP)모듈로 설치 3. pool을 만드는 것은 spring이 해준다 4. root-context.xml에 bean 추가해준다 p.80 pom.xml에서 JDBC드라이버를 다운 Ojdbc (Oracle JDBC) pom.xml에 dependany를 추가해줌 ojdbc저장되었음을 확인 할 수 있음 메이븐 라이브러리 저장되는 곳 web.xml : 서블릿jsp와 관련된 설정 파일 context.xml : 어플리케이션 관련 파일 Connection pool : 기본적인 형태 HikariCP(JDBC Connection객체 관리) JDBC 드라이버 필요 getConnection ( protocol url , 로그인 아이디 , 비번, JDBC드..

Controller

심플 바인딩 get방식 parameter는 ulr뒤에 ?붙여서 사용 Appender: log를 어디에 출력할것인가 기존에 있던 것 뒤에 붙여 나가는 것. 로그를 찍을때 두 가지 appender가 있는데 console appender, 로그로 찍어주는 형태. 어떤 식으로 찍을 것인가. 밑에 패턴으로 나와있는 부분이 있다 콘솔에 이러한 형식으로 appender를 찍어라 %c : 클래스 -%m%n : file appender 로그를 찍을때 파일을 이용하는 로그가 있고, db를 이용하는 로그도 있다. 파일 로그를 이용하는 형태가 많다. 기본적인 로그라는 것이 있다. appender는 어딘가에 출력한다는 것이고, log는 무엇을 출력할 것인가. Model 객체를 spring에서 만들어줌. view에 공유될 수 있..

MVC설정

MVC 사용자의 Requset로 Controller를 호출 -> Controller에서 Model을 이용해 data처리 -> model을 통해 view로 전달 설계이유 : 추후 view를 교제할 때 사용자가 호출하는 URL자체에 변화 없게 만들 수 있기 때문 Controller: 개발자가 작성하는 클래스. Request를 처리하는 로직 작성. view에 전달해야 하는 데이터는 주로 Model 객체에 담아 전달. Spring MVC사용시, Servlet/JSP의 API (HttpServletRequest/Response) 사용 불필요 => 어노테이션, XML로 개발 가능 XML파일 : (Java confinguration은 xml필요X) web.xml : 톰캣 구동과 관련된 설정 - DispatcherSe..