전체 글

인증이 되지 않은 사용자가 접근할 수 있는 주소를 /auth/로 수정했음. 각종 url을 맞게 수정함. loginForm.jsp 의 버튼을 다시 form 안쪽에 집어넣고 post 메서드를 넣어줬음. Username: Password: 로그인 상태 유지 로그인 user.js에서 btn-login 부분을 삭제함. config 패키지를 생성한 후 SecurityConfig.java를 생성함. package com.pure.blog.config; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.method.configuration.EnableGlobalMe..
pom.xml 수정 (주석처리 해제) 4.0.0 org.springframework.boot spring-boot-starter-parent 2.6.2 com.example blog 0.0.1-SNAPSHOT blog My 1st blog prj 1.8 org.springframework.boot spring-boot-starter-data-jpa org.springframework.boot spring-boot-starter-security org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-devtools runtime true mysql mysql-connector-java runtime org.p..
application.yml server: port: 8282 servlet: encoding: charset: UTF-8 enabled: true force: true spring: mvc: view: prefix: /WEB-INF/views/ suffix: .jsp datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/blog?serverTimezone=Asia/Seoul username: pure password: pure1234 # ddel-auto: create로 하면 서버 재시작마다 비어 있는 새 테이블을 생성함. jpa: open-in-view: true hibernate: ddl-aut..
스프링 시큐리티를 사용하지 않는 기존 방식의 로그인 구현 loginForm.jsp Username: Password: 로그인 상태 유지 로그인 User.js 수정 let index = { init: function() { $("#btn-save").on("click", ()=>{ this.save(); }); $("#btn-login").on("click", ()=>{ this.login(); }); }, save: function() { let data = { username: $("#username").val(), password: $("#password").val(), email: $("#email").val() }; //javascript 오브젝트임. //ajax 호출시 default가 비동기 호..
트랜잭션 - 일이 처리되기 위한 가장 작은 단위 - 트랜잭션이 여러개 모여서 하나의 트랜잭션이 될 수 있음. - 그렇게 여러 개의 트랜잭션을 모아 놓은 것을 서비스라고 부름. DB 격리수준. 1. Read Committed - 오라클 DB의 default - 온라인 서비스에서 가장 많이 선택되는 격리수준 - 어떤 트랜잭션의 변경 내용이 commit이 되어야 다른 트랜잭션에서 조회가 가능함. - 하지만 이 또한 non-repeatable read 부정합이 발생함. 2. Repeatable Read - MySQL의 default - 트랜잭션이 시작되기 전에 커밋된 내용에 대해서만 조회할 수 있음. https://joont92.github.io/db/%ED%8A%B8%EB%9E%9C%EC%9E%AD%EC%85..
UserController.java package com.pure.blog.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; @Controller public class UserController { @GetMapping("/user/joinForm") public String joinForm() { return "user/joinForm"; } @GetMapping("/user/loginForm") public String loginForm() { return "user/loginForm"; } } joinForm.jsp Username:..
https://www.w3schools.com/bootstrap4/bootstrap_navbar.asp Bootstrap 4 Navigation Bar W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more. www.w3schools.com https://www.w3schools.com/bootstrap4/bootstrap_templates.asp Bootstrap 4 Templates W3Schools offe..
1. Get 요청 주소에 데이터를 담아서 보낸다. ==> Http body가 없다. 데이터 형태는 key = value 2. Post, Put, Delete 요청 (데이터를 변경) 담아 보내야 할 데이터가 여러개임. post 방식은 form 태그의 method = 'post'로 하면 됨. 하지만 form태그는 get, post 방식만 사용 가능. 그래서 나머지는 자바스크립트로 요청해야 함. ==> 자바스크립트로 ajax 요청, 형식은 JSON으로 통일하게 됨. *form:form 태그라는 것도 있음. (스프링 프레임워크 기능) taglib 중에 하나임. 3. 스프링 컨트롤러의 파싱 전략 1 key = value 형태는 자동으로 파싱하여 변수에 담아줌. 4. 스프링 컨트롤러의 파싱 전략 2 key = va..
Purewater
프로그램 공부 일기장