20240229 스프링(검색(search) 관리자 페이지 만들기(부트스트랩 가져오기))

2024. 2. 29. 17:42카테고리 없음

 

 

BoardController>search 추가(전체)

	// 2024.02.20 페이징 추가하기/ 2024.02.29 서치
	@GetMapping("/board")
	public String board(
			@RequestParam(value="pageNo", required=false) String no,
			@RequestParam(value="search", required=false) String search,
			Model model) {
		
		//System.out.println(search);
		
		//pageNo가 오지 않는다면
		int currentPageNo = 1;
		if(util.str2Int(no) > 0 ) {//여기 수정해주세요.
			currentPageNo = Integer.parseInt(no);
		}
		
		//전체 글 수 totalRecordCount
		int totalRecordCount = boardService.totalRecordCount(search);
		
		//pagination
		PaginationInfo paginationInfo = new PaginationInfo();
		paginationInfo.setCurrentPageNo(currentPageNo); //현재 페이지 번호
		paginationInfo.setRecordCountPerPage(10); 		//한 페이지에 게시되는 게시물 건 수
		paginationInfo.setPageSize(10); 				// 페이징 리스트의 사이즈
		paginationInfo.setTotalRecordCount(totalRecordCount);//전체 게시물 건 수
		
		SearchDTO searchDTO = new SearchDTO();
		searchDTO.setPageNo(paginationInfo.getFirstRecordIndex());
		searchDTO.setSearch(search);
		
		List<BoardDTO> list = boardService.boardList(searchDTO);
		model.addAttribute("list", list);
		//페이징 관련 정보가 있는 PaginationInfo 객체를 모델에 반드시 넣어준다.
		model.addAttribute("paginationInfo", paginationInfo);
		model.addAttribute("pageNo", currentPageNo);
		model.addAttribute("search", search);

		return "board";
	}

 

 

 

@RequestParam >search 추가

	// 2024.02.20 페이징 추가하기/ 2024.02.29 서치
	@GetMapping("/board")
	public String board(
			@RequestParam(value="pageNo", required=false) String no,
			@RequestParam(value="search", required=false) String search,
			Model model) {

 

 

search 추가

		//전체 글 수 totalRecordCount
		int totalRecordCount = boardService.totalRecordCount(search);

 

 

SearchDTO 만들기> 추가

		SearchDTO searchDTO = new SearchDTO();
		searchDTO.setPageNo(paginationInfo.getFirstRecordIndex());
		searchDTO.setSearch(search);
		
		List<BoardDTO> list = boardService.boardList(searchDTO);
		model.addAttribute("list", list);
		//페이징 관련 정보가 있는 PaginationInfo 객체를 모델에 반드시 넣어준다.
		model.addAttribute("paginationInfo", paginationInfo);
		model.addAttribute("pageNo", currentPageNo);
		model.addAttribute("search", search);

 

 

board.jsp 서치 넣어주기

//전자정부 페이징 이동하는 스크립트
function linkPage(pageNo){
	location.href = "./board?search=${search}&pageNo="+pageNo;
}

 

BoardController > model 넣어줘야한다.

		List<BoardDTO> list = boardService.boardList(searchDTO);
		model.addAttribute("list", list);
		//페이징 관련 정보가 있는 PaginationInfo 객체를 모델에 반드시 넣어준다.
		model.addAttribute("paginationInfo", paginationInfo);
		model.addAttribute("pageNo", currentPageNo);
		model.addAttribute("search", search);

 

 

param을 넣어줘면 컨트롤러에서 model을 안써도된다.

function linkPage(pageNo){
location.href = "./board?search=${param.search}&pageNo="+pageNo;

 

 

 

 

 

 

admin/관리자 페이지 만들어주기

AdminController> 경로 설정을 admin>index로 해줘야한다.

package org.mask.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

//administrator = admin
//
@Controller
public class AdminController {
	
	@GetMapping("/admin/index")
	public String index() {
		return "/admin/index";
	}

}

 

 https://startbootstrap.com/theme/sb-admin-2

 

Start Bootstrap

 

startbootstrap.com

어드민에 사용할 부트스트랩

views>admin>index 만들어서 사용

 

부트스트랩 경로

jsp 파일 만들때 css, js 파일 경로 설정을 잘 해줘야 깨지지 않고 된다.

앞에 /resources/admin/ 넣어서 만들어줬다.

 

   <!-- Custom fonts for this template-->
    <link href="/resources/admin/vendor/fontawesome-free/css/all.min.css" rel="stylesheet" type="text/css">
    <link
        href="https://fonts.googleapis.com/css?family=Nunito:200,200i,300,300i,400,400i,600,600i,700,700i,800,800i,900,900i"
        rel="stylesheet">

    <!-- Custom styles for this template-->
    <link href="/resources/admin/css/sb-admin-2.min.css" rel="stylesheet">

 

   <!-- Bootstrap core JavaScript-->
    <script src="/resources/admin/vendor/jquery/jquery.min.js"></script>
    <script src="/resources/admin/vendor/bootstrap/js/bootstrap.bundle.min.js"></script>

    <!-- Core plugin JavaScript-->
    <script src="/resources/admin/vendor/jquery-easing/jquery.easing.min.js"></script>

    <!-- Custom scripts for all pages-->
    <script src="/resources/admin/js/sb-admin-2.min.js"></script>

 

 

 

 

AdminController

package org.mask.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;

//administrator = admin
//
@Controller
@RequestMapping("/admin")
public class AdminController {
	
	@GetMapping("/")
	public String index() {
		return "admin/index";
	}
	@GetMapping("/index")
	public String index2() {
		return "admin/index";
	}
	@GetMapping("/login")
	public String login() {
		return "admin/login";
	}
	@GetMapping("/join")
	public String join() {
		return "admin/join";
	}
	

}

 

 

Views >admin> jsp 만들어주기

 

 

 

 

 

admin/index.jsp

 

 <!-- Nav Item - Dashboard --> 아래 경로 변경

            <!-- Nav Item - Dashboard -->
            <li class="nav-item">
                <a class="nav-link" href="./index">
                    <i class="fas fa-fw fa-tachometer-alt"></i>
                    <span>Dashboard</span></a>
            </li>

 

 

<!-- Nav Item - Pages Collapse Menu --> >게시판 으로 사용

            <!-- Nav Item - Pages Collapse Menu -->
            <li class="nav-item">
                <a class="nav-link collapsed" href="#" data-toggle="collapse" data-target="#collapseTwo"
                    aria-expanded="true" aria-controls="collapseTwo">
                    <i class="fas fa-fw fa-cog"></i>
                    <span>게시판</span>
                </a>
                <div id="collapseTwo" class="collapse" aria-labelledby="headingTwo" data-parent="#accordionSidebar">
                    <div class="bg-white py-2 collapse-inner rounded">
                        <h6 class="collapse-header">게시판 관리: </h6>
                        <a class="collapse-item" href="buttons.html">게시글 관리</a>
                        <a class="collapse-item" href="cards.html">댓글 관리</a>
                    </div>
                </div>
            </li>

 

 

 

 

<!-- Nav Item - Utilities Collapse Menu --> >회원관리로 사용

            <!-- Nav Item - Utilities Collapse Menu -->
            <li class="nav-item">
                <a class="nav-link collapsed" href="#" data-toggle="collapse" data-target="#collapseUtilities"
                    aria-expanded="true" aria-controls="collapseUtilities">
                    <i class="fas fa-fw fa-wrench"></i>
                    <span>회원관리</span>
                </a>
                <div id="collapseUtilities" class="collapse" aria-labelledby="headingUtilities"
                    data-parent="#accordionSidebar">
                    <div class="bg-white py-2 collapse-inner rounded">
                        <h6 class="collapse-header">회원관리:</h6>
                        <a class="collapse-item" href="utilities-color.html">회원목록</a>
                        <a class="collapse-item" href="utilities-border.html">비밀번호초기화</a>
                        <a class="collapse-item" href="utilities-animation.html">등급</a>
                        <a class="collapse-item" href="utilities-other.html">차단</a>
                    </div>
                </div>
            </li>

 

 

 

 

<!-- Nav Item - Pages Collapse Menu -->

공지사항으로 사용

            <!-- Nav Item - Pages Collapse Menu -->
            <li class="nav-item active">
                <a class="nav-link" href="#" data-toggle="collapse" data-target="#collapsePages" aria-expanded="true"
                    aria-controls="collapsePages">
                    <i class="fas fa-fw fa-folder"></i>
                    <span>공지사항</span>
                </a>
                <div id="collapsePages" class="collapse aria-labelledby="headingPages"
                    data-parent="#accordionSidebar">
                    <div class="bg-white py-2 collapse-inner rounded">
                        <h6 class="collapse-header">Login Screens:</h6>
                        <a class="collapse-item" href="login.html">Login</a>
                        <a class="collapse-item" href="register.html">Register</a>
                        <a class="collapse-item" href="forgot-password.html">Forgot Password</a>
                        <div class="collapse-divider"></div>
                        <h6 class="collapse-header">Other Pages:</h6>
                        <a class="collapse-item" href="404.html">404 Page</a>
                        <a class="collapse-item active" href="blank.html">Blank Page</a>
                    </div>
                </div>
            </li>

 

 

 

 

ul 빼서 메뉴를 만들면공통된메뉴를 만들 수 있다.

 

 

할것

 

메뉴jsp 따로 빼기,

탑 따로 빼기,

풋터 따로 빼기

게시글 관리에 모든 글 뜨게 해주세요.

회원관리에 모든 회원 뜨게 해주세요

공지사항에 공지 다 뜨게 해주세요