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

 

MyBatis – 마이바티스 3 | 매퍼 XML 파일

Mapper XML 파일 마이바티스의 가장 큰 장점은 매핑구문이다. 이건 간혹 마법을 부리는 것처럼 보일 수 있다. SQL Map XML 파일은 상대적으로 간단하다. 더군다나 동일한 기능의 JDBC 코드와 비교하면 ��

mybatis.org

xml 파일 세팅 방법

 

 

 

 

 

 

 

 

(매개변수를 DTO로 바꾸자)

 

 

DTO생성

 

 

 

 

 

 

 

 

 

 

 

 

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

+ Recent posts