분류 전체보기 297

스프링 웹 프로젝트 15

검색조건처리를 위한 Criteria 클래스 변경검색항목(type)과 검색 키워드(keyword) 추가package org.zerock.domain;import lombok.Getter;import lombok.Setter;import lombok.ToString;@Getter@Setter@ToStringpublic class Criteria { private int pageNum; // 페이지 private int amount; // 개수 private String type; // 검색 항복 private String keyword; // 키워드 public Criteria() { this(1,10); // 초기값 } public Criteria(int pageNum, int amount) { su..

organize/스프링 2025.01.14

스프링 웹 프로젝트 14

※ 외부 라이브러리는 footer에 작성하는 이유? 성능과 로딩 최적화 때문페이지 로딩 우선순위head에 스크립트를 넣으면 페이지 로딩이 완료되기 전에 자바스크립트가 먼저 로드되고 실행될 수 있음. 이는 스크립트가 다른 DOM 요소의 렌더링을 차단할 수 있기 때문에 페이지 로딩 속도를 늦출 수 있음. footer에 스크립트를 넣으면 HTML 문서의 주요 콘텐츠가 먼저 로드되고 표시된 후, 그 다음에 자바스크립트가 로드되기 때문에 사용자에게 빠른 콘텐츠 표시를 제공할 수 있음비동기적 로딩footer에 스크립트를 추가하면서 async나 defer 속성을 사용하면, 스크립트가 비동기적으로 로드되거나 DOM이 완전히 로드된 후 실행될 수 있음. 이로 인해 페이지 로딩 시간이 개선최소한의 차단적 렌더링페이지 번호..

organize/스프링 2025.01.13

스프링 웹 프로젝트 13

PK와 인덱스PK를 생성하면 자동으로 인덱스 생성인덱스를 이용하기 위한 힌트개발자의 의도를 힌트를 이용해서 전달힌트 구문은 잘못되어도 SQL 처리에 지장을 주지 않음여러 종류의 힌트가 존재 FULL/ INDEX_DESC, INDEX_ASC/*+ index_desc(tbl_board pk_board) */ 데이터를 더 추가한 후full 힌트index 힌트즉 데이터가 많아질수록 order by를 이용하기보다는 index를 이용 페이징 처리 → 오라클의 경우 다른 db와 다름, 좀 더 복잡함 → 실행계획에 따라서 어떻게 접근할지 결정됨※실행계획 : sql을 작성했을 때 데이터베이스에서 어떻게 처리할지 순서가 결정? rownum과 인덱스rownum 가상 테이터 같은 것(실제 데이터가 아님), 출력되면서 붙는 번..

organize/스프링 2025.01.12

스프링 웹 프로젝트 12

SQL Developer를 종료하고 다시 시작하고난 뒤 sql_board.nextval로 bno값을 증가시켰을 때 bno값이 마지막 번호에서 증가되지 않는 문제가 발생 → Oracle의 시퀀스는 기본적으로 캐시 기능을 사용하는데, 시퀀스에서 생성되는 값을 미리 메모리에 저장해두고, 그 값을 반환함. 세션 종료와 캐시 SQL Developer를 종료하고 다시 시작하면, 캐시된 시퀀스 값들이 세션 종료와 함께 소멸됨. 즉 SQL Developer 세션이 종료될 때 메모리에서 캐시된 값들이 사라지고, 새로 시작된 세션에서 시퀀스가 처음부터 새로운 값을 생성하기 시작함. 이 과정에서 이미 캐시된 값들이 사려졌기 때문에 시퀀스가 값을 건너뛰는 현상이 발생할 수 있음게시물 작업 이후 재전송게시물의 틍록, 수정, 삭..

organize/스프링 2025.01.11

스프링 웹 프로젝트 11

POST 방식 후 처리등록, 수정, 삭제의 최종 처리는 POST 방식을 이용브라우저에는 어떤 결과를 보여 줄 것인가? 1) 별도의 결과 페이지를 만들어서 보여주는 방식(ex, 회원가입 완료 페이지) 2) 목록 페이지로 이동하는 방식(ex, 목록 페이지에서 알림 메시지를 보여주는 방식)POST 방식 후에는 'redirect:/...'를 고려RedirectAttribute 사용 시기상황 GET 방식으로 입력페이지 /board/register POST 방식으로 입력 처리 /board/register 처리가 끝난 후 화면 이동을 해도 브라우저의 URL은 POST 방식 처리 URL 그대로 만일 브라우저를 새로고침 한다면? => 도배를 방지하기 위해'redirect:/...'를 이용해서 브라우저와 연결을 한 번 종..

organize/스프링 2025.01.09

스프링 웹 프로젝트 10

ex02에서 Tomcat으로 서버를 구동했을 때 아래와 같은 오류가 발생함.- 아 래 -org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'hikariConfig' defined in ServletContext resource [/WEB-INF/spring/root-context.xml]: Error setting property values; nested exception is org.springframework.beans.PropertyBatchUpdateException; nested PropertyAccessExceptions (1) are: PropertyAccessException 1: o..

organize/스프링 2025.01.08

스프링 웹 프로젝트 9

비즈니스 계층 구현비즈니스 계층(서비스 계층)고객의 요구사항을 반영하는 계층업무의 단위로 설계(트랜잭션의 단위)여러 개의 Mapper나 DAO를 사용하는 경우가 존재xxxService 형태로 작성서비스 패키지 설정인터페이스와 클래스를 설정하고, root-context.xml에 등록package org.zerock.service;import java.util.List;import org.zerock.domain.BoardVO;public interface BoardService { // 고객과 의사소통하는 용어로 작성 public void register(BoardVO boardVO); public BoardVO get(Long bno); public int modify(BoardVO boardVO);..

organize/스프링 2025.01.07

스프링 웹 프로젝트 8

게시물 등록(Create)insert와 selectkey 사용생성된 게시물의 번호를 사용하는지에 따른 구분insert만 처리되고 생성된 PK 값을 알 필요가 없는 경우insert문이 실행되고, 생성된 PK 값을 알아야 하는경우※ MyBatis를 사용할 때 #을 생각해야함. #은 getter나 setter로 생각insertpackage org.zerock.mapper;import java.util.List;import org.zerock.domain.BoardVO;public interface BoardMapper { List getList(); void insert(BoardVO boardVO); // 메서드 이름, 메서드 파라미터, 메서드 리턴 타입 순서로 생각을 함 } select * from ..

organize/스프링 2025.01.06

스프링 웹 프로젝트 7

각 영역의 네이밍 규칙xxController 스프링 MVC에서 동작하는 Controller 클래스xxService, xxServiceImpl 비즈니스 영역을 담당하는 인터페이스는 ~~Service라는 방식을 사용하고,인터페이스를 구현한 클래스는 ~~ServiceImpl이라는 이름을 사용xxDAO, xxRepositoryDAO(Data-Access-Object)나 Repository(저장소)라는 이름으로 영역을 따로 구성하는 것이 보편적VO, DTOVO의 경우 주로 ReadOnly의 목적이 강하고 데이터 자체도 불변하게 설계DTO는 주로 데이터 수집의 용도로 사용패키지 네이밍 규칙(ex. com.001cloudid).config : 프로젝트와 관련된 설정 클래스들의 보관 패키지.controller : 스프..

organize/스프링 2025.01.05

스프링 웹 프로젝트 6

파일업로드 처리Servlet 3.0 이후(Tomcat 7.0)에는 기본적으로 업로드 되는 파일을 처리할 수 있는 기능이 추가별로 commos-fileupload 라이브러리를 사용 commons-fileupload commons-fileupload 1.4※ 라이브러리를 다운로드 할 때는 가능하면 서버는 중지시킨 후 실시 파일 업로드를 위한 servlet-context.xmlmultipartResolver라는 이름으로 스프링 빈 설정 디렉토리 생성 파일 업로드를 위한 HTMLform 태그 내 enctype="multipart"SampleController @GetMapping("/exUpload") // 화면을 보는 것 기본 Get방식, 작업을 하는 것은 Post방식 pub..

organize/스프링 2025.01.04
728x90