1. spring에서의 리소스 처리방법에 대하여 설명하시오.
· spring에서는 jsp를 제외한 모든 문서는 정적으로 인식되어 접근이 불가하기 때문에 servlet-context.xml에
아래와 같이 맵핑시킨 코드 내용을 추가해야 접근이 가능해진다.
· webApp은 resource폴더(정적 리소스 저장하는 장소)와 WEB-INF폴더(보안이 필요한 파일을 저장하는 장소)로 나누어 사용한다.
2. 페이징을 구현하시오.
<테스트 항목을 넣기 위한 sql문>
<구현 화면>
<Criteria.java>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
public class Criteria {
private int page; // 보여줄 페이지
private int perPageNum; // 페이지당 보여줄 페이지수
private int rowStart;
private int rowEnd;
public Criteria() {
this.page = 1; // 사용자가 세팅하지 않으면 기본 1
this.perPageNum = 10; // 페이지당 기본 10개씩 출력하도록 세팅
}
public int getPage() {
return page;
}
public void setPage(int page) {
if (page <= 0) {
// 페이지는 1페이지이므로 0보다 작거나 같은값일 경우 무조건 첫번째 페이지로 설정되도록 해준다.
this.page = 1;
} else
this.page = page;
}
public int getPerPageNum() {
return perPageNum;
}
public void setPerPageNum(int perPageNum) {
if (perPageNum <= 0 || perPageNum > 100) {
this.perPageNum = 10;
} else
this.perPageNum = perPageNum;
}
public int getRowStart() {
rowStart = ((page - 1) * perPageNum) + 1;
return rowStart;
}
public int getRowEnd() {
rowEnd = rowStart + perPageNum - 1;
return rowEnd;
}
}
|
cs |
<PageMaker.java>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
public class PageMaker {
private Criteria cri; // page, perPageNum을 불러옴
private int totalCount; // 전체 게시글 수
private int startPage; // 현재 화면에서 보이는 페이지의 시작 번호
private int endPage; // 현재 화면에서 보이는 페이지의 마지막 번호
private boolean prev; // 페이징 이전 버튼 활성화 여부
private boolean next; // 페이징 다음 버튼 활성화 여부
private int displayPageNum = 10;// 화면 하단에 보여지는 페이지의 개수
private int tempEndPage;
public int getTotalCount() {
return totalCount;
}
public void setTotalCount(int totalCount) {
this.totalCount = totalCount;
calcData();
}
private void calcData() {// 전체 필드 변수 값들을 계산하는 메서드
endPage = (int) (Math.ceil(cri.getPage() / (double) displayPageNum) * displayPageNum);
startPage = (endPage - displayPageNum) + 1;
int tempEndPage = (int) (Math.ceil(totalCount / (double) cri.getPerPageNum()));
this.tempEndPage = tempEndPage;
if (endPage > tempEndPage) {
endPage = tempEndPage;
}
prev = startPage == 1 ? false : true;// 1페이지면 이전 누를 수 없게 false
next = endPage * cri.getPerPageNum() >= totalCount ? false : true;
}
// 밑부분은 getter, setter 설정
|
cs |
<BoardController.java>
1
2
3
4
5
6
7
8
9
10
11
12
13
|
@GetMapping("/board/listPage")
public String listPage(@ModelAttribute("cri") Criteria cri, Model model) throws Exception {
log.info(cri.toString());
model.addAttribute("list1", boardService.listPage(cri)); // 게시판의 글 리스트
PageMaker pageMaker = new PageMaker();
pageMaker.setCri(cri);
pageMaker.setTotalCount(boardService.listCount());
model.addAttribute("pageMaker", pageMaker); // 게시판 하단의 페이징 관련, 이전페이지, 페이지 링크 , 다음 페이지
return "listPage";
}
|
cs |
<BoardMapper.xml>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
<!-- 페이징 처리 -->
<select id="listPage" resultType="edu.bit.ex.board.vo.BoardVO" parameterType="edu.bit.ex.board.vo.Criteria">
<![CDATA[
select bId, bName, bTitle, bDae, bHit
from (select bId, bName, bTitle, bDae, bHit, row_number() over(order by bId desc) as rNum from mvc_board) mb
where rNum between #{rowStart} and #{rowEnd}
]]>
</select>
<!-- 게시물 총 개수 출력 -->
<select id="listCount" resultType="int">
<![CDATA[
select count(*) from mvc_board
]]>
</select>
|
cs |
♣금일 예제♣
· emp정보를 템플릿 적용하여 출력하고, 글작성 클릭하면 작성페이지를 출력하시오.
단, 작성페이지에서 매니저와 부서는 DB의 내용과 연결시켜 선택할 수 있도록 옵션 형태로, 날짜는 달력 형태로 작성하고,
클라이언트가 동일한 사원번호 입력 시 오류메세지 발생할 것(클라이언트, 서버 유효성 검사)!
<작성페이지 구현화면>
<정보입력 후 list 화면>
<사원번호 유효성 검사>
· 클라이언트에서 중복된 사원번호를 입력한 경우 오류메세지 발생!
<사원번호 유효성 검사>
· 입력된 사원번호가 0인 경우 오류메세지 발생과 동시에 작성페이지 return!
· 서버쪽에서 사원번호 중복 검사를 하기 위해 EmpValidator에서 EmpVO의 empno 값을 불러오기위해 시도중...
방법을,,,,,알고싶어요
'bitcamp > 면접족보' 카테고리의 다른 글
면접족보 21/02/02_Junit test (0) | 2021.02.15 |
---|---|
면접족보 21/02/01_오라클 페이징처리 (0) | 2021.02.15 |
면접족보 21/01/28_Jquery-UI (0) | 2021.02.15 |
면접족보 21/01/27_MyBatis 게시판 구현 (0) | 2021.02.15 |
면접족보 21/01/26_xml 과 MyBatis 개념 (0) | 2021.02.14 |