: url 파라미터로부터 게시물 index 얻는 법
// [url에서 정보 가져오기]
let temp_url = window.location.href; // 현재의 url 정보
let split_temp_url = temp_url.split('/'); // 슬래쉬인 '/'으로 split
let final_id = split_temp_url[split_temp_url.length - 1]; // 마지막 변수값을 가져온다.
// [?가 존재하는 경우의 id값 추출하기]
let split_q = final_id.split("?"); // 물음표인 '?'으로 split
if(split_q.length > 0){ // split한 값이 0 이상이이면? 값이 존재한다는 사실.
final_id = split_q[0]; // split하여 얻은 값의 0번째 index는 게시물 id를 의미.
}
$(document).read(function() {
detail_board(); // detail_board() 함수를 실행
})
: detail_board 함수 수정 (data의 order)
function detail_board(){
$.ajax({
url : "/api/board/detail",
type : "GET",
contentType : 'application/json; charset=utf-8',
// data : { order : $("#detail_board_order").val()},
data : { order : final_id},
cache : false,
success : (obj_data, status, xhr) => {
console.log(JSON.stringify(obj_data));
// 가져온 값 (order, title, content, author)을 경고창에서 띄운다.
// alert(obj_data["resultCode"]);
alert(obj_data["detail_board"]["order"]);
alert(obj_data["detail_board"]["title"]);
alert(obj_data["detail_board"]["content"]);
alert(obj_data["detail_board"]["author"]);
// $("#detail_board_title").val(obj_data.order); // 이렇게도 표현 가능
$("#detail_board_order").val(obj_data["detail_board"]["order"]);
$("#detail_board_title").val(obj_data["detail_board"]["title"]);
$("#detail_board_content").val(obj_data["detail_board"]["content"]);
$("#detail_board_author").val(obj_data["detail_board"]["author"]);
},
error: (obj_data, status, error) => {
alert("error!!");
alert(JSON.stringify(obj_data));
}
})
}
// 첫 번째 방법
$("#detail_board_title").val(obj_data.order); // 이렇게도 표현 가능
// 두 번째 방법
$("#detail_board_order").val(obj_data["detail_board"]["order"]);
<input type = "text" id = "detail_board_order" readonly/>
<input type = "text" id = "detail_board_title"/>
<input type = "text" id = "detail_board_content"/>
<input type = "text" id = "detail_board_author"/>
<button onclick="update_board()">글 수정하기</button>
function update_board(){
$.ajax({
url : "/api/board/update",
type : "GET",
contentType : 'application/json; charset=utf-8',
// data : { order : $("#detail_board_order").val()},
data : {
order: final_id,
title: $("#detail_board_title").val(),
content: $("#detail_board_content").val(),
author: $("#detail_board_author").val(),
},
cache : false,
success : (obj_data, status, xhr) => {
alert("수정 완료!");
},
error: (obj_data, status, error) => {
alert("error!!");
alert(JSON.stringify(obj_data));
}
})
}
@GetMapping({"/update"})
public Map<String, Object> update(@RequestParam Map<String, Object> params) {
int index = Integer.parseInt(params.get("order") + "") - 1;
// boardList에서 index 번째의 값(게시물)을 Map 타입의 boardMap으로 선언 및 할당.
Map<String, Object> boardMap = boardList.get(index);
// boradMap에 수정된 내용으로 변경.
boardMap.put("title", params.get("title"));
boardMap.put("content", params.get("content"));
boardMap.put("author", params.get("author"));
// 결과 출력 Map 선언 및 할당
Map<String, Object> resultMap = new HashMap<>();
resultMap.put("resultCOde", 200);
return resultMap;
}
/api/board/update
1) 수정하기 전
2) 수정한 뒤
:dependencies에 아래의 내용을 추가한다.
//domain
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
//db
runtimeOnly 'com.mysql:mysql-connector-j'
implementation group: 'org.mariadb.jdbc', name: 'mariadb-java-client', version: '2.2.0' //db
datasource:
url: jdbc:mysql://도메인 주소:3306/스키마 이름?characterEncoding=UTF-8&serverTimezone=Asia/Seoul
username: (유저이름)
password: (유저 비밀번호)
driver-class-name: com.mysql.cj.jdbc.Driver
sql 연결했음
build.gradle / application.yaml 파일 수정
경로 : src/main/java/com.example/demo/domain와 같이 'domain' 폴더 생성
package com.example.demo.domain;
import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import lombok.Getter;
import lombok.Setter;
// repository를 만들기 위해서 entity를 만드는 과정이다. 이를 위해 필요한 게 entity
// 이 모든 것은 DB랑의 연결을 위함이다.
@Setter
@Getter
@Entity // 데이터 베이스 알아서 만들어주고, 내 데이터 베이스랑 결합해서 사용할거라는 의미.
public class Board {
@Id // primary key를 지정
Integer id;
// 데이터 정보 선언
String title;
String content;
String author;
}