Back-End/Spring Legacy
-
[3-ch15 Spring 게시판] 검색 조건 처리Back-End/Spring Legacy 2022. 8. 29. 20:57
part3 마무리하며 소스 코드는 github에서 참고바랍니다. https://github.com/ssowoni/Spring-Web-Board-Book GitHub - ssowoni/Spring-Web-Board-Book Contribute to ssowoni/Spring-Web-Board-Book development by creating an account on GitHub. github.com ch14의 페이징 처리에 사용했던 Criteria의 의도는 단순히 'pageNum'과 'amount'라는 파라미터를 수집하기 위해서이다. 페이징 처리에 검색 조건 처리가 들어가면 Criteria 역시 변화가 필요하다. ( Criteria는 '검색의 기준'을 의미한다. ) 검색 조건을 처리하기 위해서는 검색 조..
-
[3-ch15 Spring ] MyBatis의 동적 태그 ( if, choose, trim)와 LIKE 사용 방법Back-End/Spring Legacy 2022. 8. 29. 14:30
검색 기능과 SQL 게시물의 검색 기능은 아래와 같이 분류가 가능하다. - 제목/내용/작성자와 같이 단일 항목 검색 - 제목 or 내용 , 제목 or 작성자 ,,,, 같은 다중 항목 검색 단일 항목 검색과, 복합적인 항목으로 검색하는 방식이 존재한다. 게시물 검색에 있어 가장 중요한 부분은 SQL인데, 오라클은 페이징 처리에 인라인뷰를 이용하기 때문에 실제로 검색 조건에 대한 처리는 인라인뷰 내부에서 이루어져야 한다. 단일 항목에 경우 검색 조건에 따라서 칼럼이 달라지고 , LIKE 처리를 통해 키워드를 사용하게 된다. 만약 데이터를 '제목' 으로 하고 키워드를 '수정'으로 한다면 쿼리문은 다음과 같다. select bno, title, content from ( select /*+ INDEX_DESC(..
-
[3-ch14 Spring 게시판] view, 페이징의 화면 처리Back-End/Spring Legacy 2022. 8. 29. 12:35
URL 파라미터를 이용해 정상적으로 원하는 페이로 이동하는 것을 확인했다면, 화면 밑에 페이지 번호를 표시하고 사용자가 페이지 번호를 클릭하면 이동하도록 처리한다. 이번 포스팅은 아래와 같은 과정을 따른다. 1. 브라우저 주소창에 페이지 번호를 전달해서 결과를 확인하는 단계 2. JSP에서 페이지 번호를 출력하는 단계 3. 각 페이지 번호에 클릭 이벤트 처리 4. 전체 데이터 개수를 반영해서 페이지 번호 조절 페이징 처리를 하기 위해선 현재 페이지 번호 (page), 이전 과 다음으로 이동 가능한 링크의 표시 여부(prev, next), 화면에서 보여지는 페이지의 시작 번호와 끝 번호(startPage, endPage) 와 같은 정보들이 필요하다. 끝 페이지 번호와 시작 페이지 번호 페이징 처리를 하기 ..
-
[Spring] RedirectAttributes 과 Model 알아보기Back-End/Spring Legacy 2022. 8. 29. 12:23
서론 form 형식의 문서를 작성한 후, 서버로 보내면 (POST 방식) 곧 이어 다른 페이지로 리다이렉트한다. redirect 방식은 Get 방식이라 데이터 전송에는 적절하지 않다, 리다이렉트가 발생하면 원래 요청은 끊어지고, 새로은 HTTP GET요청이 시작된다. 때문에 리타이렉트 실행 이전 수행된 모델 데이터는 소멸한다. 따라서 리다이렉트로 모델을 전달하는 것은 의미가 없다. RedirectAttributes 그러나, redirect로 데이터를 전달하는 방법이 있는데, GET의 특징을 사용하는 것이다. GET 방식은 header에 ? 뒤에 파라미터를 붙여서 전달한다. 때문에 url 노출되는 단점이 있다. 그래서 스프링은 RedirectAttributes 클래스를 제공한다. RedirectAttrib..
-
[3-ch13 게시판] MyBatis와 스프링에서 페이징 처리하기Back-End/Spring Legacy 2022. 8. 28. 11:36
이전 포스팅에서 힌트(hint)와 ROWNUM, 인라인뷰를 사용해서 원하는 값을 추출하는 방법을 알아봤다. 그렇다면 직접 웹 페이지에 적용하기 위해 MyBatis에 적용하는 법을 알아보려 한다. 페이징 처리 관련 내용은 아래 링크 클릭! https://wonisdaily.tistory.com/62 [3-ch12 Spring web 게시판] 페이징 처리, 힌트(hint), ROWNUM & 인라인뷰 적용 order by의 문제 데이터의 양이 많을수록 정렬이라는 작업은 많은 리소스를 소모한다. 데이터베이스를 이용할 때 웹이나 애플리케이션에서 가장 신경쓰는 부분은 1) 빠르게 처리되는 것, 2) 필요한 wonisdaily.tistory.com MyBatis는 SQL을 그대로 사용할 수 있기 때문에 인라인 뷰를 ..
-
[3-ch12 Spring web 게시판] 페이징 처리, 힌트(hint), ROWNUM & 인라인뷰 적용Back-End/Spring Legacy 2022. 8. 28. 09:51
order by의 문제 데이터의 양이 많을수록 정렬이라는 작업은 많은 리소스를 소모한다. 데이터베이스를 이용할 때 웹이나 애플리케이션에서 가장 신경쓰는 부분은 1) 빠르게 처리되는 것, 2) 필요한 양만큼만 데이터를 가져오는 것이다. 예를들어, 거의 모든 웹페이지에서 페이징을 하는 이유는 최소한의 필요한 데이터만을 가져와 빠르게 화면에 보여주기 위함이다. 만일 수백 만개의 데이터를 매번 정렬해야 하는 상황이라면 사용자는 정렬된 결과를 볼 때까지 오랜 시간을 기다려야만 하고, 특히 웹에서 동시에 여러 명의 사용자가 정렬이 필요한 데이터를 요청하게 된다면 시스템에는 많은 부하가 걸리게 되고 연결 가능한 커넥션의 개수가 점점 줄어서 서비스가 멈추는 상황을 초래하게 된다. 실행 계획과 order by 오라클의 ..
-
[3-ch11 Spring view] 게시글 조회, 수정/삭제, 뒤로가기 처리Back-End/Spring Legacy 2022. 8. 26. 16:21
조회 페이지 작성 조회 페이지는 입력 페이지와 거의 유사하지만 게시물의 번호(bno)가 출력된다는 점과 모든 데이터가 읽기 전용으로 처리된다는 점이 가장 큰 차이점이다. 목록 페이지에서 링크를 통해 GET 방식으로 특정 번호의 게시물을 조회할 수 있다. @GetMapping("/get") public void get(@RequestParam("bno") Long bno, Model model) { log.info("get" ); model.addAttribute("board", service.get(bno)); } get.jsp는 게시물의 번호를 보여줄 수 있는 필드를 추가한다. 모든 데이터는 readonly를 지정해서 작성한다. 특정 게시글 조회 페이지에선 데이터를 전송할 일이 없기에 form 태그를 ..
-
[3-ch11 Spring view] 게시판 목록, 등록 jsp 화면 처리하기, jQuery 통해 Modal 창 띄우기Back-End/Spring Legacy 2022. 8. 24. 16:46
화면 처리 템플릿 화면을 개발하기 전에는 반드시 전체 레이아웃이나 디자인이 반영된 상태에서 개발하는 것을 추천한다. 웹 디자이너가 같이 참여하지 못한다면 BootStrap을 이용한 무료 디자인을 찾아보는 것도 좋다. 오늘 포스팅할 페이지들은 모두 아래 파일을 베이스로 잡아두었다. 목록 페이지 작업과 includes 스프링 MVC의 JSP를 처리하는 설정을 servlet-context.xml에 아래와 같이 작성되어 있다. 스프링 MVC의 설정에서 화면 설정은 ViewResolver라는 객체를 통해 이뤄지는데, 위의 설정을 보면 '/WEB-INF/viesws'를 이용하는 것을 볼 수 있다. WEB-INF 경로는 브라우저에서 직접 접근할 수 없는 경로이므로 반드시 Controller를 이용하는 모델 2방식에서..