Spring boot는 내장 톰캣을 지원최조에 IP:Port로 연결 (Main 스레드)연결이 되면 랜덤(혹은 지정한) 새로운 스레드가 만들어져서 연결됨Main 스레드는 끊긴다.계속해서 새로운 사용자가 들어오면 위의 단계가 반복된다.: 단점은 한번 연결되면 끊기지 않기
URL : 자원접근 (Static 처리)URI : 식별자 접근 (JAVA 탐)서블릿 컨테이너는 Client가 요청한 스레드를 처리하는 곳 즉, 컨테이너새로운 request가 있을때에는 각 요청에 따른 스레드를 생성하여 처리한다.만약 처리가 끝났으면 스레드를 없앤다.그런
ServletContext의 초기파라미터 : 정상적인 객체인지 판단하는 초기값을 주고 이후에 정상여부를 확인하는데 사용된다.Session의 유효시간설정Servlet/JSP mapping : 요청내용을 확인하고 정확한 처리방향으로 유도Mime type mapping :
FrontController 패턴일련의 룰(\*.do) 로 접근이 되는 request는 톰캣으로 이동톰캣에서 FrontController를 통에 룰북을 보고 어떤 자원인지 확인하여 그쪽으로 Request그렇게 되면 최초에 생성된 Request가 \*.do Request
@RestController : 리턴값이 문자열@Controller : 리턴값이 파일 (ex. Home.html)Default 리턴 정적파일 경로 : src/main/resource/static기본 경로로 하면 문제가 jsp파일을 리턴해야할때 jsp는 정적파일이 아니기
ddl-auto1) create : 하면 프로젝트 실행할때마다 재생성 (운영에서 절대 X)2) update : 프로젝트 실행할때 alternaming1) PhysicalNamingStrategyStandardImpl : 내가 지정한 필드명 그대로 사용한다.2) Spri
Board(게시판 Class)에 게시자(User Class) FK 설정 (ManyToOne) 사용자(User class)의 Id(PK)@JoinColumn(name="userId") : DB에서는 Object를 저장할 수 없으니 실제 DB에서 사용될 PK명 입력.RDB
UserRepository 인터페이스 : User Model을 위한 인터페이스User Insert 예제선언한 UserRepositor는 JpaRepository를 상속받는 인터페이스 DAO의 역할 즉, 데이터 CRUD가능.UserRepository의 JpaReposit
@PathVariable : 주소값에 있는 데이터를 변수로 가져온다.@RequestParm은 직접 전달받은 Param값이다.findById(param)JpaRepository로 데이터를 가져온다.param값으로 조회했는데 없는 경우 Exception처리를 한다.만약 무
페이지는 0번부터 시작된다.\~~url/user?page=0import import org.springframework.data.domain.Pageable/Page 두개를 한다. Page관련 import 다른걸로 했다가 계속 Page객체로 리턴하지 못해서 좀 당황했음
id값을 갖는 User객체를 영속성 컨텍스트의 1차 캐시에 할당한다.setter를 통해 영속화된 객체 set을 한다.@Transactional의 메소드가 종료되면 commit이 된다.이것이 더티체킹
트랜잭션 처리만약 은행의 서비스 중 입금 서비스를 개발중이라 하자.A가 B에게 10000원을 보낼때 A의 잔고는 -10000, B의 잔고는 +10000이 되어야 한다.\+, - 처리되는 부분을 하나의 서비스로 묶어서 트랜잭션 처리하게 되면혹시라도 +처리 후에 -처리에서
내가 하고 있는 프로젝트는 header.jsp에 넣어줌.
스프링 시큐리티 config 세팅 후 테스트를 진행하려 하는데 제목과 같은 에러가 발생되었다.Refused to execute script from 'http://localhost:8000/auth/login' because its MIME type ('tex
List = JPARepository.findAll(Sort.by(Sort.Direction.DESC, 정렬대상 필드))
컨트롤러에서 받아온 값을 갖고 비지니스 로직을 흘리는 곳.만약 데이터 수정이 필요할 경우 아래 두가지 케이스로 진행한다.Repository -> 영속성 컨트롤러 캐시에 있다면 객체 가져와서 처리 (DB접근X)Repository -> 영속성 컨트롤러에 존재하지 않으면 D
현재 로그인된 사용자 정보 수정한후(Service) 수정된 정보로 재할당
Argument BindingResult 추가BindingResult 에러추가bindingResult는 자동으로 model에 적용되기 떄문에 따로 add할 필요 없음.global error${- 여러 에러 발생 가능의 경우 each로 처리field error깔끔하게 \