자바 프레임 워크 7,8주차
2026. 4. 22. 12:52ㆍ2026 상반기 전공과목 공부/Java 프레임워크
반응형




더보기
plugins {
id 'java'
id 'org.springframework.boot' version '4.0.5'
id 'io.spring.dependency-management' version '1.1.7'
}
group = 'indusw.sba'
version = '0.0.1-SNAPSHOT'
description = 'admin-2024001910a'
java {
toolchain {
languageVersion = JavaLanguageVersion.of(25)
}
}
repositories {
mavenCentral()
}
dependencies {
implementation 'com.mysql:mysql-connector-j'
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'org.springframework.boot:spring-boot-starter-webmvc'
compileOnly 'org.projectlombok:lombok'
developmentOnly 'org.springframework.boot:spring-boot-devtools'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-thymeleaf-test'
testImplementation 'org.springframework.boot:spring-boot-starter-webmvc-test'
testCompileOnly 'org.projectlombok:lombok'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
testAnnotationProcessor 'org.projectlombok:lombok'
}
tasks.named('test') {
useJUnitPlatform()
}

city 클래스 생성
더보기
package indusw.sba.admin2024001910a.domain;
import lombok.Builder;
import lombok.Data;
@Data // @Getter, @Setter @EqualAndHashCode, @ToString, @NoArgsConstructor 의 합 집합
@Builder // Builder Pattern을 사용한 설정
public class City {
private int id;
private String name;
private String countryCode;
private String district;
private String population;
}
CityController 생성

더보기
package indusw.sba.admin2024001910a.controller;
import indusw.sba.admin2024001910a.domain.City;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("/city")
public class CityController {
@GetMapping("/")
public String getCities() {
// service 호출 -> repository(dto, model...) -> db
// -> repository -> service ->controller 반환
return "city/cities";
}
@GetMapping("/{id}")
public String getCity(@PathVariable("id") String id, Model model) {
City city = City.builder()
.id(10)
.name("Korea")
.build();
model.addAttribute("city",id);
return "city/city";
}
}

city 폴더를 만들고
members 폴더 안에 있는 list.html을 복사해서
cities.html로 붙여넣음
CityController
수정
package indusw.sba.admin2024001910a.controller;
import indusw.sba.admin2024001910a.domain.City;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("/city")
public class CityController {
@GetMapping("/")
public String getCities() {
// service 호출 -> repository(dto, model...) -> db
// -> repository -> service ->controller 반환
return "city/cities";
}
@GetMapping("/{id}")
public String getCity(@PathVariable("id") int id, Model model) {
City city = City.builder()
.id(id)
.name("Korea")
.build();
model.addAttribute("city",city);
return "city/city";
}
}

blank.html 복사해서
city.html 만듬




crtl+shift+r눌러서 바꿈


다 replaceAll
database를 보면

population형식이 int형이기 때문에 코드를 수정
City.java
더보기
package indusw.sba.admin2024001910a.domain;
import lombok.Builder;
import lombok.Data;
@Data // @Getter, @Setter @EqualAndHashCode, @ToString, @NoArgsConstructor 의 합 집합
@Builder // Builder Pattern을 사용한 설정
public class City {
private int id;
private String name;
private String countryCode;
private String district;
private int population;
}
city.html
코드에 추가

<!-- Page Heading -->
<h1 class="h3 mb-4 text-gray-800">
<span th:text="${city.id}"></span>
<span th:text="${city.name}"></span>
<span th:text="${city.population}"></span>
</h1>
CityController 수정
더보기
package indusw.sba.admin2024001910a.controller;
import indusw.sba.admin2024001910a.domain.City;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("/city")
public class CityController {
@GetMapping("/")
public String getCities() {
// service 호출 -> repository(dto, model...) -> db
// -> repository -> service ->controller 반환
return "city/cities";
}
@GetMapping("/{id}")
public String getCity(@PathVariable("id") int id, Model model) {
City city = City.builder()
.id(id)
.name("Korea")
.population(55000000)
.build();
model.addAttribute("city",city);
return "city/city";
}
}
CityController 수정
더보기
package indusw.sba.admin2024001910a.controller;
import indusw.sba.admin2024001910a.domain.City;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;
@Controller
@RequestMapping("/city")
public class CityController {
@GetMapping("/")
public String getCities() {
// service 호출 -> repository(dto, model...) -> db
// -> repository -> service ->controller 반환
return "city/cities";
}
@Autowired
DataSource dataSource;
@GetMapping("/{id}")
public String getCity(@PathVariable("id") int id, Model model) {
System.out.println("datasource : " + dataSource);
Connection connection = null;
try {
System.out.println("datasource : " + dataSource.getConnection());
connection = dataSource.getConnection();
} catch (SQLException e) {
throw new RuntimeException(e);
}
City city = City.builder()
.id(id)
.name("Korea")
.population(55000000)
.build();
model.addAttribute("city",city);
return "city/city";
}
}
실행하면
정상적으로 로그가 찍히고 실행이 된다

connection은 beans가 아니라 @Autowired가 안된다

CityController 수정
더보기
package indusw.sba.admin2024001910a.controller;
import indusw.sba.admin2024001910a.domain.City;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
@Controller
@RequestMapping("/city")
public class CityController {
@GetMapping("/")
public String getCities() {
// service 호출 -> repository(dto, model...) -> db
// -> repository -> service ->controller 반환
return "city/cities";
}
@Autowired
DataSource dataSource;
// @Autowired Connection connection;
@GetMapping("/{id}") // get record using id
public String getCity(@PathVariable("id") int id, Model model) {
System.out.println("datasource : " + dataSource);
Connection connection = null;
City city = null;
try {
System.out.println("datasource : " + dataSource.getConnection());
connection = dataSource.getConnection();
Statement statement = connection.createStatement();
ResultSet rs = statement.executeQuery("select * from city where id = " + id);
if (rs.next()) {
city = City.builder()
.id(rs.getInt(1))
.name(rs.getString(2))
.population(rs.getInt(5))
.build();
}
} catch (SQLException e) {
throw new RuntimeException(e);
}
model.addAttribute("city", city);
return "city/city";
}
}
실행하면


'2026 상반기 전공과목 공부 > Java 프레임워크' 카테고리의 다른 글
| 자바 프레임 워크 10주차 / DI (0) | 2026.05.06 |
|---|---|
| 자바 프레임 워크 9주차 / DI (0) | 2026.04.29 |
| 자바 프레임워크 6주차 (0) | 2026.04.08 |
| 자바 프레임 워크 (0) | 2026.04.01 |
| 자바 프레임워크 2주차 (0) | 2026.03.11 |

