ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Spring:댓글
    JAVA 2021. 7. 26. 23:06

    Comment 댓글

    >> Comment<VO>

    public class Comment {
    	private int no;
    	private String contents;
    	private Date wdate;
    	private Member member;
    	private Board board;
    //getter,setter 부분
    }

    >> ICommentDAO

    public interface ICommentDAO {
    
    	void save(Comment comment);
    	List<Comment> selectByBoardNo(int 게시물번호, int size, RefInteger totalSize);
    }

    >> MemberDAO ( 메서드 추가 )

    	//member 이름만 갖고오기(다가져올필요 없으니까)
        @Override
    	public String findName(int no) {
    		
    		String name = null;
    		
    		try {
    
    			Connection c = ConnectionUtil.getConnection();
    
    			Statement 명령전달자 = c.createStatement();
    
    			
    			// 선택한 게시물 가져오기
    			String 수집SQL = String.format("select name from member where no = %d",no);
    			ResultSet 수집된표관리자 = 명령전달자.executeQuery(수집SQL);
    
    			if(수집된표관리자.next()) {
    
    				name = 수집된표관리자.getString("name");
    
    			}
    
    			수집된표관리자.close();
    			명령전달자.close();
    			c.close();
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    		
    		return name;
    	}

    >> CommentDAO

    	@Override
    	public List<Comment> selectByBoardNo(int 게시물번호, int size/* 수집할 댓글수 */, RefInteger totalSize/* 해당 게시물의 총댓글수 */) {
    		ArrayList<Comment> comments = null;
    		Connection c = null;
    		PreparedStatement ps = null;
    		try {
    
    			c = ConnectionUtil.getConnection();
    			ps = c.prepareStatement("select * from comment where board_no=? order by wdate desc limit 0,?");
    			ps.setInt(1,게시물번호);
    			ps.setInt(2,size);
    			ResultSet set = ps.executeQuery();
    			
    			while(set.next()) {
    				int no = set.getInt("no");
    				String contents = set.getString("contents");
    				Date wdate = set.getDate("wdate");
    				
    				int 작성자번호 = set.getInt("writer");
    				String 댓글작성자성명 = memberDAO.findNameByNo(set.getInt("writer"));
    				Member member = new Member();
    				member.setNo(작성자번호);
    				member.setName(댓글작성자성명);
    
    				Comment comment = new Comment();
    				comment.setNo(no);
    				comment.setContents(contents);
    				comment.setWdate(wdate);
    				comment.setWriter(member);
    				
    				comments = new ArrayList<Comment>();
    				comments.add(comment);
    			}
    			set.close();
    			
    			ps = c.prepareStatement("select count(*) from comment where board_no=?");
    			ps.setInt(1,게시물번호);
    			
    			ResultSet set2 = ps.executeQuery();
    			set2.next();
    			//열의 순서대로 숫자를 넣어도 가져옴.
    			totalSize.value = set2.getInt(1);
    			
    			set2.close();
    			ps.close();
    			c.close();
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    		return comments;
    	}

    >> 게시물컨트롤

    	@PostMapping("board/comments/{no}")
    	public ModelAndView 게시물댓글을출력하다(@PathVariable int no, int size,HttpSession session) {
    		
    		RefInteger totalSize = new RefInteger();
    		List<Comment> comments = commentDAO.selectByBoardNo(no, size, totalSize);
    		
    		ModelAndView mv = new ModelAndView();
    		mv.addObject("totalSize", totalSize.value);
    		mv.addObject("size", size);
    		mv.addObject("comments", comments);
    		//로그인한 회원의 번호, 로그인하지 않은 경우 null
            // 댓글을 본인이 달았는지 comment.writer.no 와 비교하여 삭제버튼유무를 가릴려고
    		mv.addObject("member_no",session.getAttribute("no"));
    		mv.setViewName("/board/댓글창");
    		
    		return mv;
    		
    	}
    ​

    'JAVA' 카테고리의 다른 글

    Spring:댓글(ajax.ver)  (0) 2021.07.26
    Spring: 댓글(iframe.ver)  (0) 2021.07.26
    Spring:resolver  (0) 2021.07.26
    board,member(spring.ver1)  (0) 2021.07.26
    Spring:Mapping,Repository,Autowired(DI),multipartFile  (0) 2021.07.26

    댓글

Designed by Tistory.