create user 'spring'@'%' identified by 'bitc5600';
GRANT ALL PRIVILEGES ON *.* TO 'spring'@'%';
create database spring;
use spring;
CREATE TABLE user(
id int auto_increment primary key,
username varchar(100) unique not null,
password varchar(100) not null,
email varchar(100),
profile varchar(200),
createDate timestamp
) engine=InnoDB default charset=utf8;
CREATE TABLE post(
id int auto_increment primary key,
title varchar(100) not null,
content longtext,
userId int,
createDate timestamp,
foreign key (userId) references user (id) on delete set null
) engine=InnoDB default charset=utf8;
CREATE TABLE comment(
id int auto_increment primary key,
userId int,
postId int,
content varchar(300) not null,
createDate timestamp,
foreign key (userId) references user (id) on delete set null,
foreign key (postId) references post (id) on delete cascade
) engine=InnoDB default charset=utf8;
let index = { //여기서는 이벤트 리스너를 바인딩만 하고
init : function() {
$("#btn-save").on("click", ()=> {
this.save();
});
$("#btn-update").on("click", ()=> {
this.update();
});
},
save: function() { // 실제 로직은 여기서 실행
alert("btn-save 로직 실행");
let data ={
username : $("#username").val(),
password : $("#password").val(),
email : $("#email").val()
};
alert("btn-save data");
$.ajax({ // 공식!
type:"post",
url: "/auth/joinProc",
data: JSON.stringify(data),
contentType: "application/json; charset=utf-8", //http에서는 Content-Type 라고 씀
dataType: "json" // 스프링은 응답할때 스트링일 경우 무조건 json으로 응답한다
}).done((resp)=>{
console.log(resp);
}).fail((error)=>{
console.log(error);
});
},
update: function() { // 실제 로직은 여기서 실행
alert("btn-update 로직 실행");
}
}
index.init();
----------
web.xml 에는 스프링 필터가 있다 종류가 많은데 중요한 것만 확인하자
message converter -> 기본전략이 xxx-from-urlencoded 즉 key=value 데이터만 파싱하려고한다 @RequestBody 를 걸어두면 들어오는 데이터를 확인하여 제이슨이면 메세지 컨버터를 체인지 한다 gson과 비슷한 오브젝트 매퍼가 동작된다 (그것을 동작시켜주는 것이 jackson이다)
추후에 메시지컨버터를 직접 바꿀 수도 있다
----------------
컨트롤러는 무조건 서비스를 호출해야한다 (리파지토리 안됨)
----------------
디스패쳐 서블릿 - 프론트컨트롤러 - 컨트롤러들
-----------------
Controller는 뷰리졸버가 가능하다 (데이터를 주고받을 때 @ResponseBody)