반응형
250x250
Notice
Recent Posts
Recent Comments
Link
관리 메뉴

Yeonee's Story

[파이널 프로젝트] 관리자페이지 전체 회원리스트 및 특정 회원리스트 화면에 출력하기 본문

Project/Final Project (SNS)

[파이널 프로젝트] 관리자페이지 전체 회원리스트 및 특정 회원리스트 화면에 출력하기

yeonee 여니 2023. 9. 27. 22:41
728x90
반응형
SMALL

안녕하세요.
https://blog.naver.com/sysysy0302 여니입니다 :)

 

오늘은 제가 파이널 프로젝트를 통해 구현하였던 관리자 페이지의 전체 회원리스트 및 특정 회원리스트를 화면에 뿌려주는 코드를 분석해보고자 합니다.

/* 어드민 기능 */
@GetMapping("/adminMain")
public String adminMain(@RequestParam(value = "currentPage", defaultValue = "1") int currentPage, Model model,
        @RequestParam Map<String, Object> paramMap) {
    int offset = (currentPage - 1) * 5;
    int limit = 5;

    log.info("paramMap ={}", paramMap);

    RowBounds rowBounds = new RowBounds(offset, limit);
    List<Member> memList = cService.memList(paramMap, rowBounds);
    List<Member> BListTrue = new ArrayList();
    List<Member> WListTrue = new ArrayList();
    for(Member bm : memList) {
        int count = cService.countReport(bm.getUserNo());
        bm.setReportCount(count);
        BListTrue.add(bm);
    }
    for(Member wm : BListTrue) {
        int count = cService.countFollower(wm.getUserNo());
        wm.setFollowerCount(count);
        WListTrue.add(wm);
    }

    int total = cService.selectMListCount(paramMap);
    log.info("total ={}", total);
    int pageLimit = 10;
    int boardLimit = 5;
    PageInfo pi = Pagination.getPageInfo(total, currentPage, pageLimit, boardLimit);

    log.info("pi ={}", pi);
    model.addAttribute("memList", WListTrue);
    model.addAttribute("pi", pi);

    return "admin/adminMain.jsp";
}

 

코드 설명
/adminMain으로 경로를 설정해서 타입이 String인 adminMain 메소드에 매개변수로 currentPage, model, paramMap을 받아준다. 어떤 값이 올지 모르므로 제네릭이 <String, Object>인 Map을 이용한다. 제네릭이 Member인 list인 memList에 paramMap을 매개변수로 담아서 cService로 값을 넘겨준다. 제네릭이 Member인 BListTrue를 ArrayList로 생성해준다. for 반복문을 통해 memList를 bm에 대입하면서 Member객체중 userNo를 bm.getUserNo()로 불러와서 countReport에 담아준 값을 cService에 값을 넘겨준다. 그 결과값은 int coutnt이다. count를 매개변수로 setReportCount로 불러온 값을 bm에 담아준다. bm을 BListTrue에 담아준다. BListTrue을 wm에 대입하면서 Member객체중 userNo를 wm.getUserNo()로 불러와서 countFollower에 담아준 값dmf cService에 값을 넘겨준다. 그 결과값인 count를 매개변수로 setFollowerCount로 불러온 값을 wm에 담아준다. wm을 WListTrue에 담아준다. model객체의 addAttribute속성을 이용하여 memList로 WListTrue를 담아준다.

 

기능 설명
어드민 메인의 기능을 구현하기위해 전체 멤버리스트가 필요했고, 그 멤버의 값을담기위해 List<Member> memList를선언해서 DB에서 값을 가져왔다. 그후 각각의 멤버의 신고횟수와 팔로워수가 필요했기에, for 반복문을돌려서 팔로워수와 신고자수를 각각 새로운 리스트에 선언해서 set함수를 이용해서 값을 넣어주었고 최종적으로 WListTrue에 필요한 모든 멤버의 값을 다담아서 jsp파일로 보내주었다. 추가로 검색시 키워드를 받아서 있는경우에 paramMap에 담아와서 값이 sql문을 통해서 map이 존재할경우 그 키워드에 맞는 멤버만 담아오게 설정해두었다. 거기에다가 페이징바 처리를하기위해 offset, limit rowBounds 등의 값을 설정해서 원하는 페이지만큼 페이징바가 나오게 했고, 검색시 검색한 결과에 맞게 total 값이 바뀌게 하여서 그에맞는 페이징바가 설정되게 해서 어드민메인jsp로 보내주었다.
728x90
반응형
LIST