11.[블로그 프로젝트] 로그인, 회원가입 화면 만들기
템플릿 구성하기우리 블로그에서 모든 페이지에서 푸터가 동일하게 적용될 수 있도록 템플릿을 구성해보자.스크립트 태그를 바디가 끝나는 태그 바로 위에 두자.(다른방식도 있으니 유의하자.)views 폴더 안에 layout 폴더를 만들고, footer.jsp, header.jsp를 만들자. 그리고 index.jsp에서 헤더에 해당하는 부분을 header.jsp로
템플릿 구성하기우리 블로그에서 모든 페이지에서 푸터가 동일하게 적용될 수 있도록 템플릿을 구성해보자.스크립트 태그를 바디가 끝나는 태그 바로 위에 두자.(다른방식도 있으니 유의하자.)views 폴더 안에 layout 폴더를 만들고, footer.jsp, header.jsp를 만들자. 그리고 index.jsp에서 헤더에 해당하는 부분을 header.jsp로
자 intellJ로 Spring Boot 프로젝트를 다루는 와중 문제가 생겼다.JSP를 추가하기 위해 디렉토리를 만들었는데…여기 WEB-INF 폴더에서 new를 해도 JSP파일을 고를 수가 없다..! 그래서 혼신의 구글링을 통해 해결방법을 찾았다.File - Project Structure - Web Resource Directory에서 우리가 만든 디렉토
Get요청Get은 body에 데이터를 못 담는다.주소에 데이터를 담아 보낸다.데이터 형태는 key : value 형태이다. Post, Put, Delete 요청데이터를 담아보내야 할 것이 많다!body에 담아서 보낸다. form 태그 방식으로 post를 요청할 수 있지만,form은 get, post만 가능하므로자바스크립트로 요청하는게 일반적이다. 결국 자바
웹 UI를 구현할 때, 굳이 html, css를 모두 구현할 필요가 없다.Bootstrap이나 Materialize를 통해서 쉽게 구현할 수 있다. 우리는 w3school에서 bootstrap4의 collapsing the navigation bar의 코드를 복사한다. 이렇게 프로젝트 구조를 만들어서 index.jsp에 우리가 아까 복사한 내용을 덮어쓰운
최대공약수, 최소공배수를 다룬 문제가 나오면 GCD나 유클리드 호제법을 반드시 알고 있어야한다!알아보자! GCD 최대공약수를 구하는 알고리즘두 수 중 작은 수가 0이 될 때까지 반복하면 된다.큰수는 작은수가 되고, 작은수는 큰수를 작은수로 나눈 나머지가 된다. 123456789//a>bint GCD(int a, int b){ whil
접근 아이디어 스택을 사용해서 “(“이 나올 때마다 push!“)”이 나올때마다 pop하고 나서 스택에 남은 요소 만큼 쇠막대기가 더해지거나 하나만 더해진다.이전에 “(“ 였으면 스택 요소 갯수만큼, 이전에 “)”였으면 그냥 1만 더해진다. 필요한 개념 삼항 연산자에 대해 알아보자.조건문 ? true일 경우 : false일 경우 1int add =
접근 아이디어 < >안에 있는 단어를 그렇지 않은 단어와 다르게 처리해야 한다.그러나 언제 < >가 나올지 모르는게 문제다!그래서 “>”를 기준으로 문장을 나누면 < > 문자열의 위치에 규칙이 생긴다.만약 < >가 있으면 항상 뒤 쪽에 있다는 것! 필요한 문법 이번엔 라벨을 사용해서 루프를 빠져 나왔다
update1. save 메소드를 활용한 update123456789101112131415@PutMapping("/dummy/user/{id}")public User updateUser(@PathVariable int id, @RequestBody User requestUser){ System.out.pri
영속성 컨텍스트?영속성 컨텍스트는 JPA안에 존재하는 개념인데,우리가 만든 컨트롤러에서 save메소드를 호출하게 되면, 영속성 컨텍스트에 1차 캐시라는 것이 생성되고,1차 캐시에 우리가 save메소드의 인자로 보낸 객체가 쌓인다.이 과정을 영속화 되었다고 한다. 이렇게 영속화된 객체를 실제 DB에 저장하는 행위를 flush라고 한다.근데 flush이후에 1
select1. 하나의 데이터 select하기!123456789101112131415161718192021@GetMapping("/dummy/user/{id}")public User detail(@PathVariable int id){ //1. User user = userRepository.findB
어노테이션어노테이션은 자바 소스코드에 추가적인 정보를 제공하는 메타데이터이다.어노테이션 선언 방법을 알아보자 1. 마커 어노테이션표시만 해두는 어노테이션. 메서드 없이 선언하면 마커 어노테이션이 된다.@Override, @Deprecated 가 대표적 예시. 1public @interface Marker{} 이렇게 선언을 해놓으면, 12@
1. 상속extends로 특정 객체의 필드와 메소드를 상속받을 수 있다.이때, super클래스의 private 필드나 메소드는 자식클래스도 직접 접근할 수 없다. 그렇다면 자식 클래스는 상위 클래스의 멤버 변수를 어떤 원리로 사용할 수 있는 건가? 12345678public Super(){ className = "super&quo
JpaRepository이제 DB에 insert하기 위해 프로그램을 작성해볼 것이다!먼저 com.cos.blog 패키지 하위에 repository라는 폴더를 만들자.그리고 그 안에 UserRepository 인터페이스를 만들자.이 인터페이스는 DB 저장소에 update할 메소드를 제공한다. 12345678910package com.cos.blog.repos
application.yml의 JPA일단 application.yml파일에 있는 jpa 관련 내용을 해석해보자. 12345678910jpa: open-in-view: true hibernate: naming: physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategy
1. 클래스 vs 객체 vs 인스턴스12345678public class CreditCard{ ... public static void main(String[] args){ CreditCard card1, card2;//객체 card1 = new CreditCard();//인스턴스 card2
JVM 구조아시다시피, 자바는 운영체제의 종류와 무관하게 실행가능하다.자바 코드를 컴파일해서 얻은 바이트 코드를 해당 운영체제가 읽을 수 있는 기계어로 바꿔준다.JVM은 크게 4가지로 나뉜다. 1. Class Loader자바로 코드를 작성하면 java파일이 생성된다..java파일을 컴파일하면 .class파일(바이트 코드)이 생성된다.이렇게 생성된 .clas