DROP DATABASE IF EXISTS ssafy_board;
CREATE DATABASE ssafy_board DEFAULT CHARACTER SET utf8mb4;
USE ssafy_board;
CREATE TABLE board (
id INT AUTO_INCREMENT,
writer VARCHAR(30) NOT NULL,
title VARCHAR(200) NOT NULL,
content TEXT,
view_cnt INT DEFAULT 0,
reg_date TIMESTAMP DEFAULT now(),
file_name VARCHAR(50),
file_uri VARCHAR(500),
PRIMARY KEY (id)
);
CREATE TABLE b_user (
seq INT AUTO_INCREMENT,
id VARCHAR(30) NOT NULL UNIQUE,
pw VARCHAR(64) NOT NULL,
username VARCHAR(30) NOT NULL,
PRIMARY KEY(seq)
);
SELECT * FROM board;
SELECT * FROM b_user;
SpringMVC_legacy import
프로젝트명 변경
context root 변경
pom.xml 에서 artifactId, name 변경
web.xml -> filter 추가
<filter>
<filter-name>encoding</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>
</filter>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
src/main/resources/log4j.xml 에서
Application Loggers -> logger name="com.ssafy.board"
src/main/java 에서 com.ssafy.mvc 패키지 삭제하고
com.ssafy.board.model.dto -> User.java 생성
com.ssafy.board.model.dao -> UserDao.java 인터페이스로 생성
src/main/resources 에
mapper 폴더 -> userMapper.xml 생성 및 아래 코드 복붙
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
mapper namespace="com.ssafy.board.model.dao.UserDao"
com.ssafy.board.model.dto -> Board.java 생성
com.ssafy.board.model.dao -> BoardDao.java 인터페이스로 생성
src/main/resources 에
mapper 폴더 -> boardMapper.xml 생성 및 위 코드 복붙
root-context -> Namespaces -> tx 체크하고 아래 코드 복붙
<bean class="org.springframework.jdbc.datasource.DriverManagerDataSource" id="dataSource">
<property name="driverClassName" value="com.mysql.cj.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql://localhost:3306/ssafy_board?serverTimezone=UTC"></property>
<property name="username" value="ssafy"></property>
<property name="password" value="ssafy"></property>
</bean>
<!-- SqlSessionFactory를 빈으로 등록하자. -->
<bean class="org.mybatis.spring.SqlSessionFactoryBean" id="sqlSessionFactory">
<property name="dataSource" ref="dataSource"></property>
<property name="typeAliasesPackage" value="com.ssafy.board.model.dto"></property>
<property name="mapperLocations" value="classpath:/mapper/*Mapper.xml"></property>
</bean>
<bean class="org.mybatis.spring.mapper.MapperFactoryBean" id="userDao">
<property name="sqlSessionFactory" ref="sqlSessionFactory"></property>
<property name="mapperInterface" value="com.ssafy.board.model.dao.UserDao"></property>
</bean>
<bean class="org.mybatis.spring.mapper.MapperFactoryBean" id="boardDao">
<property name="sqlSessionFactory" ref="sqlSessionFactory"></property>
<property name="mapperInterface" value="com.ssafy.board.model.dao.BoardDao"></property>
</bean>
<!-- 1. transactionManager를 dataSource를 먹여서 생성해서 빈으로 등록. -->
<bean class="org.springframework.jdbc.datasource.DataSourceTransactionManager"
id="transactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
<tx:annotation-driven transaction-manager="transactionManager" />
root-context 를 src/main/resources 에 복사
(Test 클래스를 위한 java용 임시 설정파일)
여기까지 하면 자바 어플리케이션으로는 동작함
com.ssafy.board.model.service -> UserService.java 인터페이스로 생성
com.ssafy.board.model.service -> UserServiceImpl.java 생성하고
@Service("userService")
@Autowired private Dao 만들기
com.ssafy.board.model.service -> BoardService.java 인터페이스로 생성
com.ssafy.board.model.service -> BoardServiceImpl.java 생성하고
@Service("boardService")
@Autowired private Dao 만들기
root-context -> Namespace 에 context 체크하고
<context:component-scan base-package="com.ssafy.board.model.service"></context:component-scan>
추가
com.ssafy.board.exception 에
UserNotFoundException.java
PWIncorrectException.java 만들기
com.ssafy.board.util -> SHA256.java (해쉬값 반환해주는 클래스)
이제 비밀번호 대신 해쉬값을 저장하고 로그인할때도 해쉬값으로 비교
com.ssafy.board.controller -> HomeController.java
com.ssafy.board.controller -> BoardController.java
com.ssafy.board.controller -> UserController.java
com.ssafy.board.controller
-> FileDownLoadView.java, LoginCheckInterceptor.java, ExceptionControllerAdvice.java
servlet-context -> context:component-scan base-package ="com.ssafy.board.controller"
views -> home.jsp
views -> common -> header.jsp
views -> board -> *
views -> user -> *
views -> error -> *
servlet-context -> multipartResolver, fileDownLoadView, BeanNameViewResolver
servlet-context -> LoginCheckInterceptor

우와~ 깔끔하게 잘 정리되어 있네요! 잘 참고할게요ㅎㅎ