본문 바로가기

728x90
반응형

Java

[코드로 배우는 스프링 웹 프로젝트] ch11 화면 처리 4 5. 게시물의 수정/삭제 처리 ▷ 조회 페이지에서 직접 처리하는 방식 ▷ 별도의 수정/삭제 페이지를 만들어 해당 페이지를 만들어 해당 페이지에서 수정과 삭제를 처리하는 방식 사용 ▷ 최근 게시물 조회 페이지에서 댓글 처리가 많아지면서 수정과 삭제는 별개의 페이지에서 하는 것이 일반적 (1) 수정/삭제 페이지로 이동 ▷ BoardController 에서 수정/삭제가 가능한 화면으로 이동하는 것은 조회 페이지와 같음 ◎ src/main/java → org.codehows.controller → BoardController 메소드 추가 @GetMapping({"/get","/modify"}) public void get(@RequestParam("bno") Long bno, Model model) { log... 더보기
[코드로 배우는 스프링 웹 프로젝트] ch11 화면 처리 3 https://bobo12.tistory.com/303 (2) 재전송(redirect) 처리 및 모달(Modal)창 보여주기 ▷ 등록 과정에서 POST 방식으로 데이터가 처리되는 과정을 그림으로 표현하면 아래와 같음 ▷ BoardController에서 register() 메소드는 'redirect:/board/list'를 전송하는데 브라우저는 이를 통보 받은 후 '/board/list'로 이동 ▷ 만약 위와 같이 재전송을 하지 않으면 사용자는 브라우저의 '새로고침'을 통해 동일한 내용을 계속 서버에 등록할 수 있어서 문제가 발생함. ▷ 브라우저에서는 이런 경우 경고창을 보여주기는 하지만 근본적으로 차단하지는 않음 ▷ 따라서 등록, 수정, 삭제 작업은 처리가 완료된 후 다시 동일한 내용을 전송할 수 없도록.. 더보기
[코드로 배우는 스프링 웹 프로젝트] ch11 화면 처리 2 https://bobo12.tistory.com/302 (3) jQuery 라이브러리 변경 ▷ JSP 페이지 작성시 JavaScript로 브라우저 내 조작이 필요한 경우가 많음 ▷ 예제는 jQuery를 이용할 것인데, 문제는 이전의 방식대로 처리했을 시 jQuery 라이브러리가 footer.jsp 내에 포함되어 있다는 점 ▷ 성능의 손해가 있더라도 jQuery를 header.jsp에 선언하면 작성하는 JSP에서 자유롭게 사용할 수 있습니다. ◎ footer.jsp에 있던 jquery 문구를 삭제하고 header 마지막에 추가합니다. ◎ jQuery를 교체한 후 모바일 크기에서 새로 고침 시 메뉴가 펼쳐지는 문제가 발생 ▷ fooder.jsp에 아래와 같은 코드 추가 ...(생략)... 2. 목록 화면 처.. 더보기
[코드로 배우는 스프링 웹 프로젝트] ch11 화면 처리 1 ◎ 화면 처리 ▷ 각 영역에 대한 모든 처리와 테스트가 완료되었고 만일 에러가 발생한다면 모든 문제는 화면 쪽에서만 발생함. ▷ 화면에는 JSP, JavaScript(jQuery), CSS, HTML 이용 ▷ 화면 개발 전에는 화면의 전체 레이아웃이나 디자인이 반영된 상태에서 개발하는 것이 좋음 ▶ BootStrap을 이용한 무료 디자인도 좋음(https://startbootstrap.com/template-categories/all/ ) ◎ 예제 사용 디자인 ▷ 'SB Admin2' 이용 ▷ http://cafe.naver.com/gugucoding (구멍가게코딩단 : 네이버 카페 (naver.com)) ▷ 해당 압축 파일을 다운 받은 후 압축 해제하고 6개의 폴더를 src/main/webapp/res.. 더보기
[코드로 배우는 스프링 웹 프로젝트] ch10 프레젠테이션(웹) 계층의 CRUD 구현 2 https://bobo12.tistory.com/300 (3) 조회 처리와 테스트 ▷ 등록 처리와 유사하게 조회 처리도 BoardController를 이용해 처리 가능 ▷ 특별한 경우가 아니라면 조회는 GET 방식으로 처리하므로, @GetMapping을 이용 ◎ src/main/java → org.codehows.controller → BoardController 클래스 수정 ...(생략)... @GetMapping("/get") public void get(@RequestParam("bno") Long bno, Model model) { log.info("get"); model.addAttribute("board", service.get(bno)); } } ▷ BoardController의 get() .. 더보기
[코드로 배우는 스프링 웹 프로젝트] ch10 프레젠테이션(웹) 계층의 CRUD 구현 1 ◎ 프레젠테이션 계층 ▷ 비즈니스 계층의 구현까지 모든 테스트가 진행되었다면 남은 작업은 프레젠테이션 계층인 웹의 구현 1. Controller의 작성 ▷ 스프링 MVC의 Controller는 하나의 클래스 내에서 여러 메소드를 작성하고 @RequestMapping 등을 이용해 URL을 분기하는 구조로 작성할 수 있음 ▷ 하나의 클래스에서 필요한 만큼 메소드의 분기를 이용하는 구조로 작성 ▷ WAS(Tomcat)을 실행하지 않고 Controller 테스트할 수 있는 방법 학습 필요 (1) BoardController 분석 ▷ 작성 전 현재 원하는 기능 호출 방식에 대해 테이블로 정리한 후 코드를 작성하는 것이 좋음 From 항목은 해당 URL을 호출하기 위해서 별도의 입력화면이 필요하다는 것을 의미 2... 더보기
[코드로 배우는 스프링 웹 프로젝트] ch09 비즈니스 계층 ◎ 비즈니스 계층 ▷ 고객의 요구사항을 반영하는 계층, 프레젠테이션 계층과 영속 계층의 중간 다리 역할 ▷ 영속 계층은 데이터베이스 기준으로 해 설계를 나눠 구현하지만, 비즈니스 계층은 로직을 기준으로 처리 ◎ 쇼핑몰에서 상품 구매 예시 1. 쇼핑몰 로직이 '물건을 구매한 회원에게는 포인트 올려준다'고 하면 영속 계층의 설계는 '상품', '회원'으로 나누어 설계 2. 비즈니스 계층은 상품 영역, 회원 영역을 동시에 사용해서 하나의 로직 처리를 하므로 아래와 같은 구조 설계를 할 때는 원칙적으로 영역을 구분해서 작성해야 하며 일반적으로 비즈니스 영역에 있는 객체들은 '서비스'라는 용어 사용 1. 비즈니스 계층 설정 1. org.codehows.service 패키지 생성 2. 각 계층 간의 연결은 인터페이스.. 더보기
[코드로 배우는 스프링 웹 프로젝트] ch08 영속/비즈니스 계층의 CRUD 구현 2(create, read, update, delete) https://bobo12.tistory.com/297 2. 영속 영역의 CRUD 구현 ▷ 웹 프로젝트 구조에서 마지막 영역이 영속 영역이지만, 실제로 구현을 가장 먼저 할 수 있는 영역도 영속 영역 ▷ 기본적으로 CRUD 작업 하기 때문에 테이블과 VO(DTO) 등 약간의 준비만으로도 비즈니스 로직과 무관하게 CRUD 작업 가능 (1) Create(insert) 처리 ▷ tbl_board 테이블은 PK 칼럼으로 bno 이용, 시퀀스를 이용해 자동 데이터 추가시 번호가 만들어지는 방식 사용 ▷ 자동으로 데이터가 추가될 때 번호가 만들어지는 방식 사용 ▶ insert만 처리되고 생성된 PK 값을 알 필요가 없는 경우 ▶ insert문이 실행되고 생성된 PK 값을 알아야 하는 경우 ◎ BoardMapper .. 더보기

728x90
반응형