20240229 Spring 13 - JSON, 관리자 페이지

Leafy·2024년 2월 29일
0

중앙_자바

목록 보기
50/76

NCS 모듈 정리(애플리케이션 테스트 수행)

https://developer.android.com/studio?hl=ko

JSON 안에 JSON


xml도 하나의 태그는 하나의 객체 취급
ref="dataSource" <- 이런게 객체 안에 객체 들어간거다.
내부에 데이터가 들어 있어서 ..?

JSON 파일을 여는 방법

dataType JSON 보내기

Map으로 보내주면 pom.xml에 있는 jackson-databind가 알아서 json으로 해준다고 한다.

Map 방식이 편하긴 하지만 반드시 Map을 return할 필요는 없다.

RestFullController.java

@PostMapping("/idCheck")
public Map<String, Object> idCheck(@RequestParam("id") String id) {
	//System.out.println(id);
	
	int result = restService.idCheck(id);
	System.out.println("가입된 아이디 수 : " + result);
	// json 타입 -> { key:value, key2:value, key3: value }
	// { key:value, {} }
	// result : { count : 1/0 }
	Map<String, Object> resultMap = new HashMap<String, Object>();
	resultMap.put("count", result);
	return resultMap;
}


postman에 해보면 결과는 이런 모습으로 나온다.
{"count":1}


사용할 때는 data.count로 하면 된다

Java - JSON 라이브러리 사용 방법 (JSONObject, JSONArray)

pom.xml
JSON object

<!-- https://mvnrepository.com/artifact/org.json/json -->
<dependency>
    <groupId>org.json</groupId>
    <artifactId>json</artifactId>
    <version>20240205</version>
</dependency>
//JsonObject 이용 시
@PostMapping("/idCheck")
public String idCheck(@RequestParam("id") String id) {
	int result = restService.idCheck(id);
	System.out.println("가입된 아이디 수 : " + result);
	
	JSONObject json = new JSONObject();
	json.put("count", result);
	
	return json.toString();
}

편한 걸로 쓰면 된다.
이게 제일 편하긴 하다.
제일 많이 쓰는 게 jackson-databind나 simple json

json은 제조사별로 다르다. 구글에서 만드는 json은 gson..?

Java - JSON과 GSON

JSON.stringify란

게시판을 JSON으로

RestFullController.java

// 게시판을 json으로 출력해주는 api
	@GetMapping("/jsonBoard")
	public String jsonBoard(@RequestParam("pageNo") String pageNo) {
		// 전자정부 페이징 (BoardController에 있던 거)
		int currentPageNo = 1;
		if(util.str2Int(pageNo) > 0) {
			currentPageNo = Integer.parseInt(pageNo);
		}
		
		int totalRecordCount = boardService.totalRecordCount();
		PaginationInfo paginationInfo = new PaginationInfo();
		paginationInfo.setCurrentPageNo(currentPageNo);//현재 페이지 번호
		paginationInfo.setRecordCountPerPage(10); //한 페이지에 게시되는 게시물 건수
		paginationInfo.setPageSize(10); // 페이징 리스트의 사이즈
		paginationInfo.setTotalRecordCount(totalRecordCount); //전체 게시물 건수
		
		List<BoardDTO> list = boardService.boardList(paginationInfo.getFirstRecordIndex());
		//List<BoardDTO> list = boardService.boardList(pageNo);
		
		//JSON
		JSONObject jsonList = new JSONObject();
		jsonList.put("list", list);
		
		return jsonList.toString();
	}

이 API 또 쓸거다

JSON viewer

아니면 크롬 익스텐션 json viewer

검색 기능

많은 기능이 들어갈 예정이다
mybatis if

board.jsp에서 페이징 위에 search form 만들어줬다.

<div class="m-2 bg-warning">
						<div>
							<form action="./board">
							<div class="input-group">
								<input type="text" name="search" class="form-control">
								<input type="hidden" name="pageNo" value="${pageNo }" class="form-control">
								<button type="submit" class="btn btn-light">search</button>
							</div>
							</form>
						</div>
					</div>

<input type="hidden" name="pageNo" value="${pageNo }" class="form-control"> 얘는 안가도 된다. 함정 ㅎㅎ..

form action이 ./board인데
board controller에서 페이지 넣어서 들어가는거나 검색해서 들어가는거나 같은 메서드로 가도록한다.

search 파라미터 받는 메서드로 바꿔준다.

동적 쿼리

<select id="totalRecordCount" resultType="Integer" parameterType="String">
	SELECT COUNT(*) FROM board WHERE board_del='1'
	<if test="search != null">
	AND board_title LIKE CONCAT('%', #{search}, '%') 
	OR board_content LIKE CONCAT('%', #{search}, '%')
	</if>
</select>

where절이 없는 경우

<select id="totalRecordCount" resultType="Integer" parameterType="String">
	SELECT COUNT(*) FROM board
	<where>
	<if test="search != null">
	AND board_title LIKE CONCAT('%', #{search}, '%') 
	OR board_content LIKE CONCAT('%', #{search}, '%')
	</if>
	</where>
</select>

board에 mname이 없어서 mname은 안했다

mybatis dynamic SQL 공식

동적 쿼리는 많이 알아두면 좋다.


SearchDTO 생성함
int pageNo와 String search를 인스턴스 변수로 둠.

alias도 해준다.
우리는 DTO많이 생성하는 스타일로 하고 있다. BoardDTO에 모든 걸 넣어서 운영하는 스타일도 있다고 한다.

관리자 페이지

ㅠㅠ
썼던거 날아갔다...

servlet-context.xml

할일
1. menu빼기
2. top빼기(선택, 권장)

  1. footer빼기(선택, 권장)

  1. 게시글 관리에 모든 글 뜨게. -> 수정, 삭제, 차단
  2. 회원관리에 모든 회원 뜨게. -> 수정, 비밀번호 초기화
  3. 공지사항에 공지 다 뜨게. -> 수정, 삭제, 차단

2개의 댓글

comment-user-thumbnail
2024년 2월 29일

좋은 정리 감사합니다 :)

답글 달기
comment-user-thumbnail
2024년 2월 29일

나는 위대하다

답글 달기