1) format을 이용한 날짜 출력하기 NOTICE 테이블의 regdate 컬럼을 보면 년/월/일 시:분:초로 이루어져있는 것을 볼 수 있다. 근데 위의 사진을 보면 데이터베이스에 있는 형식과 다르게 작성일이 년-월-일 형식으로 이루어진 것을 볼 수 있다. 이는 JSTL의 format을 이용한 것이다. 먼저 format을 사용하기 위해서는 아래의 taglib가 필요하다. 그러고나서 리스트(list.jsp)의 작성일 부분을 format을 사용하여 년-월-일 형식으로 지정해준다. 디테일(detali.jsp)의 작성일 부분은 날짜뿐만 아니라 시간까지 나오는 것이 더 좋다. 따라서 아래와 같이 format을 년-월-일 시:분:초 형식으로 지정해주면 된다. 작성일 2) format을 이용한 숫자 출력 형식 지정..
는 문자열을 지정한 구분자로 분리하여 하나씩 추출해주는 태그를 말한다. 글을 보면 첨부파일 목록이 있는 것을 확인할 수 있는데 이를 출력하고자 한다. ${fileName} , 위의 사진과 같이 데이터베이스에서 files가 ","를 기준으로 나누어져 있는 것을 확인할 수 있다. 그래서 forToken의 delims를 이용해서 "," 기준으로 파일 문자열을 구분했다. 이 이름을 fileName이라고 하고 하이퍼링크를 걸기 위해서 태그를 사용해주었다. 그러고나서 우리는 파일을 ","로 구분하고 싶어 위와 같이 코드를 작성했는데 실행 결과를 보니까 아래의 사진과 같이 마지막 파일 뒤에도 ","가 들어있는 것을 확인할 수 있다. 마지막 파일 뒤에는 ","를 포함하지 않게 하기 위해서 사용하는 것이 이다. ${fi..
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를 뜻하..
JSTL 아래의 코드는 이전 글에서 사용하던 View 페이지의 자바 코드이다. 이 반복문을 제거하기 위해서 사용하는 것이 JSTL이다. JSTL을 사용하기 위해서는 아래의 사이트에서 jar 파일을 다운받아야 한다. https://mvnrepository.com/artifact/javax.servlet/jstl/1.2 다운을 받았다면 JSP 파일 상단에 아래의 코드를 적어준다면 JSTL을 사용할 준비가 된 것이다. 이 코드는 길이가 긴 uri를 대신해서 c라는 식별자를 사용할 수 있도록 해주는 것인데 Jasper에게 서버에서 처리할 taglib임을 알 수 있게 해주는 역할을 한다. JSTL을 사용하여 자바 코드를 제거한다면 를 사용하면 된다. 는 List와 같은 배열 요소를 순서대로 반복해서 처리할 수 있..
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을 담당하는 데이터 클래스를 아래와 같이 생성한..
이때까지 앞에서 작성했던 코드들은 JAVA 코드와 HTML 코드가 군데 군데 흩어져 있어 찾기 힘들었다. 그래서 JAVA 코드는 JAVA 코드끼리 HTML 코드는 HTML 코드끼리 모으려고 한다. 그러기 위해서는 임시 변수를 이용해서 코드를 분리해줘야 한다. 코드를 나눠주는 Model과 Model을 사용해서 화면을 출력하는 View, 이 Model을 만들어내는 코드인 Controller로 이루어진 MVC 방식을 사용해보도록 하겠다. 앞에서 나눠져 있던 JAVA 코드와 HTML 코드를 한 곳에 모아서 가져와야 한다. 여기서 사용하고 있는 ResultSet은 아래의 HTML쪽 코드에서 사용할 수 없으므로 임시 변수 즉, 모델을 준비해주도록 한다. Model1 Model1은 JAVA 코드를 위쪽으로 옮겨 이를..
JDBC에서 데이터베이스 연결 하는 것을 공부한 적이 있었다. 데이터베이스와 JDBC 연결하기 참고 : 2023.03.14 - [강의 정리/JDBC] - 오라클 DB와 JDBC 연결하기 오라클 DB와 JDBC 연결하기 JDBC JDBC란 자바에서 데이터베이스를 연결하고 그 안에 있는 데이터를 가져오기 위해 사용하는 자바 API를 말한다. DB에는 Oracle뿐만 아니라 MY SQL 등 다양한 종류의 DB들이 있을텐데 이 DB에 접근하 myblog1128.tistory.com 2023.05.28 - [국비 지원/JDBC] - [JDBC] JDBC와 데이터베이스 연결하기 [JDBC] JDBC와 데이터베이스 연결하기 JDBC(Java DataBase Connectivity) 자바에서 데이터베이스와 연결하여 데..
모든 JSP 페이지에 한글 깨짐을 방지하기 위한 페이지 지시자를 등록해야 한다. 즉, 페이지 상단에 블록을 이용해서 UTF-8을 설정해야 한다는 것이다. 이에 대해서 자세히 알아보자. JSP를 누군가가 요청하게 되면 한글이 깨지게 된다. 왜냐하면 우리가 보기엔 HTML 형식으로 보이지만 실제로는 Servlet이기 때문이다. Jasper에 의해서 out.write()로 될 때 인코딩이 설정되어야 한다. 아래의 사진을 통해 확인해보자. 먼저 확장자가 html인 경우는 페이지 지시자가 없어도 한글이 깨지지 않고 잘 출력되는 것을 확인할 수 있다. 하지만 확장자가 jsp라면 페이지 지시자가 없다면 한글이 깨져서 잘 보이지 않는 것을 확인할 수 있다. 이 JSP 파일을 한글이 깨지지 않게하려면 페이지 상단에 페이..