본문 바로가기

Spring/게시판프로젝트17

[Spring] 게시판 프로젝트17 - 검색기능2 (화면 처리) 검색기능2 게시물과 이어지는 내용입니다. [Spring] 게시판 프로젝트16 - 검색기능1 (MyBatis처리) SQL작성 오라클의 검색 조건에 대한 처리는 인라인 뷰 내부에서 이루어진다. 기존의 list출력 쿼리에서 검색한 내용만을 출력하게끔 쿼리를 변경해보면 아래처럼 작성할 수 있을 것이다. (아래의 taetoungs-branch.tistory.com 검색기능 화면처리 검색 기능을 붙일 위치에 아래의 코드를 넣어준다. list.jsp -- 제목 내용 작성자 검색 난 리스트와 페이징 사이에 검색기능을 넣어주었다. mapper 처리를 완료하였기 때문에 실제로 검색 기능이 동작한다. 작성자에 '태옹'을 검색해보니 url에 /board/list?type=W&keyword=태옹&pageNum=1&amount=.. 2021. 8. 10.
[Spring] 게시판 프로젝트16 - 검색기능1 (MyBatis처리) SQL작성 오라클의 검색 조건에 대한 처리는 인라인 뷰 내부에서 이루어진다. 기존의 list출력 쿼리에서 검색한 내용만을 출력하게끔 쿼리를 변경해보면 아래처럼 작성할 수 있을 것이다. (아래의 쿼리는 페이징처리가 포함된 쿼리이다.) select * from ( select /*+ INDEX_DESC(tbl_board tbl_board_pk) */ rownum rn, bno, title, content, writer, regdate, updatedate from tbl_board where title like '%테스트%' or content like '%테스트%' and rownum 10; 그러나 결과를 출력해보면 10개의 데이터가 아닌 더 많은 데이터를 출력함을 알 수 있다. 왜냐하면 AND연산이 OR.. 2021. 8. 8.
[Spring] 게시판 프로젝트15 - 페이징 처리3 페이징 처리2 게시물과 이어지는 내용입니다. 2021.07.20 - [Spring/게시판프로젝트] - [Spring] 게시판 프로젝트14 - 페이징 처리2 [Spring] 게시판 프로젝트14 - 페이징 처리2 페이징 처리1 게시물과 이어지는 내용입니다. 2021.07.20 - [Spring/게시판프로젝트] - [Spring] 게시판 프로젝트13 - 페이징 처리1 [Spring] 게시판 프로젝트13 - 페이징 처리1 프로젝트용으로 데이터가 그렇 taetoungs-branch.tistory.com 그리고 get페이지의 목록 버튼은 사실상 뒤로가기와 의미가 같아서 그냥 삭제했다. 이번 게시물에서는 삭제되었을 때 페이지 정보가 같이 이동하도록 처리해보겠다. 수정 페이지에서 삭제 버튼을 눌러 게시글을 삭제하게되면.. 2021. 8. 7.
[Spring] 게시판 프로젝트14 - 페이징 처리2 페이징 처리1 게시물과 이어지는 내용입니다. 2021.07.20 - [Spring/게시판프로젝트] - [Spring] 게시판 프로젝트13 - 페이징 처리1 [Spring] 게시판 프로젝트13 - 페이징 처리1 프로젝트용으로 데이터가 그렇게 많지 않기 때문에 페이징 처리에 고려하지 않을 수도 있지만 실 서비스에서는 대량의 데이터 조회를 위해 페이징 처리가 필수적이다. 이번 실습에서는 게시판 taetoungs-branch.tistory.com 이제 페이징 처리를 화면에서 보여주는 작업을 해볼 것이다💁‍♀️ 페이징 화면 처리 시에 필요한 정보들은 다음과 같다. - 현재 페이지 번호 (page) - 이전 링크 표시 여부 (prev) - 다음 링크 표시 여부 (next) - 화면에 보이는 시작 번호 (startP.. 2021. 7. 20.
[Spring] 게시판 프로젝트13 - 페이징 처리1 프로젝트용으로 데이터가 그렇게 많지 않기 때문에 페이징 처리를 고려하지 않을 수도 있지만 실 서비스에서는 대량의 데이터 조회를 위해 페이징 처리가 필수적이다. 이번 실습에서는 게시판에 페이징 처리를 해볼 것이다. 페이징 처리를 위한 sql쿼리를 작성할 때 hint에 대해서 이해할 필요가 있으니, 아래의 게시물에서 먼저 실행계획과 hint를 이해하고 진행하는 것을 권장한다. 2021.07.20 - [Database] - [Oracle] 실행 계획(Execution plan)과 hint사용의 필요성 [Oracle] 실행 계획(Execution plan)과 hint사용의 필요성 스프링 개발을 하면서 이제 페이징 처리 단계에 다다랐는데, 페이징 처리는 SQL쿼리 작성에 대해 신중히 생각해볼 필요성이 있다. 일반.. 2021. 7. 20.
[Spring] 게시판 프로젝트12 - 게시물 수정, 삭제 게시물 등록 과정에서 우리는 처음 등록페이지를 들어갈 때는 get, 입력폼을 작성하여 등록 버튼을 눌렀을 때는 post방식을 사용하였다. 아래의 컨트롤러 코드를 보면 확인할 수 있다. (기존에 작성했던 코드임) BoardController.java //게시물 등록 화면 @GetMapping("/register") public void registerGET() { } //실제로 게시물을 등록하는 경우 @PostMapping("/register") // 글을 등록하는 경우에는 get방식이 아니라 post방식을 사용한다. public String register(BoardVO board, RedirectAttributes rttr) { // RedirectAttributes : log.info("[CONTRO.. 2021. 7. 14.
[Spring] 게시판 프로젝트11 - detail페이지로 이동(+history.state제어) 리스트에서 특정 게시물을 선택해서 세부 내용을 조회하고 싶은 경우에는 get방식을 사용한다. get방식으로 bno(pk)값을 넘겨주기 위해서는 아래의 코드를 수정해야한다. 해당 코드는 단순히 bno값을 조회하는 부분이다. bno부분을 눌렀을 때 디테일 페이지로 이동하도록 a태그를 붙여준다. 코드를 보면 부분은 결과적으로 숫자값이기 때문에 get방식으로 붙여주었다. (url의 get은 페이지 이름이다.) 우린 이전 실습에서 컨트롤러에 /get을 정의해주었다. 미리 작업을 해두었기 때문에 a태그로 연결만 해도 디테일 페이지로 이동이 가능하다. @GetMapping("/get") public void get(@RequestParam("bno") Long bno, Model model) { model.addAt.. 2021. 7. 13.
[Spring] 게시판 프로젝트10 - Redirect 처리 (addFlashAttribute) Redirect : 등록 과정에서 post방식으로 데이터가 처리되는 과정 우리가 일반적으로 사용하는 웹페이지(게시판)에서 동작하는 방식은 대부분 아래와 동일하다. 게시물 등록 페이지에서 form을 작성하여 전송버튼을 누르면 입력된 항목들이 BoardController에 전달된다. 컨트롤러는 /boards/list로 Redirect시킨다. 브라우저가 다시 컨트롤러에 /list를 호출하면 컨트롤러는 /list에 매핑된 메소드가 정의한 내용대로 목록 페이지를 브라우저에 띄운다. 이 때 우리가 게시물을 등록하고 전송버튼을 누르면 목록페이지로 자동으로 이동하는 것이 Redirect이다. 물론 이 Redirect는 등록 뿐만아니라 수정, 삭제의 경우에도 사용한다. redirect시에 데이터를 전달할 수 있는 방법으.. 2021. 7. 13.
[Spring] 게시판 프로젝트9 - 게시물 등록(+한글 깨짐 필터 설정) 📌 게시물 등록을 위한 작업 1. GET방식으로 게시물 등록 화면 제공 2. POST방식으로 실제 게시물 등록 처리 3. 이후 목록 페이지로 이동(Redirect) 이전 게시물에서 등록하는 경우 post mapping을 사용한 컨트롤러를 이용했었다. 그러나 실제 웹페이지로 게시물을 등록하는 경우에는 게시물 등록을 위한 페이지가 필요하다. 그러므로 기존의 post방식과 다르게 등록 화면을 보여줄 get mapping 메소드를 추가해야 한다. //게시물 등록 화면(추가된 부분) @GetMapping("/register") public void registerGET() { } //실제로 게시물을 등록하는 경우(원래 있던 코드) @PostMapping("/register") // 글을 등록하는 경우에는 get방.. 2021. 7. 12.
[Spring] 게시판 프로젝트8 - JSTL을 이용한 게시물 목록 조회 실습 템플릿을 따라서 사용하는 경우라면 jQuery의 버전을 변경해주는 것이 좋다. (템플릿의 jQuery버전은 낮음) 더보기 아래의 링크를 타고 접속해서 웹 CDN으로 추가해준다. 실습에서는 jQuery 3.x 버전의 minified를 사용하였다. jQuery CDN The integrity and crossorigin attributes are used for Subresource Integrity (SRI) checking. This allows browsers to ensure that resources hosted on third-party servers have not been tampered with. Use of SRI is recommended as a best-practice, when.. 2021. 7. 12.
[Spring] 게시판 프로젝트7 - 화면 처리(정적파일 적용, include지시자) 화면처리는 bootstrap을 이용하여 프론트 개발 시간을 단축한다. https://getbootstrap.com/ Bootstrap The most popular HTML, CSS, and JS library in the world. getbootstrap.com 원하는 템플릿을 다운받아서 진행해도 무관함! 교재에서는 아래의 템플릿을 사용했기 때문에 실습에서도 이 템플릿으로 진행한다. 이 위치에 다음 파일들을 붙여넣는다. 📌 스프링MVC의 JSP를 처리하는 설정은 servlet-context.xml에 작성되어있다. 화면 설정은 ViewResolver라는 객체를 통해서 이루어지는데, '/WEB-INF/views'폴더를 이용하는 것을 볼 수 있다. 정적 파일 적용하기 /WEB-INF/views/에 boar.. 2021. 7. 6.
[Spring] 게시판 프로젝트6 - Presentation계층 구현 Presentation계층에서 Controller를 작성하기 전에 url설계부터 진행함 리스트 조회(List) 처리 과정 1. BoardController.java 생성 package com.taeong.controller; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import com.taeong.service.BoardService; import lombok.AllArgsCo.. 2021. 7. 4.
[Spring] 게시판 프로젝트5 - Business 계층 구현 Business계층 - 고객의 요구사항을 반영하는 계층 - 업무의 로직을 단위로 설계함 (트랜잭션 단위로 반영) - 여러개의 Mapper나 DAO를 사용하는 경우가 존재함 - xxxService의 형태로 작성 예를 들어 Persistence tier(영속 계층)에서 '상품'과 '회원'을 VO로 만들어서 관리를 한다면 이를 동시에 이용해야하는 '구매 서비스'는 Business tier(서비스 계층)으로 분류하게 된다. 서비스 패키지 설정 service패키지 먼저 생성해주고 인터페이스(BoardService.java)와 클래스(BoardServiceImpl.java)를 추가한다. (참고로 인터페이스인 경우에 아이콘 위에 I 표시가 붙어있음) 서비스 계층 구현 1. BoardService.java 인터페이스에.. 2021. 7. 4.
[Spring] 게시판 프로젝트4 - Persistence 계층 구현 (insert,delete,update) 게시물 등록 - insert 1. BoardMapper.java에 메소드 추가 package com.taeong.mapper; import java.util.List; import com.taeong.domain.BoardVO; public interface BoardMapper { public List getList(); // 아래 insert메소드들 추가 public void insert(BoardVO board); public void insertSelectKey(BoardVO board); } insert() : 단순히 시퀀스의 다음 값을 구해서 insert할 때 사용 insertSelectKey() : @SelectKey라는 MyBatis의 어노테이션을 사용 @SelectKey는 주로 PK값을 .. 2021. 7. 3.
[Spring] 게시판 프로젝트3 - Persistence 계층 구현 (select) 1. boardpro 유저에 접속하여 tbl_board 테이블 생성 작업을 진행 create sequence seq_board; create table tbl_board( bno number(10,0), title varchar2(200) not null, content varchar2(2000) not null, writer varchar2(50) not null, regdate date default sysdate, updatedate date default sysdate ); alter table tbl_board add constraint pk_board primary key(bno); seq_board : 일련번호를 위한 sequence tbl_board : 게시물 저장을 위한 테이블 pk : .. 2021. 7. 2.