스프링과 자바 버전 바꿔줘야됨 1.6 -> 11로
예제에 따라서 버전 바꿀 수있음 pom.xml에서 자바 버전 아래 프레임워크버전 변경
플러그인 태그 중 maven-compiler-plugin 내용 바꿈 jdk가 11버전이므로 11로
프로젝트 우클릭 메이븐 업데이트 프로젝트
서버 스타트
크롬 주소입력창에 localhost:포트번호/내가지정한 context path 엔터 땅 치면 헬로월드 나옴(보안폴더 - home.jsp로 연결됨)**WEB-INF 디렉토리에 뷰인 jsp : 무조건 FrontController를 거쳐 컨트롤러가붙은 POJO를 통해 jsp가 실행됨
롬복 파일 받기 (getter setter 생성자 toString 메소드 등 간편하게 어노테이션으로 설정하는 라이브러리)
https://projectlombok.org/ 에서 다운로드 후
cmd창 - cd jdk설치경로\bin 파일
java -jar lombok.jar
엔터
압축 풀어줌
고추그림 화면이 나오면 specify location에서 이클립스가 설치된 경로 찾고, eclipse.exe 선택하고 인스톨
pom.xml에 API 태그 추가함
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
추가한 태그 목록 < 버전 유의해서 맞추기
<!-- GSON 라이브러리 추가 -->
<!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.5</version>
</dependency>
<!-- lombok 라이브러리 추가 -->
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.20</version>
<scope>provided</scope>
</dependency>
<!-- mybatis 라이브러리 추가 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
<!-- hikaricp 라이브러리 추가 -->
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>2.7.4</version>
</dependency>
<!-- Spring-jdbc, mybatis-spring api 추가 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.0.7.RELEASE</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.0</version>
</dependency>
<!-- MySQL connector j -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.31</version>
</dependency>
<properties>
<java-version>1.6</java-version>
<org.springframework-version>5.0.7.RELEASE</org.springframework-version>
<org.aspectj-version>1.6.10</org.aspectj-version>
<org.slf4j-version>1.6.6</org.slf4j-version>
</properties>
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://mybatis.org/schema/mybatis-spring http://mybatis.org/schema/mybatis-spring.xsd
http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd"
xmlns:mybatis-spring="http://mybatis.org/schema/mybatis-spring">
<!-- Root Context: defines shared resources visible to all other web components -->
<bean id="hikariConfig" class="com.zaxxer.hikari.HikariConfig">
<property name="driverClassName"
value="com.mysql.jdbc.Driver">
</property>
<property name="jdbcUrl"
value="jdbc:mysql://localhost:3306/mysql"></property>
<property name="username" value="계정명"></property>
<property name="password" value="비번"></property>
</bean>
<!-- 히카리 CP 설정 -->
<bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource"
destroy-method="close">
<constructor-arg ref="hikariConfig" />
</bean>
<!-- sql xml db 연결 sqlSessionFactory -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
</bean>
<mybatis-spring:scan base-package="kr.web.mapper" ></mybatis-spring:scan>
</beans>
맨 아래부분에 패키지명 확인하기
<context:component-scan base-package="kr.web.board" />
기본 CRUD는 전에 배웠던
https://velog.io/@ggg4155?tag=Spring
게시판 참고해서 만들었음 ---> 완
https://github.com/Goeuneun/board-test.git
게시글 등록(insert)시 인코딩 에러난 부분은 테이블 생성할 때 인코딩조건을 안줬음 ---> ALTER TABLE member convert to charset utf8
테이블 구조 변경 명령어 사용한다!
첨에 생성할 시 create문 맨 뒤에 붙이기 - ENGINE=InnoDB DEFAULT CHARSET=utf8
스프링에서 Logging 하는 이유:
System.out.println()을 할경우 IO리소스 많이 사용해서 시스템느려질수있음-> 때문에 로그를 파일로 저장해 분석
롬복 SLF4J는 인터페이스이고, 그 구현체로 Logback 같은 로그 라이브러리를 선택.
private final Logger log = LoggerFactory.getLogger(getClass());
@SLF4J
쓰레드 정보, 클래스 이름 같은 부가 정보 볼수있고 출력 모양을 조정할 수 있다.
로그 레벨에 따라 개발 서버에서는 모든 로그를 출력하고, 운영서버에서는 출력하지 않는 등 로그를 상황에 맞게 조절 가능..
시스템 아웃 콘솔에만 출력하는 것이 아니라, 파일이나 네트워크 등, 로그를 별도의 위치에 남길 수 있다. 특히 파일로 남길 때는 일별, 특정 용량에 따라 로그를 분할하는 것도 가능하다.
성능도 일반 System.out보다 좋다. (내부 버퍼링, 멀티 쓰레드 등등) 그래서 실무에서는 꼭 로그를 사용해야 한다
출처 : https://doublesprogramming.tistory.com/82
파일 업로드, 페이징 처리 구현 고고.
전체 데이터중 일부분의 데이터만 출력할 때 MySQL은 limit 구문 사용
select ...,\
from board
where ...
order by ...
limit 시작데이터 ,데이터 개수
//10개씩 데이터 출력 :
1페이지 limit 0,10 2페이지 limit 10,10
페이징 처리를 위해 임의의 데이터 100개가량 넣어줬다.
insert into board(title, contents, writer) (select title, contents, writer from board);
MySQL에서 이 구문은 현재 데이터의 배수만큼 데이터가 들어감