JSP
jsp는 url 요청을 할 수 있다 (file을 요청할 수 있다는 것 index.jsp // a.png 등)
즉 톰캣을 안 탈 수도 있다는 것이다 (아파치만을 이용해서 정적파일만 받을 수도 있다는 것)
Spring
톰캣은 WEB-INF 밑에 접근이 불가능하다
이렇게 만들어야 URL요청이 불가능해진다 (URI로 Controller만을 이용해서 접근하도록함, 외부로부터 안전)
JSP파일을 WEB-INF에 넣자
이렇게 만들면 톰캣을 안 탈 수가 없다(컨트롤러를 타야하기 때문)
//templates 폴더 - 머스태치 타임리프 등
톰캣
톰캣이 실행되면 열리는 것
1 카타리나
2 web.xml -> 배포서술자 / 웹서버의 가이드 역할 / 필터
-- 바디에 넣을 문자형식 UTF-8 - 모든 인코딩을 UTF-8 로 만들기
-- 웰컴파일리스트
-- DB Resource
-- 커스텀 필터 등록가능(아이피 차단 등 // lucy)
-- 서블릿 매핑 -> 자바파일이 아니더라도, 이 파일에서 매핑해줄 수 있다,
( /* -> FrontConroller.java 만 주고 컨트롤러에서 라우팅하게 하자)
JSP에서는 쿼리문으로 분기를 하였는데
스프링에서는 URL파라미터를 분기해 줄 수 있다
(spring에서는 yml파일에 적어놓으면 web.xml에 자동적으로 등록이 된다)
3
-------------------
sqlsession은 DBCP, MyBatis 과 연계되어 있다
datasource DBCP - 데이터베이스 커넥션 풀링 기술
MyBatis - rs 결과를 오브젝트나 컬렉션으로 들고 있는다 - persistence - 데이터베이스에 접근해서 데이터를 오브젝트화
DB - sqlsession - repository
----------------
서블릿 매핑
localhost:8000/post1?cmd=test
post/1 -> url 파라미터
? -> 쿼리문
---------------
dispatcherServlet
서블릿 매핑, 프론트컨트롤러, 라우팅 등을 관리하는 객체
request요청만 추적한다
----------------
@Controller는 사용자가 요청시에 뜬다
dispatherServlet은 요청이 오면
@Controller
@RestController
를 검색하여 메모리에 띄워서 실행시킨다
-------------------
다른 어노테이션은 서버 실행시에 미리 다 뜨는데
@Controller는 위와 같이 다르다
자바는 쓰레드를 많이 생성 할 수 있기 때문에
사용자가 동시에 요청할 경우, 즉 request할 때마다 띄우게 된다
---------------
레거시에서는
루트컨텍스트/ 서블릿 컨텍스트 가 있어서
메모리에 뜨는 타이밍에 따라 관리한다
-------------
@Transactional
알아서 롤백 알아서 커밋됨
-------------
퍼시스턴스 - DB와 동기화 되어 있는 데이터 (DB에서 받은 데이터, DB내용과 똑같아야함)
--------------
경고메시지
info warn error 등이 있는데
warn error 등을 확인
----------
mysql은 루트로 들어가서 사용자 선택
--------------
스프링 부트 세팅
Spring Web
SpringBoot Devtool
Lombok
MySQL
MYbatis
---------
JSTL
Tomcat-Embed-Jasper
-----------
테이블생성
------------
1 properties
yml 확장자 변경
DB연결정보넣기
JSP view 경로 설정 (ViewResolver)
2 config 폴더생성
(복붙)
DataSourceConfig.java(참고 : yml 설정을 참고)
DataAccessConfig.java(참고 : DataSource와 Mapper)
3 Mapper 경로에 UserMapper.xml 생성 및 파일 세팅
4 User 클래스 만들기
5 UserRepository 만들기
6 jsp테스트 파일 만들기
7 TestController 생성 및 테스트
이름과 패키지명을 설정해준다
필요한 디펜던시를 고른다
외부에서 필요한 디펜던시들을 가져온다
외부 디펜던시들을 pom.xml에 넣는다
application.yml
server:
port: 8000
servlet:
context-path: /blog
spring:
mvc:
view:
prefix: /WEB-INF/views/
suffix: .jsp
datasource:
url: jdbc:mysql://localhost:3306/spring?serverTimezone=Asia/Seoul
username: spring
password: bitc5600
driver-class-name: com.mysql.cj.jdbc.Driver
properties파일을 yml로 바꾸고 세팅해준다
컨피그 파일을 만든다
DataAccessConfig.java
package com.cos.demo.config;
import javax.sql.DataSource;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
@Configuration
@MapperScan(basePackages = "com.cos.blog.repository") // 옆의 경로 이하 파일을 메모리에 다띄워준다(@repo~~ 안해줘도됨)
public class DataAccessConfig {
@Bean
public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
sessionFactory.setDataSource(dataSource);
sessionFactory.setMapperLocations(
new PathMatchingResourcePatternResolver().getResources("classpath:mapper/*.xml"));
return sessionFactory.getObject();
}
@Bean
public SqlSessionTemplate sqlSessionTemplate(SqlSessionFactory sqlSessionFactory) {
return new SqlSessionTemplate(sqlSessionFactory);
}
}
DataSourceConfig.java
package com.cos.demo.config;
import javax.sql.DataSource;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Configuration;
@Configuration
public class DataSourceConfig {
@ConfigurationProperties(prefix="spring.datasource")
public DataSource dataSource(){
return DataSourceBuilder.create().build();
}
}
---------------------
서비스 연습
https://mybatis.org/mybatis-3/ko/sqlmap-xml.html
xml 파일 세팅 방법
(매개변수를 DTO로 바꾸자)
DTO생성
----------------------
'Server > Spring Boot' 카테고리의 다른 글
spring boot //200720 // (0) | 2020.07.20 |
---|---|
MyBatis vs JPA (0) | 2020.07.17 |
200713 / ViewResolver /mustache / DI autowired / DB연결방법 (0) | 2020.07.13 |
스프링 부트 시작하기 // 세팅 setting (0) | 2020.07.10 |
200710 // 스프링 어노테이션 / 스프링 레거시 컴포넌트 / 스프링 용어 aop / di / (0) | 2020.07.10 |