728x90

6차에서 헤더랑 좀 변경하긴 했는데 css쪽이라 서술하진 않으려고 한다.
팀원분이 페이징하는 것을 구경하다가 결국 출력 및 테스트 더미데이터 넣기만 하고 끝났다.
미리 공부한 셈 치고 7차에서는 디테일, 페이징을 넣어볼 생각이다.

1차 일지 - [ 설정 ], [ 회원가입 ]
2차 일지 - [ 로그인 ]
3차 일지 - [ index에서 로그인 상태에 따라 display none/block 제어하고 p태그 내용 바꾸기 ], [ 로그아웃 ]
4차 일지 - [ header에 회원 아이디, 회원정보/로그아웃 링크 or 비회원 문구 추가 후 로그인 상태에 따라 display none/block 제어 ], [ 일반 회원 정보 확인 ]
5차 일지 - [ 일반 회원 정보 출력 변경 ], [ 관리자) 회원 정보 목록 출력 ], [ 일반 회원 비밀번호 변경 ]

6차 일지 - [ 게시판 글 목록 출력 ], [ 테스트용 글 더미데이터 100개 입력 ]

 

1. 게시판 글 목록 출력

  • header.jsp
더보기
<div class="headerBigBox" style="min-height: 180px; background-color: #2e2e34;">
	<nav class="top-right" style="">
    
		<div class="headerBox">
			<nav id="loginIdHeaderOn" style="padding: 15px 10px 0px 0px; float: right; display: none;">
				<p id="loginIdHeader" style="color: #fff; float: left;">test님</p>
				&ensp;<a href="/member/info" id="checkAM">내 정보 확인</a>
				&ensp;<a href="/member/logout">로그아웃</a>&ensp;
			</nav>
			<nav id="loginIdHeaderOff" style="padding: 15px 10px 0px 0px; float: right; display: block;">
				<p id="loginIdHeader" style="color: #fff; float: left;">현재 로그인 상태가 아닙니다.</p>
			</nav>
		</div>
		
		<ul class="top-menu" style="color: #d8d3cd">
			<li><a>menu1</a></li>
			<li><a href="/board/list?page=1">게시판</a></li>
			<li><a>menu3</a></li>
			<li><a>menu4</a></li>
		</ul>
        
	</nav>
</div>
  • 메뉴 2번을 게시판으로 변경했다.
  • 페이징을 넣을 것이기 때문에 링크를 넘어갈 때 페이지를 지정해서 넘겨줬다.

 

  •  BoardController.java
더보기
@Controller
@Slf4j
public class BoardController {
	@Autowired
	private BoardService bSer;
	
	@GetMapping("/board/list")
	public String boardList(@RequestParam(name="page")int page, Model model, RedirectAttributes ra) {
		log.info("==> GetMapping - boardList 요청 <==");
		
		ArrayList<BoardDto> bList = bSer.bList(page);
		model.addAttribute("bList", bList);
		log.info("==> bList: {}",bList);
		
		return "boardList";
	}
}
  • 넘겨준 페이지는 @RequestParam으로 받아주고, 글을 받아오기 위해 BoardDto가 담긴 ArrayList를 생성했다.
  • model에 받아온 ArrayList를 저장하고 리턴한다.

 

  • BoardService.java
더보기
public ArrayList<BoardDto> bList(int page) {
    System.out.println("==== bSer -> bList");
    return bDao.bList(page);
}

 

  • BoardDao (java, xml)
더보기
public ArrayList<BoardDto> bList(int page);
<select id="bList">
    select bNum, bTitle, bWriter, bWDate, bWatch from board order by bNum limit 0,10
</select>
  • 나중에 페이징을 넣을때 여기에서 limit에 적은 0에 받아온 값을 넣을 예정이다.

 

  • boardList.jsp
더보기
<jsp:include page="./header.jsp"></jsp:include>

<div class="allBigBox">
    <table class="bListTable">
        <tr>
            <th>&ensp;글 번호&ensp;</th>
            <th>&ensp;제목&ensp;</th>
            <th>&ensp;작성자&ensp;</th>
            <th>&ensp;작성 날짜&ensp;</th>
            <th>&ensp;조회수&ensp;</th>
        </tr>
        <c:if test="${empty bList}">
            <tr>
                <td>글이 존재하지 않습니다.</td>
            </tr>
        </c:if>
        <c:if test="${!empty bList}">
            <c:forEach items="${bList}" var="b">
                <tr>
                    <td>&ensp;${b.bNum}&ensp;</td>
                    <td>&ensp;${b.bTitle}&ensp;</td>
                    <td>&ensp;${b.bWriter}&ensp;</td>
                    <td>&ensp;${b.bWDate}&ensp;</td>
                    <td>&ensp;${b.bWatch}&ensp;</td>
                </tr>
            </c:forEach>
        </c:if>
    </table>

    <br>
    <button type="button" onclick="location.href='/'">메인화면</button>
</div>
  • body
  • 변수명을 두번째 글자에 대문자를 자주 썼는데 이번에 c:forEach를 사용하려니까 문제가 생겼었다. 이 문제를 해결하려고 많은 애를 썼는데, 아직 검색하는 법을 잘 몰라서 서칭도 오래 걸렸다.

 

  • BoardDto.java
더보기
//@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
private int bNum;	// 글번호
private String bTitle;	// 글 제목
private String bContents;	// 글 내용
private String bWriter;	// 작성자
private String bWDate;	// 작성시간/날짜
private String bWatch;	// 조회수
public int getbNum() {
    return bNum;
}
public String getbTitle() {
    return bTitle;
}
public String getbContents() {
    return bContents;
}
public String getbWriter() {
    return bWriter;
}
public String getbWDate() {
    return bWDate;
}
public String getbWatch() {
    return bWatch;
}
public void setbNum(int bNum) {
    this.bNum = bNum;
}
public void setbTitle(String bTitle) {
    this.bTitle = bTitle;
}
public void setbContents(String bContents) {
    this.bContents = bContents;
}
public void setbWriter(String bWriter) {
    this.bWriter = bWriter;
}
public void setbWDate(String bWDate) {
    this.bWDate = bWDate;
}
public void setbWatch(String bWatch) {
    this.bWatch = bWatch;
}
  • 위에서 말한 에러코드는 이랬다. -> c:forEach Property [bnum] not found on type [cohttp://m.myPro.persP.dto.BoardDto]
  • @Data를 이용해서 간편하게 사용하려고 했는데 내가 지정한 변수명이 두번째 글자들이 대문자이다 보니 lombok의 Getter, Setter가 getBNum, getBTitle 이런 식으로 생성해서 컴퓨터가 이해할 수 없다? 고 했던 것 같다. 그래서 수동으로 sts에서 Getter, Setter를 만들어주는 것을 통해 추가해주었다.

 

  • 결과
더보기
  • 아직 디테일은 만들지 않았다.

 

 

 

2. 더미 데이터 추가

더보기
  • 프로젝트를 우클릭하면 나오는 창에서 맨 밑의 Properties를 클릭한다.
  • 왼쪽 박스에서 Java Build Path를 들어간 뒤, Libraries를 클릭한다.
  • Classpath를 클릭 후, Add Library를 해준다.  (위의 Modulepath에 하면 내가 한 방식으로는 에러가 난다!)
  • JUnit을 누른 후, Next>Finish를 차례로 눌러준다.  (Next 시 버전을 선택할 수 있다.)
  • Apply and Close를 통해 추가해준다.
  • 세번째 폴더의 src/test/java를 들어간다.
  •  더미데이터를 추가할 패키지/파일을 만든다.
  •  클래스에 @SpringBootTest를 추가하고, 더미데이터로 추가할 내용을 작성한다.
@SpringBootTest
class BoardDtoTest {

	@Autowired
	private BoardDao bDao;
	@Test
	//@Transactional
	void insertDummyDataTest() {
		BoardDto bDto=new BoardDto();
		for(int i=0;i<100;i++) {
			bDto.setbTitle("제목"+i);
			bDto.setbContents("내용"+i);
			bDto.setbWriter("aaa");
			bDao.insertDummyData(bDto);
		}
		
	}

}
  • dao의 xml이나 java에서 insert 구문을 적는다. (나는 java 파일에 작성했다.)
// Test용 더미 데이터
@Insert("insert into board values(default,#{bTitle},#{bContents},#{bWriter},default,default)")
public void insertDummyData(BoardDto bDto);
  • 다시 더미데이터로 추가할 내용을 작성해준 클래스로 돌아가서 우클릭을 통해 Run As > 2JUnit Test를 클릭한다.
  • 왼쪽 네모박스에서 결과를 확인할 수 있다!

 


 

전체 피드백

  • order by 거꾸로 뒤집어야했는데 까먹었다..잊지말고 바꿀것!!

 


 

728x90

'프로그래밍 > +a' 카테고리의 다른 글

slPro 8차 일지  (0) 2024.01.18
slPro 7차 일지  (0) 2024.01.15
slPro 5차 일지  (0) 2024.01.09
slPro 4차 일지  (1) 2024.01.08
미니 팀 프로젝트 중간 과정 (파이썬)  (1) 2024.01.03