스크립틀릿으로 시작했다가 점점 없애기 위해서 MODEL Ⅰ → MODEL Ⅱ 가 나왔다.처음은 action tag, 그 뒤에는 el 태그 등등..뭘 하나 처리할 때마다 페이지가 계속 추가되니까 이게 좀 아닌 것 같다고 해서 새로운 모델을 만든다.자바에서 가장 많이 사용
❓ Spring 와 Spring Boot Spring xml 로 설정해야 한다. 설정이 어렵고 복잡하다. JSP를 기본 지원한다. 아직 많은 프로젝트에서 사용되고 있다. (정부/공기업) Spring I.O 에서도 지원을 서서히 줄이고 있다. Spring Boot 만
✨ view와 controller 사용하기 전 포스트에서 view는 사용자의 요청을 받아 controller 에 보내고 controller 에서 요청을 처리할 model 에게 요청을 넘겨준다고 했었다. (간단한 요청은 controller 에서 해결할 수도 있다.) 그렇다면 view에서 특정한 값이 오면 정해진 입력값을 전달하는 controller 을 작...

✨ Model 지금까지 Model 을 안 쓴 이유는 너무 간단한 작업만을 했기 때문이다. Model은 DB에서 처리할 때 사용한다. * ✅ Model의 종류* Service : 컨트롤러가 서비스에 요청(컨트롤러에게 일을 받는 녀석) →서비스가 혼자 처리할 수 있는지

우리가 java 언어를 사용하게 위해 사용하는 이클립스가 자바가 아니듯이 DB에버도 DB가 아니라 DB에 접속을 해주고 명령어를 전달해주는 역할을 한다. 우리가 DB를 설치할 때에도 JDBC를 다운받아야 했기 때문에 JDBC 라이브러리를 사용해 다운을 실행했다.
스프링 부트에서 마이바티스를 이용해 게시판 만들기!! (코드 모음으로 설명은 따로 없습니다.) ✨로그인 ✨회원가입 ✨리스트 조회 ✨글쓰기 ✨삭제하기 ✨수저하기 ✨상세보기 ✨에러페이지

MyBatis 는 자바 퍼시스턴스 프레임워크의 하나이다. XML 이나 annotation 을 사용하여 저장 프로시저나 SQL 문으로 객체들을 연결시킨다. ※ 퍼시스턴스(Persitence) : 애플리케이션을 종료 후 실행 시 이전에 저장한 데이터를 다시 불러 올 수
아무것도 설정하지 않았을 경우 히카리 풀을 사용하고 있고, 설정은 안했기 때문에 기본값으로 설정이 되어 있따.Spring Boot 에서는 Hikari Pool 이라는 Connection Pool 을 사용한다.원래는 기본 설정으로 그냥 사용하지만 특수한 상황에는 설정을
우리가 웹 스프링 부트에서는 기본적으로 에러가 발생하면 에러라는 요청을 보내게 되는데 에러라는 요청을 보낼 곳이 없기 때문에 에러를 받아줄 페이지를 만들어줘야 한다.그래서 에러 jsp를 만들고 컨트롤러에위 코드를 작성해주면 톰켓에러가 발생하게 된다. /error}: T
트랜젝션이란, 논리적으로 쪼갤 수 없는 업무 단위로, 하나의 업무를 묶어주는 역할을 한다.하나에 메서드에 여러 기능이 들어가있거나, 하나의 단위로 실행되어야 하는 경우 메서드 위에 @Transactional 어노테이션을 선언하면 하나의 단위로 묶어 사용할 수 있다.트
File Upload 를 위해서는 commons-fileupload 와 commons-io 라는 라이브러리가 필요 하다.하지만 Boot 에서는 기본으로 위 라이브러리를 가지고 있기 때문에 Application.properties 에서 아래 설정만 추가 해 주면 된다.→
💾 download 웹페이지에서 파일을 다운받기 위해서는 여러 작업이 필요하다. 해당 게시글에서는 다운로드를 위한 방법을 하나씩 정리할 예정이다! 순서 1) view에 다운로드를 위한 a 태그 생성 2) controller 에서 download 메서드 생성 3)
게시판에서 게시글을 지우는걸 떠올려보자. 당연히 내가 작성했던 글을 지우면 내가 업로드한 이미지들도 함께 지워지게 된다. 그렇다면 프로그래밍 입장에서 살펴보면 어떨까? 글을 저장하는 테이블과 이미지 저장 테이블 이 있을 경우 이미지 저장 테이블은 글 저장 테이블을 부모로 바라보고 있기 때문에 글이 삭제되면 이미지도 함께 삭제가 될 것이다. ❗ 그렇다...
✨ Restful Service 개념 Representational State Transfer 클라이언트와 서버 요소를 엄격하게 구분한다. 하나의 서버로 다양한 플랫폼의 클라이언트 대응 가능 하다. url 형태로 요청을 명료화 할 수 있다. (=url 형식으로 요청을
Asynchronous JavaScript And Xml비 동기로 통신 하는 JavaScript(JSON) 와 xml 이라는 뜻이다. (요즘은 xml을 잘 사용 안한다.)동기화 : 요청한 일이 끝날 때 까지 다른 일을 하지 못한다. (싱크로나이즈드)비 동기화: 요청 해

AJAX 로 아이디 중복체크 AJAX 는 비동기 통신으로, 화면상에 변화를 주지 않고 특정 서비스를 실행할 수 있다. 우리가 회원가입을 할 때 중복되지 않은 아이디를 입력하기 위해 아이디 중복체크를 하게 되는데, 이때! ajax 방식이 아닌 form 방식으로 진행한다면 페이지가 새로고침되며 입력해둔 회원가입 내용이 다 삭제되게 된다. 그렇기 때문에 A...
AJAX 로 여러 값 전달하고 받기 이전 포스트에서 AJAX로 아이디 중복체크를 해보았다. 그렇다면 id 하나의 값이 아닌 다양한 값을 주고 받을 때에는 어떻게 해야하는지 살펴보자! 먼저 로그인 페이지에서 살펴볼 예정인데, 원래는 로그인 페이지를 ajax로 할 경우

AJAX는 JSON 형태로 값을 전송한다.JSON 형태는 기본 key : value 형태로 전송되지만 Objcet 에는 모든 값이 들어갈 수 있기 때문에 value에 배열, 배열안에 오브젝트, 그 안에 배열 등등.. 굉장히 복잡한 형태의 데이터가 담기는 경우도 있다.이

우리가 게시판에 파일을 업로드하면 업로드 전에 어떤 파일이 등록되었는지 미리보기를 제공하는 경우가 있다.위 사진과 같은 기능을 구현해보자!❗ 이 기능은 AJAX 와 관계 없이 활용 가능하다!htmlinput type="file" 에 onchange 가 발생하면 read
AJAX 로 파일 업로드 하기 AJAX 로 파일을 업로드하기 위해서는 FormData 객체가 필요하다. ❗ IE8 버전에서는 동작하지 않는다! 그럼 먼저 html 문서를 작성해보자 🔽 view html 글쓰기 button 을 누르면 onclick 이벤트가 발생하며 save() 함수가 실행된다. java script FormData 는 자바스크립...

Paging 리스트를 만들다 보면 10, 20개 까지는 한 화면에서 확인하기가 편하지만 만약 30만개의 데이터가 있다면 한 페이지에 담을 경우 한 눈에 보기도 어렵고, 너무 많은 데이터를 한번에 불러와야 하기 때문에 효율성이 떨어지게 된다. 이럴 때 Paging을

동적쿼리 Dynamic SQL 상황에 따라서 쿼리가 반복(for)되거나 변경(if) 되어야 할 경우가 있다. 이때 쿼리 안에서 for문이나 if 문을 사용할 수도 있는데 이를 동적 쿼리라고 부른다. 사용방법은 jsp 에서 사용한 c:if 나 c:foreach 와 유

수정하기수정된 값만 보내기수정하지 않은 값도들어가니까 효율적이지 않다!동적쿼리 <set>다음 값이 있으면 ,를 노출시키고 다음 값이 없으면 ,를 지워버린다.사용을 권고하지 않는 다이나믹 쿼리실시간 데이터 변경 / 조회(사용자 입장에서는 저장되었는지 모르지만 DB에

데이터를 입력하면 저장 버튼을 누르지 않아도 실시간으로 데이터가 저장되는 사이트들을 볼 수 있을 것이다.Restful 은 url 을 경로로 활용하여 데이터를 가져오는 방식으로 url 경로 자체를 파라미터처럼 변수화 시켜서 보낼 수 있다./list/20/1 vs lis
설정을 하는 이유만약 2개의 DB를 연결해야 하면 굉장히 복잡해진다.하지만 설정을 해두면 어떤 DB에 연결을 하던 application.properties에서 끌어오게 되기 때문에 결합도가 낮아진다.스프링에서 내부적으로 어플리케이션에 설정하면 자동으로 불러와서 설정을
주기적으로 실행하는 것setInterver 은 화면이 켜져있어야만 돌아가지만 Scheduler 은 서버가 꺼지기 전까지 계속 돌아간다.우리가 카톡에 들어가면 00 님의 생일 이라는 정보가 뜨는 것을 볼 수 있을 것이다.연차도 시스템이 계산해서 주는데 그거를 매일 00:
FormData 객체는 폼의 모든 입력 요소 값을 자동으로 수집해준다.그래서 FormData 객체를 사용하면 복잡한 작어 없이 데이터를 전송할 수 있다.사용방법var formData = new FormData($('form')\[0];위처럼 작성해주고 확인을 원한다면
HTTP 요청으로 전달된 폼 데이터를 java 객체의 필드에 자동으로 바인딩 해준다.주로 POST 방식으로 전송되 데이터를 객체로 매핑할때 사용한다.컨트롤러 메서드에 @ModelAttribute를 붙이면, 해당 메서드가 반환하는 객체는 자동으로 모델에 추가되어 뷰에서

Logger 를 SQL 문에도 적용할 수 있는데이를 위해 log4jdbc 라이브러리가 필요하다.
mybatis에 resultType를 적어 줄 때 DTO 클래스를 사용한다면 패키지까지 총 경로를 작성해줘야 했었다.하지만 그 이름이 길어질 경우 오타 발생 확률이 높아지기 대문에 별칭 을 사용할 수 있다.application.properties 에 들어가서 mybat
인터셉터 (스프링에 기본적으로 탑재되어 있기 때문에 추가적인 라이브러리가 필요없다.)패키지 → 클래스 만들기클래스 만들 때 org.springframework.web.servlet.config.annotation.WebMvcConfigurer 를 인터페이스로 추가클래스
스프링의 4대 특징1\. 제어역행(I.O.C) 지원하여 필요에 따라 스프링이 사용자 코드를 호출 (내가 요청하지 않아도 알아서 해주는 것)2\. 의존성 주입(D.I) 을 지원하여 느슨한 결합을 유지 (@Auto.. @Value 등 으로 선언해서 하나씩 객체화를 하는 것
필드 주입 필드 주입이란 특정한 빈 (객체)을 변수 (멤버필드)에 넣는다고 하여 필드 주입이라고 부른다.