pager 번호를 생성하기 위해서는 page의 시작하는 번호가 있어야 한다. 위의 사진과 같이 5page를 단위로 잡고 3page를 요청을 했다면 1, 2, 3, 4, 5 page 번호가 나와야 한다. 이를 공식화한다면 "시작하는 번호 = page - (page - 1) % 5"로 할 수 있다. ${startNum+i } page를 5번 반복해서 출력하기 위해 forEach 태그를 사용하여 0부터 4까지 5번 반복한다. 0부터 시작했으므로 1부터 시작하기 위해서 1을 더해줘야 한다. 그래서 처음에 page를 i+1로 줄 수 있다. 이때 위에서 정의한 공식을 startNum이라는 임시 변수로 생성해주었기 때문에 1을 startNum으로 대체할 수 있다. 그리고 page 변수는 파라미터로 전달되는 p를 뜻하..
EL(Expression Language) 기존에 사용하던 자바 코드 블럭인 를 ${ } 형식으로 더 간편하게 사용할 수 있도록 도와주는 것을 말한다. 기존에는 getAttribute를 사용해서 값을 꺼내고 태그를 사용해서 값을 출력했었다. ${num} 위의 코드와 같이 EL을 사용하면 값을 꺼내서 출력까지 한 번에 가능하다. JSTL(JSP Standard Tag Library) 자신만의 태그를 추가할 수 있는 기능으로 사용하기 위해서 JSTL 메이븐 리포지토리가 필요하므로 아래의 사이트에서 jar 파일을 다운받아야 한다. https://mvnrepository.com/artifact/javax.servlet/jstl/1.2 그러고나서 JSP 파일 상단에 아래의 코드를 작성해주면 해당 uri를 대신해서..
JSTL 아래의 코드는 이전 글에서 사용하던 View 페이지의 자바 코드이다. 이 반복문을 제거하기 위해서 사용하는 것이 JSTL이다. JSTL을 사용하기 위해서는 아래의 사이트에서 jar 파일을 다운받아야 한다. https://mvnrepository.com/artifact/javax.servlet/jstl/1.2 다운을 받았다면 JSP 파일 상단에 아래의 코드를 적어준다면 JSTL을 사용할 준비가 된 것이다. 이 코드는 길이가 긴 uri를 대신해서 c라는 식별자를 사용할 수 있도록 해주는 것인데 Jasper에게 서버에서 처리할 taglib임을 알 수 있게 해주는 역할을 한다. JSTL을 사용하여 자바 코드를 제거한다면 를 사용하면 된다. 는 List와 같은 배열 요소를 순서대로 반복해서 처리할 수 있..
Visual Studio Code에서 HTML 파일을 Open With Live Server를 했을 때 발생하는 오류이다. 해결방법 1. EXTENSIONS에서 Live Server 열기 2. 설정에서 Extension Settings 선택 3. Use Local Ip 부분 체크박스 체크해주기 위의 설정을 해주고나서 다시 실행한다면 정상적으로 실행되는 것을 확인할 수 있다.
CREATE TABLESPACE spring datafile 'c:/oracle/data/spring.dbf' SIZE 500m; 위의 코드와 같이 테이블스페이스를 생성할 때 발생하는 오류이다. 해결방법 원인은 서브 디렉토리가 없는데 테이블 스페이스를 생성하려고 했기 때문에 발생하는 에러이다. 파일 탐색기로 먼저 oracle 폴더 아래 data 폴더를 만든 후에 테이블 스페이스를 생성하면 된다. 위에 말한 것처럼 파일 탐색기로 서브 디렉토리를 생성해주었다면 정상적으로 실행되는 것을 확인할 수 있다.
CREATE USER bbs_user IDENTIFIED BY bbs_user DEFAULT tablespace USERS; 오라클 12c 버전에서 위의 코드와 같이 사용자 생성 할 때 발생한 오류이다. 해결방법 위와 같은 오류가 발생한 이유는 우리가 설치한 오라클 데이터베이스에 있다. 오라클 12c 버전부터 사용자 생성시 관리자 그룹과 일반 사용자 그룹으로 나누어진다. 오라클 11g 버전에서는 오류가 발생하지 않으나 현재 오라클에서 단종되었기 때문에 12c 버전에서 이를 해결하려면 사용자 생성 전에 먼저 호환 모드를 설정해줘야 한다. 호환 모드 설정하기 ALTER SESSION SET "_ORACLE_SCRIPT"=TRUE;
Model 데이터 구조화하기 이전 글을 보면 아래의 코드와 같이 데이터가 구조화되지 않아서 반복되는 코드가 많아지고 데이터를 구분하기 어려워진다. // NoticeDetailController.class req.setAttribute("title", title); req.setAttribute("regDate", regDate); req.setAttribute("writer_id", writer_id); req.setAttribute("hit", hit); req.setAttribute("files", files); req.setAttribute("content", content); 그래서 Model 데이터를 위한 구조화된 방법을 사용하고자 한다. Model을 담당하는 데이터 클래스를 아래와 같이 생성한..