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

 

 

-------------------

 

------------------

 

적어놓기만 하면 자동으로 설정됨

스프링에서는 권장하나

쓰기에 좋기 않기 때문에

yml파일로 바꾼다 (JSON이 변형된 것이라고 생각하면 됨, 중괄호와 쌍따옴표 뺌)

properties파일과 똑같은데 가독성이 좋다

server: 

 

무조건 자동완성

 

 

탭을 쓰면 안된다

 

 

 

 

아마존에 배포할 때 포트는 80포트 jar파일로 패키징

 

 

 

 

 

스프링레거시에서는 jsp파일에 접근하는 것을 원천봉쇄하기 위해 web-inf 폴더에 넣는다
(mvc 모델1은 사용하지 못한다는 뜻)
(컨트롤러 통해서 가는 것이 mvc 모델2)

 

스프링 부트는 jsp를 지원하지 않고 web-inf를 사용하지 않는다 (templates를 사용)
그래서 yml파일에서 프리픽스 서픽스를 설정

 

 

 

무조건 embed 써야함

 

 

 

 

디폴트 경로 - src/main/webapp/(프리픽스)/return명(서픽스)

 

 

 

 

이제 jsp를 만들 수 있다

 

 

 

 

--------------------

안되면

서버끄고
project- clean
maven - update project
서버다시켜기

------------------------

 

 

 

 

이클립스에서는 기본적으로 mustache를 지원하지 않는다

 

 

 

html로 만들어보자

 

 

 

 

html로 만들었기 때문에 자동완성이 된다

 

 

 

타임리프- 태그에 모든 문법을 넣어서 처리 (th:text=${object.value})

타임리프 그루비 등은 문법이 많아서 템플레이트에서 코딩하게 된다
(너무 많은 것을 지원해주기 때문에 자연스레 그렇게 된다)
그렇게 되면 협업시 불편해진다
템플레이트는 뿌리는 용도로만 사용하는 것이 서로 편하다

 

 

mustache는 문법이 적어서 뿌리는 용도로만 쓸 수 있다 (배우기도 쉬움)

 

 

 

 

 

 

DI  autowired 를 편하게 하는 방법이 파라미터에 적는 것이다

 

 

 

 

 

 

 

 

 

 

 

-----------

 

 

----------

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

------------------

 

 

 

 

버퍼로 쿼리문을 날리기 위함

 

 

1. xml로 데이터베이스연결

2.yml로 데이터베이스연결

3.자바파일로 데이터베이스 연결

3개다 가능하다

 

pom.xml 에 추가하는 방식

 

 

자바에서 dataSource 객체 -> 데이터 풀링 기법

 

 

https://khj93.tistory.com/entry/MyBatis-MyBatis%EB%9E%80-%EA%B0%9C%EB%85%90-%EB%B0%8F-%ED%95%B5%EC%8B%AC-%EC%A0%95%EB%A6%AC

 

[MyBatis] MyBatis란? 개념 및 데이터구조

MyBatis란? 객체 지향 언어인 자바의 관계형 데이터베이스 프로그래밍을 좀 더 쉽게 할 수 있게 도와 주는 개발 프레임 워크로서 JDBC를 통해 데이터베이스에 엑세스하는 작업을 캡슐화하고 일반 S

khj93.tistory.com

 

 

미리 프로젝트 생성시 적용해도 된다

 

 

starter 는 스프링부트라고 생각하면 된다

 

 

다른 것들과 다르게 버전을 넣어야 한다

 

 

사용하는 이유

퍼시스턴스 (자바 오브젝트로 매핑)

Select 해서 받아오는 데이터를 rs를 자바오브젝트로 쉽게 변환

 

 

 

 

문서 확인

https://mybatis.org/spring-boot-starter/mybatis-spring-boot-autoconfigure/

 

mybatis-spring-boot-autoconfigure – Introduction

Introduction What is MyBatis-Spring-Boot-Starter? The MyBatis-Spring-Boot-Starter help you build quickly MyBatis applications on top of the Spring Boot. By using this module you will achieve: Build standalone applications Reduce the boilerplate to almost z

mybatis.org

 

 

 autowired를 사용하지않고 매개변수에 넣으면

스프링부트가 자동으로 해당 객체를 찾아서 띄운다 (없으면 오류)

 

 

https://github.com/codingspecialist/Springboot-MyBatis-Blog-V3/tree/master/src/main/java/com/cos/blog/config

 

codingspecialist/Springboot-MyBatis-Blog-V3

Contribute to codingspecialist/Springboot-MyBatis-Blog-V3 development by creating an account on GitHub.

github.com

 

 

 

 

Member 객체로 자동으로 담아주는 역할

 

 

인터페이스로 만들기

 

 

 

 

datasource가 동시접속시 순차적 처리를 한다

메모리에 띄울때 @Bean이라는 어노테이션이 있으면 리턴값을 IOC로 등록해준다 
(스프링 컨텍스트에 싱글톤 패턴으로 담아간다)

 

*.xml 이라고 쓴 이유는 여러테이블(객체)가 있을 수 있기 때문

 

 

 

 

 

https://github.com/codingspecialist/Springboot-MyBatis-Blog-V3

 

codingspecialist/Springboot-MyBatis-Blog-V3

Contribute to codingspecialist/Springboot-MyBatis-Blog-V3 development by creating an account on GitHub.

github.com

 

 

create user 'spring'@'%' identified by 'bitc5600';
GRANT ALL PRIVILEGES ON *.* TO 'spring'@'%';
create database spring;
use spring;
CREATE TABLE user(
	id int auto_increment primary key,
    username varchar(100) unique not null,
    password varchar(100) not null,
    email varchar(100),
    profile varchar(200),
    createDate timestamp
) engine=InnoDB default charset=utf8;
CREATE TABLE post(
	id int auto_increment primary key,
    title varchar(100) not null,
    content longtext,
    userId int,
    createDate timestamp,
    foreign key (userId) references user (id) on delete set null
) engine=InnoDB default charset=utf8;
CREATE TABLE comment(
	id int auto_increment primary key,
    userId int,
    postId int,
    content varchar(300) not null,
    createDate timestamp,
    foreign key (userId) references user (id) on delete set null,
    foreign key (postId) references post (id) on delete cascade
) engine=InnoDB default charset=utf8;

 

 

설정을 자바파일로 만들어져야한다 
스프링부트에서는 yml에서 설정해놓으면 자동적으로 자바코드로 변환된다

 

                         <-object                  <-rs

Controller - reopsitory - SQLSession                   - DataSource - DB(MySQL)
                                SQLSessionFactory가 SQLSession을 만든다
                                DataSource+매퍼파일등록(repository라는 클래스와 연결되어 있음)

SQLSession은 CRUD 함수를 가지고 있다

SQLSession은 데이터베이스에 연결 할 수 있는 유일한 객체

 

 

 

 

CREATE TABLE member(
	id int auto_increment primary key,
    username varchar(100) not null,
    phone longtext
) engine=InnoDB default charset=utf8;

 

 

 

 

 

 

----

 

 

 

 

 

 

 

 

--------------------

안되면

서버끄고
project- clean
maven - update project
서버다시켜기

------------------------

 

-----------------

 

함수 널처리나 전처리(파싱 등)

jsp에서는 if (requset.getparamater("aa") != null){}

스프링에서는

함수에 들어가기전이나 후에 널처리를 할 수 있다 = AOP

 

jackson 바인더 - 제이슨 파싱

아래 조건에서 발동

발동시기 - 함수 시작 직전

 

 

 

보내는 값을 하나 빼도 알아서 있는 값만 파싱해준다

-------------------

 

post데이터는 기본적으로 key : value 형식

객체에 담기 위해서는 setter가 필요하다

--------------------

 

MessageConverter 스프링으로 오는 데이터를 컨버팅해준다

기본은 form데이터 , @RequestBody 를 사용하면 json데이터 컨버팅 가능

------------------

 

 

--------------------

 

스프링 할 때는 통신시 JSON으로 통일 하는 것이 좋다

------------------

 

스트링 타입으로 전송하고 싶다면

 

-----------------

 

@RestController

컨트롤러를 타는 모든 주소가 리턴해주는게 모두 데이터일 경우 사용

-----------------

 

 

------------------------

 

 

data로 보내도 객체 내부의 변수명에 맟춰서 자동으로 입력된다

-----------------

 

--------------

DI - Dependency Injection 의존성 주입

 

핵심!!!

타입을 통해서 주입받는다. 타입을 잘 적어야함

--------------

다른 패키지에 만든 컴포넌트는 불러와지 않는다

 

 

------------------

 

+ Recent posts