라이브러리 설치 파일명 : pom.xml org.springframework.boot spring-boot-starter-thymeleaf 2 . 환경설정 파일명 : resources/application.properties
controller entity service에서는 model 과 controller를 담당하고resource에 있는 static과 templates에서 view를 담당한다static에는 이미지와 css파일이 들어온다.1\. bootstrap이 static에 들어감.2
여기서 return "member/insert"는 member폴더에 있는 insert.jsp표시한다는 의미다주소를 치고 enter키를 치면 무조건 get으로 들어옴 회원가입으로 누르면 post로 넘어감주소창에 /member/insert를 입력 후 엔터키를 누르는 것과
entity 파일 만들기@Document는 db의 컬렉션과 연결하겠다는 의미를 담고 있다.application.properties에서 db에 접속하고 , entity에서 collection과 연결한다. @ID는 db컬렉션 안에 \_id 컬럼으로 들어감을 의미한다. Fi
서비스 또는 저장소라고 부른다.DB와 연동하는 부분 구현하는 설계 부분MemberDB.javaMemberDBImpl.java기존 자바에서는 생성자에서 db연동을 했었음. 스프링에서는 application.properties에 이미 연동 되어있음.연동 된 정보만 불러오면
DB에서 데이트가 나오는 과정은 Item.class에 선언된 변수명으로 바뀌어서 나온다.컬럼명은 itemname, itemprice이지만 설계되어 있는 변수 명은 name, price임을 알 수 있다.jsp에서 데이터를 부를 때에도 변수명으로 불러야 한다. 위의 에러는
form태그 속성에 enctype을 추가, name 값 설정하기파일의 name은 image로 설정햇다form의 속성 form의 속성에는 method, action, enctype 등이 있다.method : 전송 방식 - post , getaction : 전송 목적지
DB및 DBIMPL (설계부분) 물품목록(페이지정보 1, 2, 3 , 내림차순)import해야 하는 Queryorg.springframework.data.mongodb.core.query.Query기준, 프로젝션, 정렬 및 쿼리 힌트를 나타내는 MongoDB 쿼리 개체
물품 수정위에서 어떤 타겟을 수정할 것인지 기준을 잡고어떤 것을 수정할 것인지 ("수정할 컬럼명", " 수정할 값") 정한다.UpdateResult result = mongodb.updateFirst(query, update, Item.class);를 통해 업데이트
이렇게 활용하면 and로 취급 됨
바로 직전의 통신도 기억 못하는 HTTPHTTP는 stateless한 특성을 가지기 때문에 각 통신의 상태는 저장되지 않습니다.하지만 우리가 웹 서비스를 사용할 때를 생각해봅시다.매번 새 페이지를 요청할때마다 로그인을 해야 한다면 사용이 불가능할 것입니다.기억하는 척
보다시피 thymeleaf 문법으로 쓰여진 HTML templates는 항상 마크업 언어 안쪽에 속성으로 쓰여지기 때문에 HTML 페이지처럼 보이고 실제로 동작하는데 그것은 natural templates라고 부른다. 톰캣같은 서버가 동작하지 않아도 HTML 페이지가
위의 내용을 사용하려면 controller에서model값으로 msg와 url을 전달하면 된다.
페이지네이션과 검색기능을 가지고 있는 DB를 설계한다.title에 text가 포함된 것을 찾는다.controllerdefaultValue 생각해줄 것, int는 "숫자"로 넘겨주기!
과 같이 배열로 넘긴다.1번 방법 반복문을 통해 새로운 배열을 만들고, 하나씩 넘기고 수정시키는 과정을 반복한다.2번 방법 반복된 리스트를 들고가서 컨트롤러에서 바꾸기반복을 DB에서 하냐 controller에서 하냐의 차이
기존에 사용하던은 몽고 DB에서 attr을 쉽게 확인하기 위해서, 객체, 배열 x 문자는 됨userid나 pw가 들어가 있나 간단하게 확인하기 쉬움. 하지만 배열은 담을 수 없음.위처럼 설정하면 어떤 것이 들어있는지 확인하기 어렵지만 배열을 담을 수 있다.
@SuppressWarning언젠가부터 자꾸자꾸 여기저기에이클립스가 권해주는 어노테이션이죠.이건 컴파일러가 일반적으로 경고하는 내용 중"이건 하지마"하고 제외시킬 때 쓰입니다.따라서 어떤 경고를 제외시킬지 옵션을 줄 수 있어요.몇 가지 정리해보면all : 모든 경고를
서비스 =>mybatis => 설계 + 구현(SQL문)저장소 =>jpa, hibernate => 설계 + 구현(SQL)https://docs.spring.io/spring-data/mongodb/docs/3.0.9.RELEASE/reference/html/Ap
폼 주소에 ROOT를 넣을 시localhost/ROOT나중에 압축하면ROOT.war => ROOTlocalhost/ROOT1ROOT.war => ROOT1이렇게 만들면 오류남그래서 contextpath가 자동으로 잡을 수 있게 만들어야함@를 넣으면 contextpath
example > confing > MybatisConfig.javaresources > mappers > memberMapper.xml아이디는 중복되면 안된다.parameterType은 클래스 타입이면 파일 위치, String이면 String받는 게 없으면 작성하지
There was an unexpected error (type=Internal Server Error, status=500).resultType을 설정해주지 않아서 발생하는 오류다음과 같이 수정해서 해결
세션에 데이터 넣기
@RequestMapping은 value작성에 중복을 없애는 것이지, return 주소와는 무관하다.
어노테이션 @Service를 누락해서 발생하는 오류
enctype = "multipart/form-data"file은 MultipartFile타입이다.
HashMap은 Map 인터페이스를 구현한 대표적인 Map 컬렉션입니다. Map 인터페이스를 상속하고 있기에 Map의 성질을 그대로 가지고 있습니다. Map은 키와 값으로 구성된 Entry객체를 저장하는 구조를 가지고 있는 자료구조입니다. 여기서 키와 값은 모두 객체입
JDBC(Java Database Connectivity)는 자바에서 데이터베이스에 접속할 수 있도록 하는 자바 API이다. JDBC는 데이터베이스에서 자료를 쿼리하거나 업데이트하는 방법을 제공한다.image파일을 쿼리문으로 작성하기 위해 jdbcType=BLOB로 바
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=rlasksdud53&logNo=220595010315
파라미터를 2개를 던질 수 없기 때문에class를 만들거나, map을 만들어서 던진다
select 에는 항상 result의 과정이 있다. 1\. 컬럼명과 변수이름이 같고2\. 타입이 같을 경우 result의 과정을 생략할 수 있다.만약 다르다면
쿼리문에 obj.uemail대신 obj,uemail을 작성해서 발생한 오류 오류 잘 확인할 것 !
em과 pw는 아무거나 써도 됨 자리값임em과 pw는 controller에서 위와 같이 뜨는 거임
1. mapper 파일 만들고 application에 연결하기
xml을 이용한 mybatis와는 다르게 파라미터 n개 가능 대신 명칭을 부여해줘야 함.왜냐하면 구분하기 위해@Param(value = "aa")를 쓰면 쿼리문에는 #{aa}를 써야한다
"UPDATE MEMBERADDR SET UADDRESSS = {memberaddr.uaddresss},UPOSTCODE=UCODE=\`\`\`memberaddr.ucode를 해야하는데 ucode를 뺴먹음
업데이를 하고 나서 리턴 타입을 MEMBERADDR로 받아서 발생하는 문제.UPDATE MEMBERADDR에서 UPDATE INT로 바꿔서 문제 해결
쿼리문을 안에 < script>를 넣는다.choose안에 if문이 들어간다.when은 if의 역할을 한다.
원래 설계는 로그인하면 홈으로 가게 되어있음. backurl을 session으로 넣으면 되돌아갈 수 있지만 일일이 다 설정하기 번거러움. controller로 가기 전에 통하는 게 하나가 더 있음. intersept, AOP가 있음. 이런이런 컨트롤러는 방문하
1. pom.xml에 dependency import하기 2. SecurityConfig 만들기
인풋타입 히든 name = csrf가 있는 거만 데이터를 받음. 없으면 안됨.config파일에이 있으면 안 보임.해쉬해서 들어갔음
UserDetailService의 interface를 imlpement 한거임.리턴타입이 메일, 패스워드, 권한을 담아야함.권한은 여러개를 담을 수 있음.AuthenticationManagerBuilder는 HttpSecurity에 포함된 거임.아래에서 HttpSecu
@Authentication Principal User user여기서 User는 지금 권한은 object임.다음과 같이 하면 null이면 오류가 난다. 로그아웃하면 홈화면 시 nullpointer 발생
이미지나, 페이지네이션 같은 건 나중에 되면 찾기 힘들다. global.properties에서 만들고 끌어다 쓴다 오버라이딩을 한다super.configure(http)는 부모의 기능을 쓰겠다고 선언하는 거임. 이것을 주석처리 한다.
html파일을 만들지 않고, 빠르게 확인하기 좋은 방법
다음과 같이 에러가 나는 게 정상인데, 서비스가 작동하지 않는 현상이 발생.UserDetailService를상속받는 class가 두개여서 충돌이 일어났음.사용이 안되는 경우가 발생. 둘 중 하나의 파일을 제거 후 사용하니 정상작동 됨.
위의 것이 필요함 get은 자동으로 들어감.post는 보안때문에 이걸 직접 넣어줘야 함.
backend만 구현함, 화면구현 x , vue, react와 연동consumes => 받는 타입 ALL_VALUE는 모든 걸 다 받는다.produces => 반환되는 타입 json으로 잡았음.postman에 입력하면405에러가 나오는데 그 이유는 security때문에
기존의 것과 차이점은 consumes, produces, RequestBody, Map
@RequestParam은 1개의 HTTP 요청 파라미터를 받기 위해서 사용한다. @RequestParam은 필수 여부가 true이기 때문에 기본적으로 반드시 해당 파라미터가 전송되어야 한다. 해당 파라미터가 전송되지 않으면 400 Error를 유발하게 된다. 그렇기
로그인은 securiy로 했었다. 로그인이 필요한 상황 어떻게 처리할 것인가?serviceimpl을 이용해서 쓴다.bcpe.mathes(암호화x 암호, 암호화o 암호)같으면 토큰 넣기
dist안에css, img, js, favicon.ico는 static안index.html은 template, vue안에주의할 점/ROOT가 빠져서 안나옴http://127.0.0.1:9090/ROOT/css/app.fb0c6e1c.css가 되었어야 함.다시
Reposity도 쓰고, managerentity안에있는것도 쓰고
required= false를 넣으면 반드시 첨부를 안해도 된다.
위치가 기본으로 resource로 잡혀있음
select는 컨트롤러에서 받아왔음
상황 : 한 로직에 DB insert를 실행한 후 HttpClient를 이용해 restAPI를 실행시킨 후 return 값으로 추가 로직을 처리해야 하는 상황 중 HttpClient method 실행 중 잘못된 api를 실행시키면 ClientProtocolExcepti
상황 : 한 로직에 DB insert를 실행한 후 HttpClient를 이용해 restAPI를 실행시킨 후 return 값으로 추가 로직을 처리해야 하는 상황 중 HttpClient method 실행 중 잘못된 api를 실행시키면 ClientProtocolExcepti
상황 : 한 로직에 DB insert를 실행한 후 HttpClient를 이용해 restAPI를 실행시킨 후 return 값으로 추가 로직을 처리해야 하는 상황 중 HttpClient method 실행 중 잘못된 api를 실행시키면 ClientProtocolExcepti
상황 : 한 로직에 DB insert를 실행한 후 HttpClient를 이용해 restAPI를 실행시킨 후 return 값으로 추가 로직을 처리해야 하는 상황 중 HttpClient method 실행 중 잘못된 api를 실행시키면 ClientProtocolExcepti