본문 바로가기
JAVA

[Java] JSP + Spring 게시판 만들기

by five-sun 2023. 2. 28.
728x90

JSP와 Spring을 활용해서 게시판 만들어보기.

 

1. 메인 페이지

main.jsp

페이지 내 기능:

  • 게시물 목록으로 이동
  • 게시물 작성으로 이동

해결 과정:

  • a 태그를 감싼 button을 활용하여 이동

 

2. 게시물 목록 페이지

list.jsp

페이지 내 기능:

  • 게시물 목록 출력 기능
  • 리스트에 title 클릭 시 조회, 수정, 삭제 페이지로 이동 기능

 

해결 과정:

  • DB 연동: Postgresql + Mybatis + Spring을 이용 (pom.xml 설정, application.yml 또는 application.properties 설정)
  • DAO와 DTO 객체를 이용해서 DB에 접근
  • ModelAndView 객체를 이용해서 뷰와 모델을 전달, 출력
  • DB.board 테이블에 저장된 데이터 중 Title, Name, Date 를 목록 형식으로 출력
  • title에 이동할 경로와 parameter로 고유값을 가지는 seq 컬럼을 이용하여 설정

 

3. 게시물 작성 페이지

write.jsp

페이지 내 기능: 

  • 게시물 작성 기능

해결 과정:

  • 입력 받은 데이터를 DB에 Insert할 수 있도록 Controller, Service, DAO, Mapper 작성
  • Mapper  작성 시 연결될 DAO 메소드명과 Mapper의 id명을 일치시키고 파라미터 타입으로 알맞은 DTO를 설정
  • 쿼리문 동작 결과에 따라 Alert출력하며 페이지를 이동

 

 

4. 게시물 조회, 수정, 삭제 페이지

content.jsp

페이지 내 기능:

게시물 조회 기능

게시물 수정 기능

게시물 삭제 기능

 

해결 과정:

  • 조회할 데이터를 DB에서 Select 할 수 있도록 Controller, Service, DAO, Mapper 작성
  • 수정할 데이터를 DB에서 Update 할 수 있도록 Controller, Service, DAO, Mapper 작성
  • 삭제할 데이터를 DB에서 Delete 할 수 있도록 Controller, Service, DAO, Mapper 작성
  • 세 기능 모두 where seq = #{seq} 조건을 통해서 원하는 데이터를 사용 
  • 삭제 기능은 delete_yn 값이 y일 때만 동작할 수 있도록 작성
	public int deleteBoard(int seq) {
		String yn = boardDao.getBoardContent(seq).getDeleteYn();
		if(yn.equals("y")) {
			return boardDao.deleteBoard(seq);
		}
		else {
			return -1;
		}
	}

 

5. 성공/ 실패 처리 alert

    public String Action(Board board, HttpServletResponse response) throws IOException {
        response.setCharacterEncoding("UTF-8");
        response.setContentType("text/html; charset=UTF-8");
        PrintWriter out = response.getWriter();
        /* 처리할 동작 수행*/
        /* int 결과값을 result에 저장 */
        if (result == 1) {
            System.out.println("성공");
            out.println("<script language='javascript'>");
            out.println("alert('성공'); location.href='성공시 이동할 위치';");
        } else {
            System.out.println("실패");
            out.println("<script language='javascript'>");
            out.println("alert('실패'); location.href='실패시 이동할 위치';");
        }
        out.println("</script>");
        out.close();
        return "";
        }
  }

 

※ Formdata를 Controller가 받았을 때 charset이 왜 변경되고 한글 깨짐 현상을 어떻게 해결해야 할지 고민해 볼 것

728x90