JSP 11

Servlet/JSP 답변형 게시판 만들기 - 페이징

페이징 구성 화면으로부터 페이지 번호와 몇 개의 게시물을 볼 것인지(기본1, 10) 데이터를 받는다. 컨트롤러는 페이징 하는 서비스 메서드를 호출한다. 화면에서 받은 페이지 데이터를 인자로 입력한다. 요청 받은 페이지의 게시물을 DB에 조회한다. 게시물 개수가 100개가 넘고, 현재 조회하고 있는 페이지에서 '이전 페이지'버튼이 활성화 되어야 하는지 '다음 페이지'버튼이 활성화되어 있어야 하는지 연산해서 화면으로 데이터를 보낸다. 화면은 전달 받은 데이터를 띄우고, next, prev 버튼 사용 여부를 결정한다. SQL 우선 limit을 이용해 페이징 쿼리를 만든다. limit 0, 10은 1페이지 limit 10, 10은 2페이지 limit 20, 10은 3페이지 limit..

Servlet/JSP 답변형 게시판 만들기 - 게시글 삭제

com.test.dao.BoardDAOTest @Test public void deleteTest() throws ClassNotFoundException { Class.forName(DRIVER); String sql = "DELETE FROM t_board WHERE bno = ?"; log.info(sql); try( Connection conn = DriverManager.getConnection(URL,USER,PW); PreparedStatement pstmt = conn.prepareStatement(sql); ) { assertNotNull(conn); pstmt.setInt(1, 44); assertTrue(pstmt.executeUpdate()==1); } catch(Exception ..

Servlet/JSP 답변형 게시판 만들기 - 수정

com.test.dao.BoardDAOTest 테스트 코드 @Test public void updateTest() throws ClassNotFoundException { Class.forName(DRIVER); String sql = "UPDATE t_board " + " set title = ?, content= ?" + " where bno = ?"; log.info(sql); try( Connection conn = DriverManager.getConnection(URL,USER,PW); PreparedStatement pstmt = conn.prepareStatement(sql); ) { pstmt.setString(1, "update"); pstmt.setString(2, "con...ten..

Servlet/JSP 답변형 게시판 만들기 - 조회

com.test.BoardDAO @Test public void getPostTest() throws ClassNotFoundException { Class.forName(DRIVER); String sql = "SELECT * FROM t_board" +" WHERE bno > 0 AND bno = ?"; log.info(sql); try( Connection conn = DriverManager.getConnection(URL,USER,PW); PreparedStatement pstmt = conn.prepareStatement(sql); ) { pstmt.setInt(1, 7); ResultSet rs = pstmt.executeQuery(); assertNotNull(rs); rs.next(); ..

게시글 목록

Servlet/JSP 답변형 게시판 만들기 - 게시글 목록 개발 순서 VO DAO 테스트 DAO Service Controller View com.coco.vo.BoardVO 테이블 이름과 동일하게 변수를 선언한다. public class BoardVO { private int bno; private int p_bno, level; //level은 답글의 개수다. private String title, content, imgName, id; private Date regdate; ...Getter Setter toString 생성자 생략... level은 답글의 개수를 나타내는 칼럼이다. 실제로 존재하지 않는 컬럼이지만 쿼리로 직접 만들어서 쓴다. com.test.dao.BoardDAOTest 게시물 목..

구조 및 세팅

1. 구조 모델2 방식인 MVC구조로 만들 것이다. 컨트롤러와 DAO 사이에 왜 Service가 필요할까? 트랜잭션Transaction 때문이다. 조승우가 자주 가는 커뮤티니 사이트를 예로 들어보자. 조승우는 커뮤니티 사이트에서 '비밀의 숲2 기대된다 토요일 첫 방!!'이라는 게시물을 조회하려고 한다. 현재 조회수는 3944. 조승우가 게시물을 클릭해서 조회페이지로 이동하면 조회수가 3945가 되어야 한다. 그러니까 조회하는 쿼리와, 조회수를 증가시키는 쿼리를 동시에 처리해야 한다는 것이다. 만약 이 두 가지가 따로 동작한다고 해보자. 그러면 (아주 짧은 찰나겠지만) 아직 조회 전인데 조회수가 1이 증가하거나, 이미 조회했는데 조회수가 그대로일 것이다. 이런 일이 발생하지 않도록 두 개 이..

Model2 - MVC

모델 ? 어떤 일이든 주로 사용하는 방식이 있다. 그들만의 룰. 우리는 '표준'이라고 한다. 웹 개발도 마찬가지다. 꼭 그래야만 할 필요는 없지만 웬만하면 이런 구조로 만들자, 고 하는 '표준'이 있다. 이것을 모델이라고 한다. Model1 비즈니스 로직과 화면 처리를 하나의 JSP가 모두 처리하는 것이 모델1 방식이다. 그러니까 지금까지는 one.jsp는 브라우저의 요청을 받아서 비즈니스 로직을 수행한 뒤, 다시 화면까지 처리하는 구조였다. 모델1 방식의 장점이라면 구현이 쉽고 편하다는 것이다. 그러나 화면이 복잡해지면 화면 처리와 비즈니스 로직이 섞일 위험이 있다. 그럼 붕괴된 도로처럼 유지 보수하기가 힘들어진다. Model2 모델2 방식의 핵심은 클라이언트의 요청/응답 처리, 비즈니스 로직 처리를 ..

Servlet-JSP 2020.09.11

JSTL

JSTL(JSP Standard Tag Library) EL이나 액션 태그를 이용해도 여전히 자바 코드를 사용할 수밖에 없는 상황이 있다. 이를테면 반복문이나 조건문 같은 것을 쓸 때. 이것을 제거하기 위해 커스텀 태그가 등장했다. 커스텀 태그는 자바 코드를 대체하기 위해 만든 태그다. JSTL은 커스텀 태그의 한 종류다. JSTL 라이브러리 설정 우선 사용하기 위해서 라이브러리를 설치해야 한다. 링크 초록색 테두리 안에 네 개의 라이브러리를 받는다. WebContent - WEB-INF - lib 안에 다운 받은 라이브러리를 넣는다. 라고 고쳐써야 한다. JSTL의 태그 종류 라이브러리 세부 기능 접두어 관련 URL 코어 변수지원, 흐름제어, 반복문, URL처리 c http://java.sun.com/..

Servlet-JSP 2020.09.11

표현언어(EL, Expression Language)

표현언어 EL 액션태그에 이어서 JSP에서 자바 코드를 없애려는 노력은 계속되었다. EL은 좀 더 편리하게 자바 표현식을 다루기 위해 JSP2.0부터 도입되었다. 데이터를 출력하는 역할을 한다. 특징 기존 표현식보다 편리하게 값을 출력한다. 변수와 여러 연산자를 포함할 수 있다. JSP 내장 객체에 저장된 속성 및 자바 빈 속성도 출력할 수 있다. EL 자체 내장 객체를 제공한다. JSP 생성 시 기본 설정으로는 EL을 사용할 수 없다. 페이지 디렉티브 태그에서 반드시 isELIgnored=false로 설정해야 한다. 형식 ${표현식 또는 값} ${1+1 == 2 ? "hello" : "world"} ${number} EL의 자료형과 연산자 자료형 boolean 정수 실수 문자열('', "..

Servlet-JSP 2020.09.11

액션 태그

액션 태그 JSP는 비즈니스 로직과 화면 개발을 분리하려는 목적으로 개발되었다. 그러나 여전히 스크립트릿같은 녀석들이 HTML 영역을 침범했다. 방역하고 방역해도 죽지 않는 코로나처럼. 죽일 순 없으니 마스크라도 쓰자...는 마음으로 만들어진 것이 액션 태그다. 인클루드 액션 태그 jsp:include... 파라미터 인자로 받는 이미지 파일 이름을 읽어서 화면에 나타내는 jsp를 만든다. 1에서 만든 jsp를 다른 jsp들이 include 태그를 이용하여 재사용한다. 이런 방식의 장점은 자바 코드를 한 번만 쓰면, 남은 페이지에서 자바 코드를 쓸 일이 없다는 것이다. 1번 jsp 이름은 자바코드 없이 include태그로 1번을 재사용하는 jsp 폐허한 지구의 두 친구 폐허한 지구 만약 한글 이름을 전달하..

Servlet-JSP 2020.09.11