์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
- JavaScript
- ๊น๋ฏธ๊ฒฝ์๋งํ์์
- K๋ฐฐํฐ๋ฆฌ๋ ๋ณผ๋ฃจ์
- ์๋ฐ
- ์ค๋ผํด
- ํ๋ก๊ทธ๋๋ฐ
- ๋ฐ์ํ
- Python
- ํฐ์คํ ๋ฆฌ์ฑ๋ฆฐ์ง
- ๋ ์
- ๋ฐ์ดํฐ๋ฒ ์ด์ค
- ๋ฆฌ์กํธ
- ์ฑ
- css
- ํ์ด์ฌ
- ์ฝ๋ฉ
- html
- ๋ง์ผ๋ด๊ฐ์ธ์์๋ค์์ฐ๋ค๋ฉด
- Java
- ๊ฐ๋ฐ
- ์นํ์ด์ง๋ง๋ค๊ธฐ
- ์๋ฐ์คํฌ๋ฆฝํธ
- ์ปดํจํฐ๊ณผํ
- ์นํผ๋ธ๋ฆฌ์ฑ
- ComputerScience
- ๋ผํ๋ผ์ค์๋ง๋
- ์ํ
- ์ค๋ธ์
- database
- K๋ฐฐํฐ๋ฆฌ
- Today
- Total
JiYoung Dev ๐ฅ
[Spring Boot] Spring Boot ์ฌ์ฉํ๊ธฐ (2023.06.07) ๋ณธ๋ฌธ
Spring Boot ๊ฐ๋ฐ ํ๊ฒฝ ์ค๋น
๐ ํ๋ก๊ทธ๋จ ์ค์น (Spring & MySQL)
spring tool suite 4
C๋๋ผ์ด๋ธ ๋ฐ๋ก ์๋์ ์ค์น (ํ์๋ ์๋!)
jarํ์ผ๋ ์์ถํ์ผ์ด๋ผ ์์ถํ๊ธฐํ๋ฉด ๋จ
๊ทธ๋ฐ๋ฐ ์๋๋ ๊ฒฝ์ฐ๊ฐ ์์ด์ cmdํ์ฉ
cmd ์ฐฝ ์ฐ ํ cd / >> c๋๋ผ์ด๋ธ๋ก ์ด๋
java -jar spring-tool-suite-4-4.18.1.RELEASE-e4.27.0-win32.win32.x86_64.self-extracting.jar ์ ๋ ฅ
sts-4.16.1.RELEASE ๋จ๋ฉด ์ ์ ์์ถ ํ๊ธฐ ์๋ฃ
์ํฌ์คํ์ด์ค ๋ง๋ค๊ธฐ
๊ฒฝ๋ก์ ํ๊ธ์ด ์์ผ๋ฉด ์คํ์ ๋ฌธ์ ๋ฐ์๋๋ฏ๋ก ๊ผญ ํ์ธ!
workspace ์ ํ ํ Launch
My SQL
Developer Default > Execute > Visual C++ ๋์ ํ ์ค์น > execute >
ํจ์ค์๋, ๊ณ์ ์์ฑ ํ next, excute ๋ฐ๋ณต
๐ ์คํ๋ง ๋ถํธ ํ๋ก์ ํธ ์์ฑ
1. ์ธ์ฝ๋ฉ
java class file, text ์ธ์ฝ๋ฉ ์งํ
2. ํ๋ก์ ํธ ์์ฑ
spring ๊ฒ์ํ spring starter project ์ ํ
name : ํ๋ก์ ํธ ์ด๋ฆ
type : ๋น๋๋ฐฉ์
packaging : ํจํค์ง ๋ฐฉ์
Group : ๊ธฐ๋ณธ ํจํค์ง๋ช
package : ๊ต์ฅํ ์ค์! ํจํค์ง๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ง๋ค์ด์ง๊ณ ๊ทธ ์์ ํน์ํ ๋ฌด์ธ๊ฐ๊ฐ ์๊น
๋ํ๋์ ์ ํ
๋ถํธ์์๋ pom์ ๋ฐ๋ก ์ ๋ ฅํ์ง ์์๋ ํ๋ก์ ํธ ์์ฑ์ ์ ํ ๊ฐ๋ฅ
Spring Boot version :3๋ฒ์ ผ์ด๋ฉด ๋์๊ฑฐ >>>> ์๋ฐ ๋ฒ์ ผ๊ณผ ๋ง์ถฐ์ผ ํจ. ์ฐ๋ฆฌ๋ 2.7.12 ์ ํ!
๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ์ฉํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๊ฒ์ํ์ฌ ์ถ๊ฐ ๊ฐ๋ฅ
- Spring Web Services
- Spring Web
- MySQL Driver
- MyBatis Framework
- Lombok
๐ ์คํ๋ง ๋ถํธ ํ๋ก์ ํธ ๊ธฐ๋ณธ ๊ตฌ์กฐ ์ดํด๋ณด๊ธฐ
๐ BootBasicApplication.java
//@SpringBootApplication : ์ด๋ ธํ ์ด์ ์ด ๋ถ์ ํด๋์ค์ ์์น๊ฐ ๊ต์ฅํ ์ค์!
//ํด๋์ค์ ์์น๋ฅผ ๊ธฐ์ค์ผ๋ก ํ์์ ์๋ ์ค์ ๋ด์ฉ๋ค์ ์ฝ์ด์ฃผ๊ธฐ ๋๋ฌธ
//ํด๋์ค์ ์์น๊ฐ ํ๋ก์ ํธ์ ์ต์๋จ์ ์์นํด์ผ ํจ!
//์คํ๋ง ๋ถํธ์ ์ค์ ์๋ํ, bean(๊ฐ์ฒด) ์ฝ์ด์ค๊ฑฐ๋ ์์ฑํ๋ ์์ ์ ์๋์ผ๋ก ์ค์ ํด์ค
์ปจํธ๋กค๋ฌ, mapper ๋ฑ ๋ชจ๋ @application ํด๋์ค ์๋์ ์์นํด์ผ ํจ!
application์๋ ์์น์ ํด๋ ์์ฑ(mapper ํด๋, controllerํด๋ ๋ฑ) ํ ๊ทธ ์๋์ controller ๋ฑ ์์ฑ
ํ์ ๊ฒฝ๋ก์ ๋ง๋ค์ด์ค์ผ์ง๋ง ๊ฐ์ฒดํ ์์ผ์ ์ฌ์ฉํ ์ ์๋ค! ๊ต์ฅํ ์ค์ํจ!!!!!
๐ src/main/resources
static
์ด๋ฏธ์ง, css, js ๋ฑ ์ ์ ๋ฆฌ์์ค ํ์ผ >>> static ํด๋ ์๋์ ๋ฃ๊ธฐ!
static ํด๋ ๊ธฐ์ค์ผ๋ก ๊ฒฝ๋ก๋ง ์ค์ ํด์ฃผ๋ฉด ํด๋น ์์ ์ฌ์ฉ ๊ฐ๋ฅ
templete โ โ โ
teplete ๊ต์ฅํ ์ค์!
๊ธฐ์กด์๋ view ์์ฑ์ jsp๋ฅผ ๋ง์ด ์ฌ์ฉ
๊ทธ๋ฌ๋ jsp๋ง๊ณ spring boot๋ ์คํ๋ง ํ๋ ์์ํฌ์์ ์์ฃผ ์ฌ์ฉํ๋ ํ์์ thym leaf (์คํ๋ง์์ ์ฌ์ฉํ๋ ํ ํ๋ฆฟ)
ํ์๋ฆฌํ๋ ํ์์ด ๋ฐ๋ก์๋๊ฑด ์๋๊ณ html์ script๋ฅผ ๋ฃ์ ์ ์๋ ํ์
ํ์๋ฆฌํ๋ฅผ ์ฌ์ฉํ๋ ์ด์
JSP๋ HTML๋ก ๋ณํ๋๋ ๊ณผ์ + ํ์ผ ์์ฒด๋ HTML๋ณด๋ค ๋ฌด๊ฑฐ์(JAVA์ฝ๋ ๋ค์ด๊ฐ์)
ํ์๋ฆฌํ๋ HTML ํ์์ ๊ทธ๋๋ก ์ฐ๋ ๊ฐ๊ณตํ ์ ์๋ ํ์
๋ฐ๋ผ์ ์คํ๋ง์์๋ ํ์๋ฆฌํ๋ฅผ ๋ง์ด ์ฌ์ฉํจ!
์(ํ์๋ฆฌํ)์ ์์น๊ฐ TEMPLETES ํ์์ ์์ฑ
JSP๋ ๋ฌด์กฐ๊ฑด WEB-APP > WEB-INF ์๋์ ๋ค์ด๊ฐ
application.properties โ โ โ
์ค์ ํ์ผ์ด๋ผ๊ณ ํ ์ ์์
์คํ๋ง๋ถํธ๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ๋ํ ๋ ์๋์ผ๋ก ๋ก๋ฉ๋จ!
DB์ฐ๊ฒฐ์ ๋ณด, context-root, view ๋ฆฌ์กธ๋ฒ ๋ฑ ์ค์ ํ ์ ์์!
์ค์ ํ์ผ ๊ธฐ๋ณธ ์ฝ๋
# ์ค์ ํ์ผ์ด๋ผ๊ณ ๋ณผ ์ ์์
# ์คํ๋ง ๋ถํธ๊ฐ ์ดํ๋ฆฌ์ผ์ด์
์ ๊ตฌ๋ํ ๋ ์๋์ผ๋ก ๋ก๋ฉ๋๋ ํ์ผ
# ์ฌ๊ธฐ ์๋์ KEY-VALUE ์ ํ์์ผ๋ก ๊ฐ์ ์
๋ ฅํ๋ฉด
# ์ดํ๋ฆฌ์ผ์ด์
์์ ์ฐธ์กฐํ์ฌ ์ฌ์ฉํ ์ ์์
#context-root : ์๋ฒ์์์ ๋์ํ๋ ํ๋ก์ ํธ๋ฅผ ๊ตฌ๋ณํ๊ธฐ ์ํ ๊ฒฝ๋ก
#๋ฌด์กฐ๊ฑด slash๋ก ์์
server.servlet.context-path=/myapp
#server port number
server.port=8089
#view(jsp) : prefix, suffix
spring.mvc.view.prefix=/WEB-INF/Views/
spring.mvc.view.suffix=.jsp
# EX. DB์ฐ๊ฒฐ์ ๋ณด
spring.datasource.url=jdbc:mysql://localhost:3306/Boot?useSSL=false&characterEncoding=UTF-8&serverTimezone=UTC
spring.datasource.username=fullstack
spring.datasource.password=12345
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
Boot >>>> ์คํค๋ง ์ด๋ฆ
๐ pom.xml
ํน์ด์ : ๋ฒ์ ผ์ด ์์ >> ๋ถํธ์์๋ ๋ฒ์ ผ์ ์์์ ๊ด๋ฆฌํด์ค
ํ๋ก์ ํธ ์์ฑ์ ์ ํํ ๋ํ๋์ค๋ค์ ๋ํ์ฌ ์๋์ผ๋ก ์ ๋ ฅ
๐ JSP ํ์ผ ์์ฑ ํ view ๋ฐํ >> ๋ฉ์ธํ์ด์ง ๋ณด์ฌ์ฃผ๊ธฐ
1. jsp ํ์ผ ์์ฑ
์คํ๋ง ํ๋ ์์ํฌ์ ๋๊ฐ์ด ํด๋ ์์ฑ ํ ์ง์ด๋ฃ๊ธฐ
ํด๋ ๋ด jsp ํ์ผ ์์ฑํ๋ ค ํ๋๋ jsp ํ์ผ ํ์์ด ์์
์ด์
: ์คํ๋ง4์์๋ jsp๋ฅผ ๊ธฐ๋ณธ์ ์ผ๋ก ์ด๋ค๊ณ ์๊ฐํ์ง ์์ > ๊ด๋ จ ํ๋ฌ๊ทธ์ธ ์ค์น๊ฐ ๋์ง ์์
>>>> ๊ด๋ จ ํ๋ฌ๊ทธ์ธ ์ค์น
help > market place์ ๋ค์ด๊ฐ์ ์ค์น
๋ค๋ฅธ ๋ณ๊ฒฝ์ฌํญ ์์ด ์ค์นํ๋ฉด ๋จ!
์์ ์ฐฝ ๋จ๋ฉด select all >> trust selected ์ ํ ํ ์งํ >> ์ค์น ํ restart
์ค์น ์ ์์ ์ผ๋ก ๋๋ฉด jsp file ์ ํ ๊ฐ๋ฅ
2. jsp ์์ฑ
์ ์ด์ฟผ๋ฆฌ ์ฌ์ฉ
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
</head>
<body>
<button onClick="loadList()">๋ฉค๋ฒ ๋ฆฌ์คํธ ๊ฐ์ ธ์ค๊ธฐ</button>
<div id="list">
</div>
<script>
function loadList(){
$.ajax({
url : "member", //localhost:8089/myapp/member
type : "get", //์์ฒญ๋ฐฉ์
dataType : "json", //์๋ต ๋ฐ๋ ๋ฐ์ดํฐ์ ํ์ (view(html, jsp)๋ฅผ ๋ฐ๋๊ฒ ์๋๋ผ ๋ฐ์ดํฐ(๋ชจ๋ธ)๋ง ๋ฐํ)
success : function(res){ //์์ฒญ-์๋ต ์ฑ๊ณตํ์ ๋
console.log(res)
let t = "<table border=1>"
for(let i=0; i<res.length ; i++){
t += "<tr>"
t += "<td>" + res[i].id + "</td>"
t += "<td>" + res[i].pw + "</td>"
t += "<td>" + res[i].nick + "</td>"
t += "</tr>"
}
t += "</table>"
$("#list").append(t)
},
error : function(){
console.log("ํต์ ์คํจ!")
}
})
}
</script>
</body>
</html>
3. view ๋ณด์ฌ์ฃผ๊ธฐ ์ํด ์ฐ๊ฒฐ
: application.properties
root-context ์์ฑ
์คํ๋ง๋ถํธ๋ ํฐ์บฃ์ ์ฐ์ง๋ง boot๊ฐ ๊ฐ์ง๊ณ ์๋ ๋ด์ฅ ์๋ฒ๋ฅผ ์ฌ์ฉ
๊ฐ์ง๊ณ ์๋ ๋ด์ฅ์๋ฒ์์ ํ๋ก๊ทธ๋จ์ ๋์์ํด
#context-root : ์๋ฒ์์์ ๋์ํ๋ ํ๋ก์ ํธ๋ฅผ ๊ตฌ๋ณํ๊ธฐ ์ํ ๊ฒฝ๋ก
#๋ฌด์กฐ๊ฑด slash๋ก ์์
server.servlet.context-path=/myapp
#server port number
server.port=8089
view ๋ฆฌ์กธ๋ฒ -- ์คํ๋งํ๋ ์์ํฌ์์ ์์ฑํ๋ ๊ฒ๊ณผ ๋๊ฐ์ด ์ค์ ์ ๋ณด ์์ฑํด์ผ ํจ
๋ถํธ์์๋ properties์์ ํจ
4. ์ปจํธ๋กค๋ฌ ๋ง๋ค๊ธฐ
4-1. ํจํค์ง ์์ฑ
์ดํ๋ฆฌ์ผ์ด์ ํด๋์ค ์๋์ ํ์ผ ์์น
4-2. ์๋ฐ ํ์ผ ์์ฑ
package com.smhrd.myapp.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
//View ๋ฐํ ์ปจํธ๋กค๋ฌ ์ง์
@Controller
public class HomeController {
//์คํ๋ง 3๋ฒ์ ์์ ์ฌ์ฉํ๋ ๋ฐฉ์
// @RequestMapping(value="/", method=RequestMethod.GET)
@GetMapping(value="/")
//Get๋ฐฉ์ ๋งคํ, ํฌ์คํธ๋ PostMapping
public String main() {
return "main";
}
}
์ค๊ฐ์ ๊ฒ. ๋ถํธ ์คํํ์ฌ main์ฐฝ ๋จ๋์ง ํ์ธ!
์ค๋ฅ ๋ฐ์ 1. database ์ฐ๋ X
์๋ฒ ์คํ ์คํจ
my SQL ์ฐ๊ฒฐ ์๋๊ธฐ ๋๋ฌธ
์๋ฒ ์ฐ๊ฒฐํ๊ฑฐ๋ pom.xml์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ จ ๋ด์ฉ ์ญ์ ํ restart
์ค๋ฅ๋ฐ์ 2. port8080 ์ฌ์ฉ์ค
>> maven update ์งํ!
์๋ฒ ์ฐ๊ฒฐ ์ฑ๊ณต
๐ ๋ฉค๋ฒ๋ฆฌ์คํธ ๋ณด์ฌ์ฃผ๊ธฐ ํ๋ฉด ๊ตฌํ
1. ๋ฐ์ดํฐ (json) ๋ฐํ์ ์ํ RestController ์์ฑ
์คํ๋ง ํ๋ ์์ํฌ >>
controller ์์ฑ - RestController ์ฌ์ฉ
๋ทฐ๊ฐ ์๋ ๋ฐ์ดํฐ๋ฅผ ๋ฐํํ ๊ฒ์ด๋ฏ๋ก RestController ์ฌ์ฉ
package com.smhrd.myapp.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import com.smhrd.myapp.domain.Member;
import com.smhrd.myapp.service.MemberService;
//๋ฐ์ดํฐ(๋ชจ๋ธ)์ ๋ฐํํ๋ ์ปจํธ๋กค๋ฌ @RestController : @Controller + @ResponseBody ํฉ์ณ์ง ํํ
//์ผ๋ฐ ์ปจํธ๋กค๋ฌ๋ view๋ฅผ ๋ฐํ
@RestController
public class MemberController {
@Autowired
private MemberService service;
//Spring ๊ธฐ๋ณธ ์์
//(์์ฒญ ์ฒ๋ฆฌ) Controller > Service > mapper Interface > mapper XML
//(๊ฒฐ๊ณผ ์ฒ๋ฆฌ) mapperXML > mapper Interface > Service > Controller
// Controller : ์์ฒญ ๋ฐ๋๊ฑฐ, ์๋ต ํ๋๊ฑฐ์ ์ง์ค
// Service : ๋ฐ์ดํฐ ๊ฐ๊ณต, ์์ฒญ ๊ฐ๊ณต์ ์ง์ค
@GetMapping(value="/member")
public List<Member> memberList() {
//List<Member> ๋ฐํ
// >> ์๋ฐ์์ ์ฌ์ฉํ๋ ํํ๋ก ์ด ํํ ๊ทธ๋๋ก๋ javaScript์์ ์ฌ์ฉํ ์ ์์.
// >> ๊ทธ๋ฌ๋ ๋ฐ๋ก ์ฌ์ฉํ ์ ์์์ ----> ์๋? jackson library ๋๋ฌธ
//Jackson library
// : java object๋ฅผ json์ผ๋ก ๋ณํ
// : json์ javaObject๋ก ๋ณํํด์ฃผ๋ ๊ธฐ๋ฅ์ ๊ฐ์ง๊ณ ์์
// ์ผ๋ฐ ์คํ๋ง ํ๋ ์์ํฌ์์ ์ฌ์ฉํ๋ ค๋ฉด ๋ํ๋์์ ์ถ๊ฐํด์ผ ํจ
//
return service.memberList();
}
}
2. member VO ์์ฑ
package ์์ฑ
ํด๋์ค ์์ฑ
ํ๋ ์์ฑ ๋ฐ ๋กฌ๋ณต ์ฌ์ฉํ์ฌ ์์ฑ์ ์์ฑ
๋กฌ๋ณต ์ฌ์ฉ
๋กฌ๋ณต ํ์ผ ์ด๋์ํค๊ธฐ
4๋ฒ์ ผ ์๋์ง ํ์ธ ํ intall
package com.smhrd.myapp.domain;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@AllArgsConstructor //์ ๋ถ ์ด๊ธฐํ ์์ผ์ฃผ๋ ์์ฑ์
@NoArgsConstructor //๊ธฐ๋ณธ ์์ฑ์
@Getter
@Setter
public class Member {
private String id;
private String pw;
private String nick;
}
3. service ๋ง๋ค๊ธฐ
ํจํค์ง ์์ฑ
MemberService ํด๋์ค ์์ฑ
package com.smhrd.myapp.service;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.smhrd.myapp.domain.Member;
import com.smhrd.myapp.mapper.MemberMapper;
@Service
public class MemberService {
//์ธ๋ถ์์ ์์ฑ ํ ์ฃผ์
> ์์กด์ฑ ์ฃผ์
@Autowired
private MemberMapper mapper;
//service์ ๋ฉ์๋๋ฅผ controller์์ ํธ์ถํ์ฌ ์ฌ์ฉ
//mapper ๊ธฐ๋ฅ ํธ์ถ
public List<Member> memberList(){
return mapper.memberList();
}
}
mapper ์ธํฐํ์ด์ค ๋ฐ XML ๋ง๋ค๊ธฐ
๊ธฐ์กด ์คํ๋ง์์๋ mapper ํจํค์ง์ ์ถ๊ฐํ์์
๋ถํธ์์๋ resource ์๋์ mapper.java ํจํค์ง ์์น์ ๋ง์ถฐ์ค์ผ ํจ !
Mapper ์ธํฐํ์ด์ค์ Mapper.XML ๋ง์ถ๊ธฐ
package com.smhrd.myapp.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Mapper;
import com.smhrd.myapp.domain.Member;
@Mapper
public interface MemberMapper {
//์ค์ SQL ์ถ๊ฐ : @annotation ์ถ๊ฐ ํน์ XML ์ถ๊ฐ
public List<Member> memberList();
}
Member.XML
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- mapper๋ ํ์ผ์ด ์ฌ๋ฌ๊ฐ์ผ ์ ์์ ์ด๋ฅผ ๊ตฌ๋ถํ๊ธฐ ์ํด namespace ์์ฑ
namespace๋ mapper ์๋ ๊ฒฝ๋ก ๊ทธ๋๋ก ์์ฑ -->
<mapper namespace="com.smhrd.myapp.mapper.MemberMapper">
<select id="memberList" resultType="com.smhrd.myapp.domain.Member">
select * from member;
</select>
</mapper>
์ค๋ฅ
jsp ํ์ผ ์ค๋ฅ
๋ฐ์ ์์!
๊ตฌํํ๋ฉด
์ถ๊ฐ. MySQL WorkBench ์ฌ์ฉ
์คํค๋ง ์์ฑ
๊ธฐ๋ณธ ์คํค๋ง ์ค์
ํ ์ด๋ธ ์์ฑ
๋ฐ์ดํฐ ์ฝ์
'full stack > Back-End' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Node.js] ์ฟ ํค/์ธ์ (2023.07.06 ~ 07) (0) | 2023.07.06 |
---|---|
[Node.js] Express ์ฌ์ฉํ๊ธฐ (2023.07.05) (0) | 2023.07.05 |
[Spring] AJAX ๋น๋๊ธฐ ํต์ - ์์ด๋ ์ค๋ณต ์ฒดํฌ ๊ธฐ๋ฅ ๊ตฌํ (2023.06.01) (0) | 2023.06.01 |
[JSP&Servlet] FrontController (2023.05.23~24) (0) | 2023.05.24 |
[JSP/Servlet] Maven (2023.05.22) (0) | 2023.05.22 |