import React, { useState, useEffect } from 'react';
import { useParams, Link, useNavigate } from 'react-router-dom';
import axios from 'axios'; // 추가 axios 임포트

const PostView = () => {
  const { idx } = useParams();
  const navigate = useNavigate();
  // [추가] 게시글 상태 및 로딩 상태 추가
  const [post, setPost] = useState({});
  const [isLoading, setIsLoading] = useState(true);

  // [추가] useEffect를 사용하여 API에서 게시글 데이터 조회
  useEffect(() => {
    // idx값 유효성 확인
    if (!idx) {
      setIsLoading(false);
      return;
    }

    setIsLoading(true);
    axios.get(`http://localhost:8080/RestBoard/board/api/detail/${idx}`)
      .then(response => {
        const result = response.data;

        // API 응답의 데이터 구조에 따라 post 객체를 설정합니다.
        if (result.code === '0' && result.detail) {
          setPost(result.detail);
        } else {
          // console.error("API Error:", result.msg);
          alert(result.msg || "게시글 상세 정보를 불러오는데 실패했습니다.");
          navigate('/'); // 실패 시 목록으로 이동
        }
      })
      .catch(error => {
        console.error("Error fetching post:", error);
        // 에러 시 더미 데이터 대신 오류 처리 후 목록으로 이동
        // (이전 코드의 'id' 변수를 모두 'idx'로 변경했습니다.)
        setPost({
          IDX: idx,
          TITLE: `[ERROR] Post ${idx} Load Failed`,
          CREA_ID: `Error User`,
          CONTENTS: `Could not fetch content. Check API endpoint: <http://localhost:8080/RestBoard/board/api/detail/${idx}`>,
          CREA_DTM: '',
          HIT_CNT: 0,
        });
      })
      .finally(() => setIsLoading(false));
    // 의존성 배열에 idx와 navigate를 추가
  }, [idx, navigate]);

  // [추가] 로딩 상태 처리
  if (isLoading) {
    return <div className="container mt-5"><h2>Loading post...</h2>;</div>
  }

  // [추가] 데이터가 없을 경우 처리
  if (!post || Object.keys(post).length === 0) {
    return <div className="container mt-5"><h2>게시글을 찾을 수 없거나 로드에 실패했습니다. Post not found or failed to load.</h2></div>;
  }

  // In a real app, you would fetch the post data based on the id
  // const post = { id: id, title: `Post ${id}`, author: `User${id}`, content: `This is the full content of post ${id}.` };

  return (
    <div className="container mt-4">
      <h2 className="mb-4">게시글 상세</h2>
      <div className="card shadow-sm">
        <div className="card-header bg-primary text-white fw-bold d-flex justify-content-between">
          <span>{post.title}</span>
          <span className="badge bg-light text-primary">No. {post.idx}</span>
        </div>
        <div className="card-body">
          <p className="card-subtitle text-muted mb-3 d-flex justify-content-between">
            <span>작성자: {post.creaNm}</span>
            <span>작성일: {post.creaDtm} | 조회수: {post.hitCnt}</span>
          </p>
          <hr />
          <div className="post-content">
            <pre style={{ whiteSpace: 'pre-wrap', fontFamily: 'inherit' }}>{post.contents}</pre>
          </div>

        </div>
      </div>

      <div className="mt-4 d-flex justify-content-between">
        <Link to="/" className="btn btn-secondary">목록으로 Back to List</Link>
        <div>
          {/* 수정 및 삭제 버튼 영역 (추후 구현 예정) */}
          <button className="btn btn-success me-2">수정</button>
          <button className="btn btn-danger">삭제</button>
        </div>
      </div>
    </div>
  );
};

export default PostView;

import React from 'react';
import { BrowserRouter as Router, Routes, Route } from 'react-router-dom';
import Header from './components/Header';
import BoardList from './components/BoardList';
import PostView from './components/PostView';
import PostForm from './components/PostForm';
import './App.css';
//spring 서블릿
function App() {
  return (
    <Router>
      <Header />
      <main>
        <Routes>
          <Route path="/" element={<BoardList />} />
          <Route path="/list" element={<BoardList />} />
          <Route path="/post/:idx" element={<PostView />} />
          <Route path="/new" element={<PostForm />} />
        </Routes>
      </main>
    </Router>
  );
}

export default App;
import React, { useState,  useEffect, useCallback } from 'react';
import { Link } from 'react-router-dom';
import axios from 'axios';
import Pagination from './Pagination';

const BoardList = () => {
  const [posts, setPosts] = useState([
    {"rnum":1,"hitCnt":18,"idx":5756,"title":"BatchTitle2","creaNm":"관리자","creaId":"2025-09-16"},
  ]);

  const [searchTerm, setSearchTerm] = useState('');//검색어 (검색바)
  const [submittedSearchTerm, setSubmittedSearchTerm] = useState(''); //검색어 (페이징 리스트)
  const [searchType, setSearchType] = useState('TITLE'); //검색 조건
  const [submittedSearchType, setSubmittedSearchType] = useState('TITLE');
  const [currentPage, setCurrentPage] = useState(1);
  const [totalPages, setTotalPages] = useState(100);

  //핸들링 이벤트의 실행주체
  const handleSearch = useCallback(() => {
    console.log(searchTerm);
    console.log(searchType);
    setSubmittedSearchTerm(searchTerm);
    setCurrentPage(1); // Reset to first page on new search
  }, [searchTerm, searchType]);

  //이벤트 감지기 (키이벤트)
  const handleKeyPress = (e) => {
    if (e.key === 'Enter') {//엔터를 입력 했을때
      handleSearch();
    }
  };

  //서버 주소 처리
  const retriveBoard = useCallback((type, keyword) => {
    console.log(type, keyword);
    axios.get("<http://localhost:8080/RestBoard/board/api/list>"
      , {params: {
        type: type,
        keyword: keyword,
        page: currentPage,
      }})
      .then(response => {
        setPosts(response.data.list);
        setTotalPages(response.data.totalpage);  
        console.log(response);
      }).catch(error=>{
        console.log(error);
        // [추가] API 오류 시 대체 데이터 설정
         setPosts([{ "rnum": 1, "hitCnt": 0, "idx": 9999, "title": "[오류] 목록을 불러올 수 없습니다. 백엔드 확인 필요.", "creaNm": "시스템", "creaDtm": "2025-11-04" }]);
          setTotalPages(1);
      })
  }, [currentPage]);

  useEffect(()=>{
    retriveBoard(submittedSearchType, submittedSearchTerm);
  
  }, [submittedSearchType, submittedSearchTerm, currentPage, retriveBoard])

  // Change page
  const handlePageChange = (page) => setCurrentPage(page);

  return (
    <div className="container mt-4">     {/* Bootstrap 컨테이너 추가 */}
      <h2 className="mb-4">Board List</h2>

      {/* 검색 및 새 글쓰기 버튼 영역 */}
      <div className="row justify-content-between mb-3">
        <div className="col-md-auto">
            <Link to="/new" className="btn btn-primary">New Post</Link>
        </div>
        <div className="col-md-7">
          <div className="input-group">
            <select className="form-select" style={{ flex: '0 0 120px' }} value={searchType} onChange={e => setSearchType(e.target.value)}>
              <option value="TITLE">Title</option>
              <option value="CONTENTS">Content</option>
              <option value="ID">Author</option>  
            </select>
            <input
              type="text"
              className="form-control"
              placeholder={`Search by ${searchType}...`}
              value={searchTerm}
              onChange={e => setSearchTerm(e.target.value)}
              onKeyDown={e => handleKeyPress(e)}
            />
            <button className="btn btn-outline-secondary" type="button" onClick={e => handleSearch()}>Search</button>
          </div>
        </div>
      </div>
    

      {/* Post List */}
      <ul className="list-group mb-4">
        {/* 게시판 헤더 - 요청하신 글번호, 제목, 작성자, 작성일, 조회수 표시 */}
        <li className="list-group-item list-group-item-dark d-flex align-items-center fw-bold text-center">
            {/* 글번호 (rnum) - 10% */}
          <div className="col-1">글번호</div> 
          {/* 게시글 제목 (title) - 50% */}
          <div className="col-6 text-start">게시글 제목</div> 
          {/* 작성자 이름 (creaNm) - 15% */}
          <div className="col-2">작성자</div>
          {/* 작성일 (creaDtm) - 15% */}
          <div className="col-2">작성일</div>
          {/* 조회수 (hitCnt) - 10% */}
          <div className="col-1">조회수</div>
        </li>

        {/* 게시글 목록 */}
        {posts.map(post => (
          <li key={post.idx} className="list-group-item d-flex align-items-center text-center">
               {/* 글번호 (rnum) */}
            <div className="col-1">{post.rnum}</div>
            
            {/* 게시글 제목 (title) - text-start로 왼쪽 정렬 */}
            <div className="col-6 text-start text-truncate">
              <Link to={`/post/${post.idx}`} className="text-decoration-none">{post.title}</Link>
            </div>
            
            {/* 작성자 이름 (creaNm) */}
            <div className="col-2 text-truncate">{post.creaNm}</div>
            
            {/* 작성일 (creaDtm) - 작은 폰트로 표시 */}
            <div className="col-2 small text-truncate">{post.creaDtm}</div>

            {/* 작성일 (creaIdm) - 작은 폰트로 표시 */}
            {/* <div className="col-3 small text-truncate">{post.creaId}</div>  */}
            
            {/* 조회수 (hitCnt) */}
            <div className="col-1">{post.hitCnt}</div>

            {/*<Link to={`/post/${post.idx}`}>{post.title}</Link>
            <span>{post.creaNm}</span>  */}
          </li>
        ))}

        {/* 게시글이 없는 경우 */}
        {posts.length === 0 && (
          <li className="list-group-item text-center text-muted">
            게시글이 없습니다.
          </li>
        )}
      </ul>

      {/* Pagination */}      
      <Pagination currentPage={currentPage} totalPages={totalPages} onPageChange={handlePageChange}  />
    </div>
  );
};

export default BoardList;
package first.board.controller;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.annotation.Resource;

import org.apache.log4j.Logger;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestPart;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import first.board.dto.BoardDTO;
import first.board.service.BoardService;
import first.common.common.CommandMap;

@CrossOrigin(origins = "<http://localhost:5173>")
@RestController
public class BoardRestController {
	
	Logger log = Logger.getLogger(this.getClass()); //로그 찍고
	
	@Resource(name="boardService")
	private BoardService boardService; //서비스 선언
	
	/**
	 * Rest BoardList조회
	 * @param commandMap
	 * @return
	 */
	@GetMapping(value = "/board/api/list",produces = "text/plain;charset=utf-8")			// 얘를 통해서 데이터를 주고 받는 거. 
	public String selectBoardList(CommandMap commandMap) {		// 이게 뭐냐고. 이게. 어??? CommandMap commandMap 이 뭔가???  - public은 접근 제한자, String은 타입. 문자열. selectBoardList는 뭐임? 메서드인가? 그리고 CommandMap 이 도대체 뭐야? 클래스야? commandMap은 객체이고? 정리가 안되네. 설명해줘. 
		Map map = commandMap.getMap();				// 이것도 기본으로 알아야 하고. 

		log.debug(map.toString());
		
		//Map<String, Object> resultObj = boardService.board_list_vue(map);
		JSONObject resultObj = boardService.selectBoardList(map);
		String result = resultObj.toJSONString();				// 최종적으로는 제이슨 문법으로 리턴이 됨. 

		return result;
	}
		
	/**
	 * 상세글 보기
	 * @param commandMap
	 * @return
	 */
	@GetMapping(value="/board/api/detail/{idx}",produces = "text/plain;charset=utf-8")
	public String selectBoardDetail(@PathVariable("idx") String idx) {
		String result="";
		Map<String, Object> map =new HashMap<String, Object>();
		map.put("idx", idx);
				
		
		JSONObject resultObj = boardService.selectBoardDetail(map);
		result = resultObj.toJSONString();

		
		return result;
	}
	
	
	
	@PostMapping(value="/board/api/detail", consumes = {MediaType.APPLICATION_JSON_VALUE, MediaType.MULTIPART_FORM_DATA_VALUE} ,produces = "text/plain;charset=utf-8")
	public String insertBoardDetail(@RequestPart(value = "file", required = false) MultipartFile file,  @RequestPart(value="document")  JSONObject param) {
		String result = "";
		log.debug(param);
		
		JSONObject resultObj = boardService.insertBoardDetail(param);
		result = resultObj.toJSONString();
		
		return result;
	}
	
	@PostMapping(value="/board/api/detail/{idx}", consumes = {MediaType.APPLICATION_JSON_VALUE, MediaType.MULTIPART_FORM_DATA_VALUE} ,produces = "text/plain;charset=utf-8")
	public String updateBoardDetail(@RequestPart(value = "file", required = false) MultipartFile file,  @RequestPart(value="document") JSONObject param ,  @PathVariable("idx") String idx) {
		String result = "";
		log.debug("TEST : " + param);
		
		JSONObject resultObj = boardService.updateBoardDetail(param);
		result = resultObj.toJSONString();
		
		return result;
		
	}
	
	@DeleteMapping(value="/board/api/detail/{idx}",produces = "text/plain;charset=utf-8")
	public String deleteBoardDetail(@PathVariable("idx") String idx) {
		String result = "";
		Map<String, Object> param = new HashMap<String, Object>();
		param.put("idx", idx);
		
		JSONObject resultObj = boardService.deleteBoardDetail(param);
		result = resultObj.toJSONString();
		
		return result;
		
	}
		
}

11월 05, 2025 2:47:01 오후 org.apache.catalina.startup.VersionLoggerListener log
INFO: 서버 버전 이름:    Apache Tomcat/9.0.55
11월 05, 2025 2:47:01 오후 org.apache.catalina.startup.VersionLoggerListener log
INFO: Server 빌드 시각:  Nov 10 2021 08:26:45 UTC
11월 05, 2025 2:47:01 오후 org.apache.catalina.startup.VersionLoggerListener log
INFO: Server 버전 번호:  9.0.55.0
11월 05, 2025 2:47:01 오후 org.apache.catalina.startup.VersionLoggerListener log
INFO: 운영체제 이름:     Windows 10
11월 05, 2025 2:47:01 오후 org.apache.catalina.startup.VersionLoggerListener log
INFO: 운영체제 버전:     10.0
11월 05, 2025 2:47:01 오후 org.apache.catalina.startup.VersionLoggerListener log
INFO: 아키텍처:          amd64
11월 05, 2025 2:47:01 오후 org.apache.catalina.startup.VersionLoggerListener log
INFO: 자바 홈:           C:\\dev\\jdk\\jdk-18.0.1.1
11월 05, 2025 2:47:01 오후 org.apache.catalina.startup.VersionLoggerListener log
INFO: JVM 버전:          18.0.1.1+2-6
11월 05, 2025 2:47:01 오후 org.apache.catalina.startup.VersionLoggerListener log
INFO: JVM 벤더:          Oracle Corporation
11월 05, 2025 2:47:01 오후 org.apache.catalina.startup.VersionLoggerListener log
INFO: CATALINA_BASE:     C:\\dev\\spring-workspace\\.metadata\\.plugins\\org.eclipse.wst.server.core\\tmp0
11월 05, 2025 2:47:01 오후 org.apache.catalina.startup.VersionLoggerListener log
INFO: CATALINA_HOME:     C:\\dev\\server\\apache-tomcat-9.0.55
11월 05, 2025 2:47:01 오후 org.apache.catalina.startup.VersionLoggerListener log
INFO: 명령 행 아규먼트:  -Dcatalina.base=C:\\dev\\spring-workspace\\.metadata\\.plugins\\org.eclipse.wst.server.core\\tmp0
11월 05, 2025 2:47:01 오후 org.apache.catalina.startup.VersionLoggerListener log
INFO: 명령 행 아규먼트:  -Dcatalina.home=C:\\dev\\server\\apache-tomcat-9.0.55
11월 05, 2025 2:47:01 오후 org.apache.catalina.startup.VersionLoggerListener log
INFO: 명령 행 아규먼트:  -Dwtp.deploy=C:\\dev\\spring-workspace\\.metadata\\.plugins\\org.eclipse.wst.server.core\\tmp0\\wtpwebapps
11월 05, 2025 2:47:01 오후 org.apache.catalina.startup.VersionLoggerListener log
INFO: 명령 행 아규먼트:  --add-opens=java.base/java.lang=ALL-UNNAMED
11월 05, 2025 2:47:01 오후 org.apache.catalina.startup.VersionLoggerListener log
INFO: 명령 행 아규먼트:  --add-opens=java.base/java.io=ALL-UNNAMED
11월 05, 2025 2:47:01 오후 org.apache.catalina.startup.VersionLoggerListener log
INFO: 명령 행 아규먼트:  --add-opens=java.base/java.util=ALL-UNNAMED
11월 05, 2025 2:47:01 오후 org.apache.catalina.startup.VersionLoggerListener log
INFO: 명령 행 아규먼트:  --add-opens=java.base/java.util.concurrent=ALL-UNNAMED
11월 05, 2025 2:47:01 오후 org.apache.catalina.startup.VersionLoggerListener log
INFO: 명령 행 아규먼트:  --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
11월 05, 2025 2:47:01 오후 org.apache.catalina.startup.VersionLoggerListener log
INFO: 명령 행 아규먼트:  -Dfile.encoding=MS949
11월 05, 2025 2:47:01 오후 org.apache.catalina.startup.VersionLoggerListener log
INFO: 명령 행 아규먼트:  -Dstdout.encoding=MS949
11월 05, 2025 2:47:01 오후 org.apache.catalina.startup.VersionLoggerListener log
INFO: 명령 행 아규먼트:  -Dstderr.encoding=MS949
11월 05, 2025 2:47:01 오후 org.apache.catalina.startup.VersionLoggerListener log
INFO: 명령 행 아규먼트:  -XX:+ShowCodeDetailsInExceptionMessages
11월 05, 2025 2:47:01 오후 org.apache.catalina.core.AprLifecycleListener lifecycleEvent
INFO: 프로덕션 환경들에서 최적의 성능을 제공하는, APR 기반 Apache Tomcat Native 라이브러리가, 다음 java.library.path에서 발견되지 않습니다: [C:\\dev\\jdk\\jdk-18.0.1.1\\bin;C:\\Windows\\Sun\\Java\\bin;C:\\Windows\\system32;C:\\Windows;C:/DEV/sts-4.26.0.RELEASE//plugins/org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_21.0.4.v20240802-1551/jre/bin/server;C:/DEV/sts-4.26.0.RELEASE//plugins/org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_21.0.4.v20240802-1551/jre/bin;C:\\Program Files (x86)\\VMware\\VMware Workstation\\bin\\;C:\\Program Files\\Java\\jdk-1.8\\bin;C:\\Windows\\system32;C:\\Windows;C:\\Windows\\System32\\Wbem;C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\;C:\\Windows\\System32\\OpenSSH\\;C:\\Program Files (x86)\\ATI Technologies\\ATI.ACE\\Core-Static;C:\\Program Files\\Bandizip\\;C:\\Program Files (x86)\\Windows Kits\\10\\Windows Performance Toolkit\\;%ORACLE_HOME%;%ORACLE_HOME%\\bin;C:\\Program Files\\VisualSVN Server\\bin;C:\\Program Files\\nodejs\\;C:\\Users\\USER\\AppData\\Local\\Microsoft\\WindowsApps;C:\\Users\\USER\\AppData\\Roaming\\npm;C:\\Users\\USER\\AppData\\Local\\Programs\\Microsoft VS Code\\bin;C:\\DEV\\sts-4.26.0.RELEASE;;.]
11월 05, 2025 2:47:02 오후 org.apache.coyote.AbstractProtocol init
INFO: 프로토콜 핸들러 ["http-nio-8080"]을(를) 초기화합니다.
11월 05, 2025 2:47:02 오후 org.apache.catalina.startup.Catalina load
INFO: [1175] 밀리초 내에 서버가 초기화되었습니다.
11월 05, 2025 2:47:02 오후 org.apache.catalina.core.StandardService startInternal
INFO: 서비스 [Catalina]을(를) 시작합니다.
11월 05, 2025 2:47:02 오후 org.apache.catalina.core.StandardEngine startInternal
INFO: 서버 엔진을 시작합니다: [Apache Tomcat/9.0.55]
11월 05, 2025 2:47:07 오후 org.apache.jasper.servlet.TldScanner scanJars
INFO: 적어도 하나의 JAR가 TLD들을 찾기 위해 스캔되었으나 아무 것도 찾지 못했습니다. 스캔했으나 TLD가 없는 JAR들의 전체 목록을 보시려면, 로그 레벨을 디버그 레벨로 설정하십시오. 스캔 과정에서 불필요한 JAR들을 건너뛰면, 시스템 시작 시간과 JSP 컴파일 시간을 단축시킬 수 있습니다.
11월 05, 2025 2:47:07 오후 org.apache.catalina.core.ApplicationContext log
INFO: No Spring WebApplicationInitializer types detected on classpath
11월 05, 2025 2:47:07 오후 org.apache.catalina.core.ApplicationContext log
INFO: Initializing Spring root WebApplicationContext
11월 05, 2025 2:47:10 오후 org.apache.catalina.core.ApplicationContext log
INFO: Initializing Spring FrameworkServlet 'action'
11월 05, 2025 2:47:17 오후 org.apache.jasper.servlet.TldScanner scanJars
INFO: 적어도 하나의 JAR가 TLD들을 찾기 위해 스캔되었으나 아무 것도 찾지 못했습니다. 스캔했으나 TLD가 없는 JAR들의 전체 목록을 보시려면, 로그 레벨을 디버그 레벨로 설정하십시오. 스캔 과정에서 불필요한 JAR들을 건너뛰면, 시스템 시작 시간과 JSP 컴파일 시간을 단축시킬 수 있습니다.
11월 05, 2025 2:47:17 오후 org.apache.catalina.core.ApplicationContext log
INFO: No Spring WebApplicationInitializer types detected on classpath
11월 05, 2025 2:47:17 오후 org.apache.catalina.core.ApplicationContext log
INFO: Initializing Spring root WebApplicationContext
11월 05, 2025 2:47:19 오후 org.apache.catalina.core.ApplicationContext log
INFO: Initializing Spring FrameworkServlet 'action'
11월 05, 2025 2:47:21 오후 org.apache.coyote.AbstractProtocol start
INFO: 프로토콜 핸들러 ["http-nio-8080"]을(를) 시작합니다.
11월 05, 2025 2:47:21 오후 org.apache.catalina.startup.Catalina start
INFO: 서버가 [19109] 밀리초 내에 시작되었습니다.
2025-11-05 14:47:29,679 DEBUG [first.common.logger.LoggerInterceptor] ================== START ======================
dddddd
2025-11-05 14:47:29,679 DEBUG [first.common.logger.LoggerInterceptor]  Request URI 	 : /RestBoard/board/api/detail/5951
2025-11-05 14:47:29,781 DEBUG [first.common.logger.LoggerAspect] Controller 	: first.board.controller.BoardRestController.selectBoardDetail()
2025-11-05 14:47:29,816 DEBUG [first.common.logger.LoggerAspect] DAO 		: first.board.dao.BoardDAO.updateBoardHitCnt()
2025-11-05 14:47:29,841 DEBUG [first.common.dao.AbstractDAO] 	 QueryId  	:  board.updateBoardDetailHit
2025-11-05 14:47:30,234  INFO SQL         :  UPDATE SCOTT.TB_BOARD SET
			HIT_CNT = HIT_CNT +1
			WHERE IDX = '5951'
2025-11-05 14:47:30,248 DEBUG [first.common.logger.LoggerAspect] DAO 		: first.board.dao.BoardDAO.selectBoardDetail()
2025-11-05 14:47:30,248 DEBUG [first.common.dao.AbstractDAO] 	 QueryId  	:  board.selectBoardDetail
2025-11-05 14:47:30,256  INFO SQL         :  SELECT 
				  IDX 
				, TITLE 
				, CONTENTS 
				, HIT_CNT 
				, TO_CHAR(CREA_DTM, 'YYYY-MM-DD hh:mm:ss') AS CREA_DTM
				, (SELECT NICK_NM FROM SCOTT.TB_MEMBER WHERE ID = CREA_ID) AS CREA_NM 
			FROM SCOTT.TB_BOARD 
			WHERE IDX = '5951'
2025-11-05 14:47:30,297  INFO [jdbc.resultsettable] |-----|------|---------|--------|--------------------|--------|
2025-11-05 14:47:30,297  INFO [jdbc.resultsettable] |IDX  |TITLE |CONTENTS |HIT_CNT |CREA_DTM            |CREA_NM |
2025-11-05 14:47:30,298  INFO [jdbc.resultsettable] |-----|------|---------|--------|--------------------|--------|
2025-11-05 14:47:30,299  INFO [jdbc.resultsettable] |5951 |제목이전1 |내용       |65      |2025-10-17 01:10:36 |[null]  |
2025-11-05 14:47:30,300  INFO [jdbc.resultsettable] |-----|------|---------|--------|--------------------|--------|
2025-11-05 14:47:30,321 DEBUG [first.common.logger.LoggerInterceptor] =================== END =======================
2025-11-05 14:47:30,387 DEBUG [first.common.logger.LoggerInterceptor] ================== START ======================
dddddd
2025-11-05 14:47:30,387 DEBUG [first.common.logger.LoggerInterceptor]  Request URI 	 : /RestBoard/board/api/detail/5951
2025-11-05 14:47:30,393 DEBUG [first.common.logger.LoggerAspect] Controller 	: first.board.controller.BoardRestController.selectBoardDetail()
2025-11-05 14:47:30,393 DEBUG [first.common.logger.LoggerAspect] DAO 		: first.board.dao.BoardDAO.updateBoardHitCnt()
2025-11-05 14:47:30,393 DEBUG [first.common.dao.AbstractDAO] 	 QueryId  	:  board.updateBoardDetailHit
2025-11-05 14:47:30,396  INFO SQL         :  UPDATE SCOTT.TB_BOARD SET
			HIT_CNT = HIT_CNT +1
			WHERE IDX = '5951'
2025-11-05 14:47:30,406 DEBUG [first.common.logger.LoggerAspect] DAO 		: first.board.dao.BoardDAO.selectBoardDetail()
2025-11-05 14:47:30,407 DEBUG [first.common.dao.AbstractDAO] 	 QueryId  	:  board.selectBoardDetail
2025-11-05 14:47:30,407  INFO SQL         :  SELECT 
				  IDX 
				, TITLE 
				, CONTENTS 
				, HIT_CNT 
				, TO_CHAR(CREA_DTM, 'YYYY-MM-DD hh:mm:ss') AS CREA_DTM
				, (SELECT NICK_NM FROM SCOTT.TB_MEMBER WHERE ID = CREA_ID) AS CREA_NM 
			FROM SCOTT.TB_BOARD 
			WHERE IDX = '5951'
2025-11-05 14:47:30,410  INFO [jdbc.resultsettable] |-----|------|---------|--------|--------------------|--------|
2025-11-05 14:47:30,411  INFO [jdbc.resultsettable] |IDX  |TITLE |CONTENTS |HIT_CNT |CREA_DTM            |CREA_NM |
2025-11-05 14:47:30,411  INFO [jdbc.resultsettable] |-----|------|---------|--------|--------------------|--------|
2025-11-05 14:47:30,411  INFO [jdbc.resultsettable] |5951 |제목이전1 |내용       |66      |2025-10-17 01:10:36 |[null]  |
2025-11-05 14:47:30,412  INFO [jdbc.resultsettable] |-----|------|---------|--------|--------------------|--------|
2025-11-05 14:47:30,414 DEBUG [first.common.logger.LoggerInterceptor] =================== END =======================
2025-11-05 14:47:31,932 DEBUG [first.common.logger.LoggerInterceptor] ================== START ======================
dddddd
2025-11-05 14:47:31,932 DEBUG [first.common.logger.LoggerInterceptor]  Request URI 	 : /RestBoard/board/api/list
2025-11-05 14:47:31,946 DEBUG [first.common.logger.LoggerAspect] Controller 	: first.board.controller.BoardRestController.selectBoardList()
2025-11-05 14:47:31,947 DEBUG [first.board.controller.BoardRestController] {page=1, type=TITLE, keyword=}
2025-11-05 14:47:31,947 DEBUG [first.common.logger.LoggerAspect] DAO 		: first.board.dao.BoardDAO.selectBoardList()
2025-11-05 14:47:31,947 DEBUG [first.common.dao.AbstractDAO] 	 QueryId  	:  board.selectBoardList
2025-11-05 14:47:32,022  INFO SQL         :  SELECT RNUM, IDX, TITLE, HIT_CNT, CREA_NM, CREA_DTM  FROM(
				SELECT ROW_NUMBER() OVER(ORDER BY IDX DESC) AS RNUM ,
						IDX,
						TITLE,
						HIT_CNT,
						(SELECT NICK_NM FROM SCOTT.TB_MEMBER WHERE ID = CREA_ID) AS CREA_NM,
						TO_CHAR( CREA_DTM , 'YYYY-MM-DD')CREA_DTM
				FROM SCOTT.TB_BOARD 
				WHERE DEL_GB = 'N'	
			 
				
			 
        	
			 					
			)WHERE RNUM BETWEEN 1 AND 10
2025-11-05 14:47:32,030  INFO [jdbc.resultsettable] |-----|-----|------------|--------|--------|-----------|
2025-11-05 14:47:32,030  INFO [jdbc.resultsettable] |RNUM |IDX  |TITLE       |HIT_CNT |CREA_NM |CREA_DTM   |
2025-11-05 14:47:32,030  INFO [jdbc.resultsettable] |-----|-----|------------|--------|--------|-----------|
2025-11-05 14:47:32,030  INFO [jdbc.resultsettable] |1    |5993 |수정되나        |249     |[null]  |2025-10-22 |
2025-11-05 14:47:32,031  INFO [jdbc.resultsettable] |2    |5992 |321         |7       |123     |2025-10-22 |
2025-11-05 14:47:32,031  INFO [jdbc.resultsettable] |3    |5991 |성공햇쯰2       |110     |[null]  |2025-10-22 |
2025-11-05 14:47:32,031  INFO [jdbc.resultsettable] |4    |5990 |123         |10      |123     |2025-10-22 |
2025-11-05 14:47:32,031  INFO [jdbc.resultsettable] |5    |5969 |페이징확인용1     |96      |[null]  |2025-10-20 |
2025-11-05 14:47:32,031  INFO [jdbc.resultsettable] |6    |5954 |제목 이후2      |83      |[null]  |2025-10-17 |
2025-11-05 14:47:32,031  INFO [jdbc.resultsettable] |7    |5953 |제목이후1(수정테스트 |127     |[null]  |2025-10-17 |
2025-11-05 14:47:32,031  INFO [jdbc.resultsettable] |8    |5952 |기준          |182     |[null]  |2025-10-17 |
2025-11-05 14:47:32,032  INFO [jdbc.resultsettable] |9    |5951 |제목이전1       |66      |[null]  |2025-10-17 |
2025-11-05 14:47:32,032  INFO [jdbc.resultsettable] |10   |5950 |제목이전2       |31      |[null]  |2025-10-17 |
2025-11-05 14:47:32,032  INFO [jdbc.resultsettable] |-----|-----|------------|--------|--------|-----------|
2025-11-05 14:47:32,044 DEBUG [first.common.logger.LoggerAspect] DAO 		: first.board.dao.BoardDAO.selectBoardTotalPage()
2025-11-05 14:47:32,045 DEBUG [first.common.dao.AbstractDAO] 	 QueryId  	:  board.selectBoardTotalPage
2025-11-05 14:47:32,045  INFO SQL         :  SELECT CEIL(COUNT(*)/10.0) 
			FROM SCOTT.TB_BOARD
			WHERE DEL_GB = 'N'
2025-11-05 14:47:32,066  INFO [jdbc.resultsettable] |--------------------|
2025-11-05 14:47:32,066  INFO [jdbc.resultsettable] |CEIL(COUNT(*)/10.0) |
2025-11-05 14:47:32,066  INFO [jdbc.resultsettable] |--------------------|
2025-11-05 14:47:32,067  INFO [jdbc.resultsettable] |145                 |
2025-11-05 14:47:32,067  INFO [jdbc.resultsettable] |--------------------|
2025-11-05 14:47:32,071 DEBUG [first.common.logger.LoggerInterceptor] =================== END =======================
2025-11-05 14:47:32,143 DEBUG [first.common.logger.LoggerInterceptor] ================== START ======================
dddddd
2025-11-05 14:47:32,143 DEBUG [first.common.logger.LoggerInterceptor]  Request URI 	 : /RestBoard/board/api/list
2025-11-05 14:47:32,148 DEBUG [first.common.logger.LoggerAspect] Controller 	: first.board.controller.BoardRestController.selectBoardList()
2025-11-05 14:47:32,148 DEBUG [first.board.controller.BoardRestController] {page=1, type=TITLE, keyword=}
2025-11-05 14:47:32,148 DEBUG [first.common.logger.LoggerAspect] DAO 		: first.board.dao.BoardDAO.selectBoardList()
2025-11-05 14:47:32,148 DEBUG [first.common.dao.AbstractDAO] 	 QueryId  	:  board.selectBoardList
2025-11-05 14:47:32,153  INFO SQL         :  SELECT RNUM, IDX, TITLE, HIT_CNT, CREA_NM, CREA_DTM  FROM(
				SELECT ROW_NUMBER() OVER(ORDER BY IDX DESC) AS RNUM ,
						IDX,
						TITLE,
						HIT_CNT,
						(SELECT NICK_NM FROM SCOTT.TB_MEMBER WHERE ID = CREA_ID) AS CREA_NM,
						TO_CHAR( CREA_DTM , 'YYYY-MM-DD')CREA_DTM
				FROM SCOTT.TB_BOARD 
				WHERE DEL_GB = 'N'	
			 
				
			 
        	
			 					
			)WHERE RNUM BETWEEN 1 AND 10
2025-11-05 14:47:32,160  INFO [jdbc.resultsettable] |-----|-----|------------|--------|--------|-----------|
2025-11-05 14:47:32,161  INFO [jdbc.resultsettable] |RNUM |IDX  |TITLE       |HIT_CNT |CREA_NM |CREA_DTM   |
2025-11-05 14:47:32,161  INFO [jdbc.resultsettable] |-----|-----|------------|--------|--------|-----------|
2025-11-05 14:47:32,162  INFO [jdbc.resultsettable] |1    |5993 |수정되나        |249     |[null]  |2025-10-22 |
2025-11-05 14:47:32,162  INFO [jdbc.resultsettable] |2    |5992 |321         |7       |123     |2025-10-22 |
2025-11-05 14:47:32,162  INFO [jdbc.resultsettable] |3    |5991 |성공햇쯰2       |110     |[null]  |2025-10-22 |
2025-11-05 14:47:32,162  INFO [jdbc.resultsettable] |4    |5990 |123         |10      |123     |2025-10-22 |
2025-11-05 14:47:32,162  INFO [jdbc.resultsettable] |5    |5969 |페이징확인용1     |96      |[null]  |2025-10-20 |
2025-11-05 14:47:32,162  INFO [jdbc.resultsettable] |6    |5954 |제목 이후2      |83      |[null]  |2025-10-17 |
2025-11-05 14:47:32,163  INFO [jdbc.resultsettable] |7    |5953 |제목이후1(수정테스트 |127     |[null]  |2025-10-17 |
2025-11-05 14:47:32,163  INFO [jdbc.resultsettable] |8    |5952 |기준          |182     |[null]  |2025-10-17 |
2025-11-05 14:47:32,163  INFO [jdbc.resultsettable] |9    |5951 |제목이전1       |66      |[null]  |2025-10-17 |
2025-11-05 14:47:32,163  INFO [jdbc.resultsettable] |10   |5950 |제목이전2       |31      |[null]  |2025-10-17 |
2025-11-05 14:47:32,163  INFO [jdbc.resultsettable] |-----|-----|------------|--------|--------|-----------|
2025-11-05 14:47:32,164 DEBUG [first.common.logger.LoggerAspect] DAO 		: first.board.dao.BoardDAO.selectBoardTotalPage()
2025-11-05 14:47:32,164 DEBUG [first.common.dao.AbstractDAO] 	 QueryId  	:  board.selectBoardTotalPage
2025-11-05 14:47:32,165  INFO SQL         :  SELECT CEIL(COUNT(*)/10.0) 
			FROM SCOTT.TB_BOARD
			WHERE DEL_GB = 'N'
2025-11-05 14:47:32,167  INFO [jdbc.resultsettable] |--------------------|
2025-11-05 14:47:32,168  INFO [jdbc.resultsettable] |CEIL(COUNT(*)/10.0) |
2025-11-05 14:47:32,168  INFO [jdbc.resultsettable] |--------------------|
2025-11-05 14:47:32,168  INFO [jdbc.resultsettable] |145                 |
2025-11-05 14:47:32,168  INFO [jdbc.resultsettable] |--------------------|
2025-11-05 14:47:32,170 DEBUG [first.common.logger.LoggerInterceptor] =================== END =======================
2025-11-05 14:47:33,489 DEBUG [first.common.logger.LoggerInterceptor] ================== START ======================
dddddd
2025-11-05 14:47:33,489 DEBUG [first.common.logger.LoggerInterceptor]  Request URI 	 : /RestBoard/board/api/detail/5991
2025-11-05 14:47:33,490 DEBUG [first.common.logger.LoggerAspect] Controller 	: first.board.controller.BoardRestController.selectBoardDetail()
2025-11-05 14:47:33,490 DEBUG [first.common.logger.LoggerAspect] DAO 		: first.board.dao.BoardDAO.updateBoardHitCnt()
2025-11-05 14:47:33,491 DEBUG [first.common.dao.AbstractDAO] 	 QueryId  	:  board.updateBoardDetailHit
2025-11-05 14:47:33,491  INFO SQL         :  UPDATE SCOTT.TB_BOARD SET
			HIT_CNT = HIT_CNT +1
			WHERE IDX = '5991'
2025-11-05 14:47:33,504 DEBUG [first.common.logger.LoggerAspect] DAO 		: first.board.dao.BoardDAO.selectBoardDetail()
2025-11-05 14:47:33,504 DEBUG [first.common.dao.AbstractDAO] 	 QueryId  	:  board.selectBoardDetail
2025-11-05 14:47:33,505  INFO SQL         :  SELECT 
				  IDX 
				, TITLE 
				, CONTENTS 
				, HIT_CNT 
				, TO_CHAR(CREA_DTM, 'YYYY-MM-DD hh:mm:ss') AS CREA_DTM
				, (SELECT NICK_NM FROM SCOTT.TB_MEMBER WHERE ID = CREA_ID) AS CREA_NM 
			FROM SCOTT.TB_BOARD 
			WHERE IDX = '5991'
2025-11-05 14:47:33,508  INFO [jdbc.resultsettable] |-----|------|---------|--------|--------------------|--------|
2025-11-05 14:47:33,508  INFO [jdbc.resultsettable] |IDX  |TITLE |CONTENTS |HIT_CNT |CREA_DTM            |CREA_NM |
2025-11-05 14:47:33,508  INFO [jdbc.resultsettable] |-----|------|---------|--------|--------------------|--------|
2025-11-05 14:47:33,509  INFO [jdbc.resultsettable] |5991 |성공햇쯰2 |성공햇쯰3    |111     |2025-10-22 07:10:55 |[null]  |
2025-11-05 14:47:33,509  INFO [jdbc.resultsettable] |-----|------|---------|--------|--------------------|--------|
2025-11-05 14:47:33,511 DEBUG [first.common.logger.LoggerInterceptor] =================== END =======================
2025-11-05 14:47:33,528 DEBUG [first.common.logger.LoggerInterceptor] ================== START ======================
dddddd
2025-11-05 14:47:33,529 DEBUG [first.common.logger.LoggerInterceptor]  Request URI 	 : /RestBoard/board/api/detail/5991
2025-11-05 14:47:33,530 DEBUG [first.common.logger.LoggerAspect] Controller 	: first.board.controller.BoardRestController.selectBoardDetail()
2025-11-05 14:47:33,530 DEBUG [first.common.logger.LoggerAspect] DAO 		: first.board.dao.BoardDAO.updateBoardHitCnt()
2025-11-05 14:47:33,530 DEBUG [first.common.dao.AbstractDAO] 	 QueryId  	:  board.updateBoardDetailHit
2025-11-05 14:47:33,530  INFO SQL         :  UPDATE SCOTT.TB_BOARD SET
			HIT_CNT = HIT_CNT +1
			WHERE IDX = '5991'
2025-11-05 14:47:33,545 DEBUG [first.common.logger.LoggerAspect] DAO 		: first.board.dao.BoardDAO.selectBoardDetail()
2025-11-05 14:47:33,545 DEBUG [first.common.dao.AbstractDAO] 	 QueryId  	:  board.selectBoardDetail
2025-11-05 14:47:33,545  INFO SQL         :  SELECT 
				  IDX 
				, TITLE 
				, CONTENTS 
				, HIT_CNT 
				, TO_CHAR(CREA_DTM, 'YYYY-MM-DD hh:mm:ss') AS CREA_DTM
				, (SELECT NICK_NM FROM SCOTT.TB_MEMBER WHERE ID = CREA_ID) AS CREA_NM 
			FROM SCOTT.TB_BOARD 
			WHERE IDX = '5991'
2025-11-05 14:47:33,551  INFO [jdbc.resultsettable] |-----|------|---------|--------|--------------------|--------|
2025-11-05 14:47:33,551  INFO [jdbc.resultsettable] |IDX  |TITLE |CONTENTS |HIT_CNT |CREA_DTM            |CREA_NM |
2025-11-05 14:47:33,552  INFO [jdbc.resultsettable] |-----|------|---------|--------|--------------------|--------|
2025-11-05 14:47:33,552  INFO [jdbc.resultsettable] |5991 |성공햇쯰2 |성공햇쯰3    |112     |2025-10-22 07:10:55 |[null]  |
2025-11-05 14:47:33,552  INFO [jdbc.resultsettable] |-----|------|---------|--------|--------------------|--------|
2025-11-05 14:47:33,554 DEBUG [first.common.logger.LoggerInterceptor] =================== END =======================
2025-11-05 14:47:34,899 DEBUG [first.common.logger.LoggerInterceptor] ================== START ======================
dddddd
2025-11-05 14:47:34,899 DEBUG [first.common.logger.LoggerInterceptor]  Request URI 	 : /RestBoard/board/api/detail/5991
2025-11-05 14:47:34,900 DEBUG [first.common.logger.LoggerAspect] Controller 	: first.board.controller.BoardRestController.selectBoardDetail()
2025-11-05 14:47:34,901 DEBUG [first.common.logger.LoggerAspect] DAO 		: first.board.dao.BoardDAO.updateBoardHitCnt()
2025-11-05 14:47:34,901 DEBUG [first.common.dao.AbstractDAO] 	 QueryId  	:  board.updateBoardDetailHit
2025-11-05 14:47:34,902  INFO SQL         :  UPDATE SCOTT.TB_BOARD SET
			HIT_CNT = HIT_CNT +1
			WHERE IDX = '5991'
2025-11-05 14:47:34,971 DEBUG [first.common.logger.LoggerAspect] DAO 		: first.board.dao.BoardDAO.selectBoardDetail()
2025-11-05 14:47:34,971 DEBUG [first.common.dao.AbstractDAO] 	 QueryId  	:  board.selectBoardDetail
2025-11-05 14:47:34,972  INFO SQL         :  SELECT 
				  IDX 
				, TITLE 
				, CONTENTS 
				, HIT_CNT 
				, TO_CHAR(CREA_DTM, 'YYYY-MM-DD hh:mm:ss') AS CREA_DTM
				, (SELECT NICK_NM FROM SCOTT.TB_MEMBER WHERE ID = CREA_ID) AS CREA_NM 
			FROM SCOTT.TB_BOARD 
			WHERE IDX = '5991'
2025-11-05 14:47:34,974  INFO [jdbc.resultsettable] |-----|------|---------|--------|--------------------|--------|
2025-11-05 14:47:34,975  INFO [jdbc.resultsettable] |IDX  |TITLE |CONTENTS |HIT_CNT |CREA_DTM            |CREA_NM |
2025-11-05 14:47:34,975  INFO [jdbc.resultsettable] |-----|------|---------|--------|--------------------|--------|
2025-11-05 14:47:34,975  INFO [jdbc.resultsettable] |5991 |성공햇쯰2 |성공햇쯰3    |113     |2025-10-22 07:10:55 |[null]  |
2025-11-05 14:47:34,975  INFO [jdbc.resultsettable] |-----|------|---------|--------|--------------------|--------|
2025-11-05 14:47:34,977 DEBUG [first.common.logger.LoggerInterceptor] =================== END =======================
2025-11-05 14:47:34,992 DEBUG [first.common.logger.LoggerInterceptor] ================== START ======================
dddddd
2025-11-05 14:47:34,992 DEBUG [first.common.logger.LoggerInterceptor]  Request URI 	 : /RestBoard/board/api/detail/5991
2025-11-05 14:47:34,993 DEBUG [first.common.logger.LoggerAspect] Controller 	: first.board.controller.BoardRestController.selectBoardDetail()
2025-11-05 14:47:34,994 DEBUG [first.common.logger.LoggerAspect] DAO 		: first.board.dao.BoardDAO.updateBoardHitCnt()
2025-11-05 14:47:34,994 DEBUG [first.common.dao.AbstractDAO] 	 QueryId  	:  board.updateBoardDetailHit
2025-11-05 14:47:34,994  INFO SQL         :  UPDATE SCOTT.TB_BOARD SET
			HIT_CNT = HIT_CNT +1
			WHERE IDX = '5991'
2025-11-05 14:47:35,018 DEBUG [first.common.logger.LoggerAspect] DAO 		: first.board.dao.BoardDAO.selectBoardDetail()
2025-11-05 14:47:35,018 DEBUG [first.common.dao.AbstractDAO] 	 QueryId  	:  board.selectBoardDetail
2025-11-05 14:47:35,019  INFO SQL         :  SELECT 
				  IDX 
				, TITLE 
				, CONTENTS 
				, HIT_CNT 
				, TO_CHAR(CREA_DTM, 'YYYY-MM-DD hh:mm:ss') AS CREA_DTM
				, (SELECT NICK_NM FROM SCOTT.TB_MEMBER WHERE ID = CREA_ID) AS CREA_NM 
			FROM SCOTT.TB_BOARD 
			WHERE IDX = '5991'
2025-11-05 14:47:35,022  INFO [jdbc.resultsettable] |-----|------|---------|--------|--------------------|--------|
2025-11-05 14:47:35,022  INFO [jdbc.resultsettable] |IDX  |TITLE |CONTENTS |HIT_CNT |CREA_DTM            |CREA_NM |
2025-11-05 14:47:35,023  INFO [jdbc.resultsettable] |-----|------|---------|--------|--------------------|--------|
2025-11-05 14:47:35,023  INFO [jdbc.resultsettable] |5991 |성공햇쯰2 |성공햇쯰3    |114     |2025-10-22 07:10:55 |[null]  |
2025-11-05 14:47:35,023  INFO [jdbc.resultsettable] |-----|------|---------|--------|--------------------|--------|
2025-11-05 14:47:35,025 DEBUG [first.common.logger.LoggerInterceptor] =================== END =======================
2025-11-05 14:47:43,319 DEBUG [first.common.logger.LoggerInterceptor] ================== START ======================
dddddd
2025-11-05 14:47:43,319 DEBUG [first.common.logger.LoggerInterceptor]  Request URI 	 : /RestBoard/board/api/detail/5991
2025-11-05 14:47:43,320 DEBUG [first.common.logger.LoggerInterceptor] =================== END =======================
2025-11-05 14:47:43,336 DEBUG [first.common.logger.LoggerInterceptor] ================== START ======================
dddddd
2025-11-05 14:47:43,336 DEBUG [first.common.logger.LoggerInterceptor]  Request URI 	 : /RestBoard/board/api/detail/5991
2025-11-05 14:47:43,474 DEBUG [first.common.logger.LoggerAspect] Controller 	: first.board.controller.BoardRestController.updateBoardDetail()
2025-11-05 14:47:43,474 DEBUG [first.board.controller.BoardRestController] updateBoardDetail param: {"CREA_ID":"reactUser","TITLE":"성공햇쯰2","IDX":"5991","CONTENTS":"서버 재가동 후에 테스트"}
2025-11-05 14:47:43,474 DEBUG [first.common.logger.LoggerAspect] DAO 		: first.board.dao.BoardDAO.updateBoardDetail()
2025-11-05 14:47:43,475 DEBUG [first.common.dao.AbstractDAO] 	 QueryId  	:  board.updateBoardDetail
2025-11-05 14:47:43,477  INFO SQL         :  UPDATE SCOTT.TB_BOARD SET
			  TITLE = '성공햇쯰2'
			, CONTENTS = '서버 재가동 후에 테스트' 
		WHERE DEL_GB = 'N'
			AND IDX = '5991'
2025-11-05 14:47:43,501 DEBUG [first.common.logger.LoggerInterceptor] =================== END =======================
2025-11-05 14:47:43,529 DEBUG [first.common.logger.LoggerInterceptor] ================== START ======================
dddddd
2025-11-05 14:47:43,529 DEBUG [first.common.logger.LoggerInterceptor]  Request URI 	 : /RestBoard/board/api/detail/5991
2025-11-05 14:47:43,530 DEBUG [first.common.logger.LoggerAspect] Controller 	: first.board.controller.BoardRestController.selectBoardDetail()
2025-11-05 14:47:43,530 DEBUG [first.common.logger.LoggerAspect] DAO 		: first.board.dao.BoardDAO.updateBoardHitCnt()
2025-11-05 14:47:43,530 DEBUG [first.common.dao.AbstractDAO] 	 QueryId  	:  board.updateBoardDetailHit
2025-11-05 14:47:43,531  INFO SQL         :  UPDATE SCOTT.TB_BOARD SET
			HIT_CNT = HIT_CNT +1
			WHERE IDX = '5991'
2025-11-05 14:47:43,540 DEBUG [first.common.logger.LoggerAspect] DAO 		: first.board.dao.BoardDAO.selectBoardDetail()
2025-11-05 14:47:43,540 DEBUG [first.common.dao.AbstractDAO] 	 QueryId  	:  board.selectBoardDetail
2025-11-05 14:47:43,541  INFO SQL         :  SELECT 
				  IDX 
				, TITLE 
				, CONTENTS 
				, HIT_CNT 
				, TO_CHAR(CREA_DTM, 'YYYY-MM-DD hh:mm:ss') AS CREA_DTM
				, (SELECT NICK_NM FROM SCOTT.TB_MEMBER WHERE ID = CREA_ID) AS CREA_NM 
			FROM SCOTT.TB_BOARD 
			WHERE IDX = '5991'
2025-11-05 14:47:43,543  INFO [jdbc.resultsettable] |-----|------|--------------|--------|--------------------|--------|
2025-11-05 14:47:43,543  INFO [jdbc.resultsettable] |IDX  |TITLE |CONTENTS      |HIT_CNT |CREA_DTM            |CREA_NM |
2025-11-05 14:47:43,544  INFO [jdbc.resultsettable] |-----|------|--------------|--------|--------------------|--------|
2025-11-05 14:47:43,544  INFO [jdbc.resultsettable] |5991 |성공햇쯰2 |서버 재가동 후에 테스트 |115     |2025-10-22 07:10:55 |[null]  |
2025-11-05 14:47:43,544  INFO [jdbc.resultsettable] |-----|------|--------------|--------|--------------------|--------|
2025-11-05 14:47:43,545 DEBUG [first.common.logger.LoggerInterceptor] =================== END =======================
2025-11-05 14:47:43,557 DEBUG [first.common.logger.LoggerInterceptor] ================== START ======================
dddddd
2025-11-05 14:47:43,557 DEBUG [first.common.logger.LoggerInterceptor]  Request URI 	 : /RestBoard/board/api/detail/5991
2025-11-05 14:47:43,558 DEBUG [first.common.logger.LoggerAspect] Controller 	: first.board.controller.BoardRestController.selectBoardDetail()
2025-11-05 14:47:43,558 DEBUG [first.common.logger.LoggerAspect] DAO 		: first.board.dao.BoardDAO.updateBoardHitCnt()
2025-11-05 14:47:43,558 DEBUG [first.common.dao.AbstractDAO] 	 QueryId  	:  board.updateBoardDetailHit
2025-11-05 14:47:43,559  INFO SQL         :  UPDATE SCOTT.TB_BOARD SET
			HIT_CNT = HIT_CNT +1
			WHERE IDX = '5991'
2025-11-05 14:47:43,570 DEBUG [first.common.logger.LoggerAspect] DAO 		: first.board.dao.BoardDAO.selectBoardDetail()
2025-11-05 14:47:43,570 DEBUG [first.common.dao.AbstractDAO] 	 QueryId  	:  board.selectBoardDetail
2025-11-05 14:47:43,571  INFO SQL         :  SELECT 
				  IDX 
				, TITLE 
				, CONTENTS 
				, HIT_CNT 
				, TO_CHAR(CREA_DTM, 'YYYY-MM-DD hh:mm:ss') AS CREA_DTM
				, (SELECT NICK_NM FROM SCOTT.TB_MEMBER WHERE ID = CREA_ID) AS CREA_NM 
			FROM SCOTT.TB_BOARD 
			WHERE IDX = '5991'
2025-11-05 14:47:43,574  INFO [jdbc.resultsettable] |-----|------|--------------|--------|--------------------|--------|
2025-11-05 14:47:43,574  INFO [jdbc.resultsettable] |IDX  |TITLE |CONTENTS      |HIT_CNT |CREA_DTM            |CREA_NM |
2025-11-05 14:47:43,574  INFO [jdbc.resultsettable] |-----|------|--------------|--------|--------------------|--------|
2025-11-05 14:47:43,574  INFO [jdbc.resultsettable] |5991 |성공햇쯰2 |서버 재가동 후에 테스트 |116     |2025-10-22 07:10:55 |[null]  |
2025-11-05 14:47:43,574  INFO [jdbc.resultsettable] |-----|------|--------------|--------|--------------------|--------|
2025-11-05 14:47:43,576 DEBUG [first.common.logger.LoggerInterceptor] =================== END =======================