Spring

[Part 2] 템플릿 적용하기 #6
위에 zip파일은 템플릿이다 우선은 템플릿을 이용하여 만들어보자 zip을 다운하여 압축을 풀어준다. 그리고 pages => tables우클릭=> 연결프로그램 => 메모장 이렇게 html코드가 뜨게되는데 모두 복사한다음 list.jsp에 위에 선언부 빼고 붙여넣는다. 그리고 서버를 실행하면?? 이렇게 깨져서 나온다. css나 js파일이 없기때문이다. 고쳐보자 서버를 먼저 멈추어주고 여기서 폴더들만 복사하여 resources라는 곳에 붙여넣어주자 하지만 바로 템플릿이 적용되어지진 않는다. 경로가 다르기때문이다. 지금부터 이 경로를 수정에 들어갈 것이다. 우선 list.jsp에 ../vendor의 경로를 바꿔주어야한다. ctrl+F를 하고 ../ ==> /resources/로 replace All 을 해주자 ..

[Part 2] Controller 게시물 목록/등록/수정/삭제 #5
📌 웹 계층의 구현 웹 계층에서 가장 먼저 설계하는 것은 URI의 설계 URL이동 : Redirect 방식 📌 진행 작업의 순서 목록 페이지 - 모든 진입 경로인 동시에 입력을 가는 링크 등록 입력 / 처리 - 게시물 등록 및 처리, 처리 후 이동 조회 - 목록 페이지에서 특정 게시물로 이동 수정 / 삭제 - 조회 페이지에서 수정 / 삭제 선택해 처리 📌 BoardController 목록의 처리 게시물(BoardVO)의 목록을 Model에 담아서 전달 📝게시물 목록처리 자 그러면 컨트롤러를 만들어보자 위의 사진처럼 BoardController.java라는 이름의 컨트롤러를 만들고 로그에 list.........를 찍어서 test로 확인해보려고한다. test클래스를 만들어주자 코드 더보기 package o..

[Part 2] 비즈니스 계층 #4
비즈니스 계층은 똑같은 일을 두번하여 비효율적으로 보일지 몰라도 서비스를 확장할 때 꼭 필요하다. 📝비즈니스 계층 (서비스 계층) 고객의 요구사항을 반영하는 계층 업무의 단위로 설계 트랜잭션(거래)의 단위 여러개의 Mapper나 DAO를 사용하는 경우가 존재함 xxxService의 형태로 작성 📌서비스 패키지 설정 인터페이스와 클래스를 설정하고, root-context.xml에 등록 우선 패키지와 인터페이스와 클래스를 만들어준다. 인터페이스를 목적은 하나다. 실제 객체를 모르게하는 것이다. 실제 객체를 몰라도 타입만 알고 만들수 있게 유연하게 만드는 것이 목적이다. 의존성 주입과 인터페이스를 결합하면서 굉장히 유연한 코드가 되는 것이다. root-context.xml에 가셔서 context를 추가해주시고..

[Part 2] 게시물 조회/삭제/수정 #3
여기서부터 이제 리턴타입이 생긴다. 조회부터 해보자 📌 Read (조회) 리턴타입이 있어 void는 빼고 BoardVO로 들어가고 primary key인 bno를 괄호 안에 넣어준다. BoardMapper.xml에도 select태그를 생성해주고 다음은 test코드를 생성해주는 것이다. 이제 너무 예상이 갈정도로 익숙할 것이다. ㅎㅎ 현재 내 DB에는 6개가 담겨져 있다. 그중에서 6번 데이터를 뽑아보는 코드를 작성해보았다. 원하는 결과가 잘 조회 되었다. 📌 Delete (삭제) 이제 삭제를 해보자. 마찬가지로 리턴타입이 있다. 그리고 primary key로 구분할 것이다. xml에도 delete태그를 작성해주고 Test코드도 작성해준다. 결과는? DB에서 1번만 잘 삭제되었다. 📌 Update (수정)..

[Part 2] BoardVO클래스와 매퍼테스트 #2
이번 글에서는 VO클래스를 생성하고 매퍼테스트를 해보겠다. package를 생성하고 그 밑에 VO클래스를 만든 후 위 사진과 같이 코드를 넣는다. Mapper 인터페이스 작업을 해보자. BoardMapper라는 인터페이스를 org.zero.mapper 패키지 아래에 생성해준 후 방금 위에서 만든 VO와의 연결을 확인하기위해 아래와 같이 코드를 작성한다. BoardMapper.java package org.zero.mapper; import java.util.List; import org.zero.domain.BoardVO; public interface BoardMapper { List getList(); } 그리고 아래의 사진처럼 org.zero.mapper라는 폴더를 생성하시고 BoardMapper...

[Part 2] 스프링 프로젝트 구성 #1
Part 2 에서는 Part 1에서 공부했던 것들을 바탕으로 게시판을 만들어볼 것이다. 이번 글에서 Part 1 했던 것들을 다시 쭈르륵 빠르게 세팅하면서 알아보면서 진행해보자! 스프링에 대해 어느정도 지식이 있는 분들은 Part2부터 진행해도 무방쓰!~~ (다만 세팅하다가 조금씩 건너띄는 부분은 Part1 참조 ㅎㅎ) 시작해보자! 일반적인 웹 프로젝트의 구조는 3-Tier의 구조를 활용 스프링 MVC를 이용하는 예제의 구성 📌 각 영역의 네이밍 규칙 xxxController: 스프링 MVC에서 동작하는 Controller 클래스 xxxService, xxxServiceImpl: 비지니스 영역을 담당하는 인터페이스는 'xxxService'라는 방식을 사용하고, 인터페이스를 구현한 클래스는 'xxxServ..

[Part 1] Spring Controller #10
📝Controller의 파라미터 @Controller - 해당 클래스의 인스턴스를 스프링의 빈으로 등록하고 컨트롤러로 사용 @RequestMapping - 특정한 URI에 대한 처리를 해당 컨트롤러나 메서드에서 처리 - 스프링 4.3 이전에는 @RequestMapping(method = 'get' ) 방식으로 사용 - 스프링 4.3이후에는 @GetMapping, @PostMapping등으로 간단히 표현 📌Model이라는 데이터 전달자 Model 객체는 JSP에 컨트롤러에서 생선된 데이터를 담아서 전달하는 역할을 하는 존재 모델 2 방식에서 사용하는 request.setAttribute()와 유사한 역할 과거에는 ModelAndView Model에 담는 데이터 => 파라미터가 아니라.. 다른 곳에서 발생한..

[Part 1] 스프링 MVC #9
MVC(Model-View-Controller) mvc를 많이 들어는 보았을 것인데 왜 이걸 사용하느냐를 아는 것이 중요하다. Model 2 방식에 대한 이해 왜 Controller를 따로 분리했을까? URL처리 화면과 로직 분리 유지보수가 좋다는 근거가 무엇일까? 돈 - 변경 클라이언트의 변경에 비용 서비스 제공자 입장 비용 고객사의 모델 변경 DispatcherServlet은 web.xml에 있다. 여기서 알아야할 점을 간단히 설명하면 개발자가 만드는 것을 알면 편하다. Controller와 JSP(view)만 만든다. 나머지는 MVC가 만든다고 생각하면 된다. 스프링과 스프링 MVC 스프링 프레임워크 CORE + 여러 Sub 프로젝트들 별도로 결합새서 사용하기 때문에 설정 역시 별도로 처리가능 일반..

[Part 1] MyBatis 연동 #8
이번 MyBatis까지가 설정에 대한 내용이다. 빨리 끝내고 코딩을 하고 싶다... MyBatis는 Sql Mapping 프레임워크다. SQL과 Object간의 관계를 매핑해주는 역할 JDBC코드에 비해 처리하는 부분이 간결해지고, close 처리등이 지원 Spring에서의 사용 스프링은 MyBatis와의 연결을 위한 mybatis-spring 라이브러리를 이용해서 연동처리 JPA는 관계지향의 세계를 객체지향의 세계에 접목하는 느낌? 이고 MyBatis는 유틸리티의 성격이 강하다. MyBatis의 장점 : SQL을 그대로 사용가능하다. 단점 : JPA보다는 성능이 조금 떨어진다. https://mvnrepository.com/artifact/org.mybatis/mybatis/3.5.11 위의 사이트에 ..

[Part 1] HikariCP 설정 #7
우선 HikariCP가 무엇인지 왜 사용하는지 궁금한 분들이 있을 것이다. 간단하게 설명을 하자면 DB를 사용하려면 Connection을 맺고 끊는 작업이 필요하다. 이는 리소스의 소모가 많은 작업이다. 따라서 pooling이라는 기법을 통해서 객체를 미리 생성하고 빌려 쓰는 방식으로 이용해서 연결시간을 단축한다. spring boot 2.0이전에는 tomcat jdbc를 이용하였는데 이후에는 성능좋은 HikariCP를 이용하게 되었다. https://mvnrepository.com/artifact/com.zaxxer/HikariCP 위에 링크에 접속하여 3.4.5버전을 다운받아보자. 위의 dependency를 복사하여 porm.xml에 넣어줄 것이다. 추가를 하면 알아서 다운로드를 진행해준다. 그리고 ..