ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • JSP 서블릿으로 자세한 페이지 구현하기
    Servlet-JSP 2022. 2. 8. 19:17

    **유튜브 뉴렉쳐님의 강의를 들으면서 공부하고 정리한 내용입니다.

     

    자세한 페이지란 글목록에서 특정 글 하나를 클릭 했을 때 그 해당글의 페이지로 열리는 것을 구현 해 볼 것이다.

    자세한 페이지를 구현 할 때에는 주소창이 

    이런식으로 구현되게 할 것이다. 

    ?뒤에 id에 쿼리값을 넣어서 전달받은 id 값에 따라서 글 목록이 나올 수 있도록 구현 할 것이다.

     

    이 id값이 전달이 되지 않으면 글 목록이 에러가 나게 될 것인데 

    이 id값을 심는 것부터 알아보고 자세한 페이지를 구현해보도록 하자.

     

    td부분이 게시글의 제목 부분이고 a태그를 누르면 해당 페이지로 넘어가게 되는데 html로 되어 있는 확장자를jsp로 바꿔 줄 것이다.

    그리고 쿼리스트링을 전달하기 위해 ?를 작성 해 준 다음 가져 올 값을 대입해주면 되는데 특정 값을 대입 해 주게 되면 while문이 돌아가는 동안 모든 값이 9로 바뀔 것이다. 근데 우리는 할당받은 id값을 가져 올 것이기 때문에 코드블럭에 <%=rs.getInt("ID")%> 해 준 것을 대입 해 주도록 하자 

    이렇게 넣어 줄 것이다. 근데 이러면 괄호가 조금 복잡하게 느껴진다. 

    일단 이렇게 하고 페이지를 실행 해 보고 게시글에 마우스를 가져다 대면 

    마우스를 올려 둔 게시물 마다 ID 값이 다르게 뜨는걸 좌측 하단을 보면 알 수 있다.

     

    첫번때 ID 2의 게시글을 클릭하면

    아직 DETAIL파일이 없어서 에러가 나는것을 확인 할 수 있다.

    DATAIL 파일을 구현하고 넘겨받은 ID를 이용해서 ID에 해당하는 게시글을 볼 수 있도록 해 보자 

     

    이클립스로 돌아와서 NOTICE->DETAIL파일을 복사 붙여넣기해서 HTML인 확장자를 JSP로 고쳐서 붙여넣기 해 준다.

    만약 저 jsp 파일을 열었을 때 한글이 깨진다면 alt+enter 후 인코딩 방식을 UTF-8로 바꾸어 준다.

     

    그리고 맨 위에 한글이 깨지지 않도록 지시자를 설정 해 준다.

    이렇게.

    그럼 다시 LIST.JSP에서 실행을 해서 아까 그 게시글을 눌러보면

    ID=2의 주소창이 나오는것을 확인 할 수 있다. 근데 문제는 모든 페이지의 내용이 같게 출력이 된다 이것을 바꿔보도록 하자.

     

    그럼 이 전 시간에 했던 것처럼 JDBC에 연결 할 수 있는 코드블럭들을 입력 해 주는데 달라진 점이 있다면

    코드블럭에서 notice의 모든 목록을 다 가져오는것이 아니라 where절을 주어서 특정 id에 대해서 값을 가져온다고 작성 해 줘야 한다. 

    이제 저 ? 부분에 채워야 할 값이 뭐냐면 쿼리값에 있는 id값인데 id 값을 넘겨 받을 수 있도록 코드를 하나 더 작성 해 주어야한다.

     

    꽂아넣을때에는 여러 방법이 있는데 

    "SELECT * FROM NOTICE WHERE ID ="+ ID이렇게 하는 방법도 있지만 우리는 이렇게 하지 않고 

    ? 값을 채워 줄 수 있는 STATEMENT인 preparedStatement를 사용 해 줄 것이다. 

    sql 쿼리문을 넘겨받아서 미리 준비해둔 쿼리문을 실행해주게 된다. 그래서 밑에 resultSet에서는 sql을 빼준다. 

    미리 준비한다는것은 저 ? 를 말한다.

     

    그럼 실행 된 결과가 서버쪽에 있고 서버쪽에서 실행 된 결과를 가져오기 위해서 rs.next() 기능을 사용해 준다. 

     

    각각 내용도 JDBC에서 받아 올 수 있도록 코드블럭을 작성 해 준다.

     

    그럼 이제 실행을 해 보면 

    이렇게 잘 실행이 되는 것을 확인 할 수 있다.

Designed by Tistory.