
sql이 바로 꺼진다면
작업관리자에서 한번 끄고 다시 켜면됩니다.
디스패처

web.xml 에 선언되어 있습니다.




jstl도 기본적으로 있습니다.
lombok 추가

저장하면 생김

다른사람이 없으면
깃에 풀, 푸시 하면 에러나는데
없으면 알아서 다운됩니다.

@Data - getter, setter
@AllArgsConstructor - 생성자
@NoArgsConstructor - 기본생성자
@ToString - 문자열
예)
필드명 바뀌어도 알아서 getter, setter가 바뀝니다.

public String boardList(Model model) {
스프링은 가져와서 쓸 수 있다.



<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container">
<h2>Spring MVC 01</h2>
<div class="panel panel-default">
<div class="panel-heading">Board</div>
<div class="panel-body">Panel Content</div>
<div class="panel-footer">웹기반 인공지능 Track2 (B) - 정재호</div>
</div>
</div>
</body>
</html>

model.addAttribute("list", list);에서 list라는 단어가 두 번 등장하는데, 이들은 서로 다른 의미를 가지고 있습니다.
앞쪽 list: "list"는 model 객체에 데이터를 저장할 때 사용할 키(key)입니다. 이 키를 통해 JSP에서 이 데이터를 EL로 접근할 수 있습니다. 예를 들어, JSP에서 ${list}로 접근할 때, 이 "list"라는 키에 대응하는 값을 가져오게 됩니다.
뒤쪽 list: 뒤에 있는 list는 ArrayList 객체를 가리킵니다. 이 객체가 실제로 model에 저장되는 값(value)입니다.
결론:
앞쪽 list는 키(key)입니다.
뒤쪽 list는 ArrayList 타입의 객체입니다.
model.addAttribute("list", list);에서 "list"라는 키를 사용하여 ArrayList 객체를 model에 저장하고, 나중에 JSP에서 이 키를 사용하여 저장된 데이터를 꺼낼 수 있게 되는 것입니다.
list라는 이름에 추가
boardList.jsp
body에 el로 출력
접근할 수 있는건 scope
page request session application
model에 담아도 request안에 있습니다.

sql문장을 쓸수 있습니다.
테이블생성을 위함입니다.
new file 생성



-- BOARD TABLE 생성 --
CREATE TABLE BOARD(
IDX INT NOT NULL AUTO_INCREMENT,
TITLE VARCHAR(100) NOT NULL,
CONTENTS VARCHAR(2000) NOT NULL,
WRITTER VARCHAR(30) NOT NULL,
INDATE DATETIME DEFAULT NOW(),
COUNT INT DEFAULT 0,
PRIMARY KEY(IDX)
);
INSERT INTO BOARD(TITLE, CONTENTS, WRITTER)
VALUES("아침날씨가 시원해졌습니다.", "좋아요","하늘");
INSERT INTO BOARD(TITLE, CONTENTS, WRITTER)
VALUES("추석이 다가옵니다.", "좋아요","가을");
INSERT INTO BOARD(TITLE, CONTENTS, WRITTER)
VALUES("바람이 불어서 시원해졌습니다.", "좋아요","바람");
INSERT INTO BOARD(TITLE, CONTENTS, WRITTER)
VALUES("내년에 오세요", "좋아요","태양");
INSERT INTO BOARD(TITLE, CONTENTS, WRITTER)
VALUES("침대에 눕고싶어요", "좋아요","피곤");
COMMIT;
SELECT * FROM BOARD;
idx, indate,count 안 넣어도 되겠습니다
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.42</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.0.2.RELEASE</version>
</dependency>
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>3.4.1</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.2</version>
</dependency>
pom.xml 122번줄 lombok 밑쪽에 api 5개 연결합니다.
1 어떤 dbms쓰는지
2 url
3 계정 , 비번

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:mybatis-spring="http://mybatis.org/schema/mybatis-spring"
xsi:schemaLocation="http://mybatis.org/schema/mybatis-spring http://mybatis.org/schema/mybatis-spring-1.2.xsd http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- Root Context: defines shared resources visible to all other web components -->
<!-- API(HikariCP) -->
<!-- bean : 객체를 생성하는 태그 -->
<bean id="hikariConfig" class="com.zaxxer.hikari.HikariConfig">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/com"/>
<property name="username" value="com"/>
<property name="password" value="com01"/>
</bean>
<!-- HikariDataSource(Connection POOL을 만드는 역할을 한다) -->
<bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource" destroy-method="close">
<constructor-arg ref="hikariConfig" />
</bean>
<!-- Mapper interface들을 메모리에 올리는 방법(scan) -->
<mybatis-spring:scan base-package="kr.board.mapper"/>
<!-- BoardMapper interface의 구현클래스 생성
SqlSessionFactoryBean(SQL을 실행하는 API) -->
<bean class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
</bean>
</beans>
히카리Config (설정정보)
db의 커넥션 갯수 관리
드라이버 로딩 > url db_id db_pw
.
dataSource
실질적으로 커넥션합니다.

자바코드를 태그로 바꿈
arg생성시 gifariConfig를 읽어드립니다.

프로퍼티 = 필드 가 참조 - dataSource
SQL문을 짜줘야합니다.

어디에잇나 여기에 구현


sql - jsp
INSERT INTO BOARD(TITLE, CONTENTS, WRITTER)
private String title; // 제목
private String contents; // 내용
private String writter; // 작성자
writter 등 글자를 맞춰야 됩니다.