Spring - Transaction
2022. 9. 29. 16:36
Spring/Ch3. Spring DI, AOP
Transaction 더 이상 나눌 수 없는 작업의 단위 Transaction 의 속성 - ACID 원자성(Atomicity) - 나눌 수 없는 하나의 작업으로 다뤄주어야 한다. 일관성(Consistency) - Tx 수행 전과 후가 일관된 상태를 유지해야 한다. 고립성(Isolation) - 각 Tx는 독립적으로 수행되어야 한다. 영속성(Durability) - 성공한 Tx의 결관느 유지되어햐 한다. 커밋(Commit), 롤백(Rollback) 커밋 : 작업 내용을 DB에 영구적으로 저장 롤백 : 최근 변경사항을 취소(마지막 커밋으로 복귀) Tx의 isolation level READ UNCOMMITED - 커밋되지 않은 데이터도 읽기 가능(dirty read) READ COMMITED - 커밋된 데이..
HTML - 주석 종류
2022. 9. 29. 09:12
HTML
: html주석 /* */ : javascript주석, 자바주석 // : javascript주석, 자바주석 :html, JS주석 (변형된 서블릿에서 포함하지 않음) : (주석)은 DOM에 포함되어 보이지만 은 DOM에 포함되어 보이지 않는다.
중고헌터 - DAO(Data Access Object) 작성 2
2022. 9. 29. 08:48
프로젝트/중고헌터
DAO 를 추가하고 톰캣을 실행해서 잘 작동하는 지 확인해 보자 회원가입 먼저 테스트 RegisterController.java package com.jcy.usedhunter; import java.text.SimpleDateFormat; import java.util.Date; import javax.validation.Valid; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.propertyeditors.CustomDateEditor; import org.springframework.stereotype.Controller; import org.springframework.ui..
중고헌터 - 데이터 변환과 검증 2
2022. 9. 28. 09:30
프로젝트/중고헌터
Validator 객체를 검증하기 위한 인터페이스. 객체 검증기(validator) 구현에 사용 수동 검증 UserValidator.java package com.jcy.usedhunter; import org.springframework.validation.Errors; import org.springframework.validation.ValidationUtils; import org.springframework.validation.Validator; public class UserValidator implements Validator{ @Override public boolean supports(Class clazz) { // TODO Auto-generated method stub return U..
중고헌터 - 데이터 변환과 검증
2022. 9. 28. 09:22
프로젝트/중고헌터
Date 를 원하는 형식을 변경 String birth 를 Data 타입으로 변경 User.java package com.jcy.usedhunter; import java.util.Date; public class User { private String id; private String pwd; private String name; private String email; private Date birth; private String sns; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getPwd() { return pwd; } public void setPwd(String ..
중고헌터 - DAO(Data Access Object) 작성
2022. 9. 27. 22:51
프로젝트/중고헌터
DAO(Data Access Object) 데이터(Data) 에 접근(Access) 하기 위한 객체(Object)로 Database 에 저장된 데이터를 읽기, 쓰기, 삭제, 변경을 수행한다.(CRUD) DB테이블당 하나의 DAO를 작성 계층의 분리 UserDao.java package com.jcy.usedhunter.dao; import com.jcy.usedhunter.domain.User; public interface UserDao { int deleteUser(String id); User selectUser(String id); // 사용자 정보를 user_info테이블에 저장하는 메서드 int insertUser(User user); // 매개변수로 받은 사용자 정보로 user_info테이블..
Python - List
2022. 9. 27. 11:29
Python
LIst 와 반복문 활용 리스트에 있는 항목이 차례대로 변수 i에 대입되어 반복문이 실행된다. for i in heroes: heroes = [] for i in range(3): name = input("영웅들의 이름을 입력하시오: ") heroes.append(name) for i in heroes: print(i, end=" ") 숫자도 마찬가지 for i in [1, 2, 3]: print("i=", i) num 리스트에 있는 숫자 중 홀수만 출력 num = [100, 96, 209, 22, 30, 117] for i in num: if i%2==1: print(i, end=" ") random 함수를 이용해 리스트에 저장된 것을 랜덤으로 인덱스 번호를 받아 해당 리스트 항목을 출력한다. impo..
JDBC - PreparedStatement
2022. 9. 27. 09:22
JDBC
PreparedStatement PreparedStatement(java.sql.PreparedStatement) 는 Statement 보다 향상된 기능을 가지고 있다. PreparedStatement 는 statement 와 달리 캐시를 사용한다. 객체를 캐시에 담아 재사용한다. 그래서 반복적으로 쿼리를 수행한다면 statement 에 비해 성능이 좋다 또한 SQL Injection 방어에 유리하다. 저장할 데이터에 해당하는 VALUES 의 값에 물음표(?) 를 쓴다. 이 물음표에 pstmt.setString(1, user.getId()); 를 사용해 값을 넣어준다. 1 과 같은 숫자의 의미는 인덱스에 해당하는 물음표의 순번이다. pstmt.executeUpdate(); 는 INSERT, UPDATE,..
중고헌터 - TDD(Test-Driven-Development)
2022. 9. 27. 09:00
프로젝트/중고헌터
테스트에 사용할 User 클래스 만들기 User.java package com.jcy.usedhunter.domain; import java.util.Date; import java.util.Objects; public class User { private String id; private String pwd; private String name; private String email; private Date birth; private String sns; private Date reg_date; public User(){} public User(String id, String pwd, String name, String email, Date birth, String sns, Date reg_date) ..
중고헌터 - STS, DB(MySQL ) 연결
2022. 9. 27. 02:03
프로젝트/중고헌터
DBConnectionTest.java 실행하면 아래에 오류가 발생한다. package com.jcy.usedhunter; import java.sql.*; public class DBConnectionTest { public static void main(String[] args) throws Exception { // 스키마의 이름(springbasic)이 다른 경우 알맞게 변경해야 함 String DB_URL = "jdbc:mysql://localhost:3301/springbasic?useUnicode=true&characterEncoding=utf8"; // DB의 userid와 pwd를 알맞게 변경해야 함 String DB_USER = "jcy"; String DB_PASSWORD = "dar..
Spring - Application Context
2022. 9. 26. 14:09
Spring
Application Context Spring 에서는 빈의 생성과 관계설정 같은 제어를 담당하는 IoC(Inversion of Control) 컨테이너인 빈 팩토리(Bean Factory) 가 존재한다. 하지만 실제로는 빈의 생성과 관계설정 외에 추가 적인 기능이 필요한데, 이러한 이유로 Spring에서는 빈 팩토리를 상속받아 확장한 Application Context 를 주로 사용한다. Application Context 는 별도의 설정 정보를 참고하고 IoC 를 적용하여 빈의 생성, 관계설정 등의 작업을 총괄한다. Application Context 에는 직접 오브젝트를 생성하고 관계를 맺어주는 코드가 없다. 그래서 생성 정보와 연관관계 설정을 읽어 처리한다. @Configuration 과 같은 어..
Spring DI - Spring DI 흉내내기
2022. 9. 25. 17:08
Spring/Ch3. Spring DI, AOP
변경에 유리한 코드(1) - 다형성, factory method class Car{} class SportsCar extends Car{} class Truck extends Car{} Car car = getCar(); static Car getCar(){ return new SportsCar(); } static Car getCar(){ return new Truck(); } 변경에 유리한 코드(2) - Map, 외부 파일 Car car = getCar(); static Car getCar() throws Exception { // config.txt 를 읽어서 Properties 에 저장 Properties p = new Properties(); // Map(Object, Object), Prope..
Spring MVC - 데이터 변환과 검증2
2022. 9. 25. 10:49
Spring/Ch2. Spring MVC
Validator 객체를 검증하기 위한 인터페이스. 객체 검증기(validator) 구현에 사용 수동 검증 UserValidator.java package com.fastcampus.app; import org.springframework.validation.Errors; import org.springframework.validation.ValidationUtils; import org.springframework.validation.Validator; public class UserValidator implements Validator{ @Override public boolean supports(Class clazz) { // TODO Auto-generated method stub return U..
Spring MVC - 데이터 변환과 검증
2022. 9. 24. 18:35
Spring/Ch2. Spring MVC
Date 를 원하는 형식을 변경 String birth 를 Data 타입으로 변경 User.java package com.fastcampus.app; import java.util.Date; public class User { private String id; private String pwd; private String name; private String email; private Date birth; private String sns; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getPwd() { return pwd; } public void setPwd(String ..
Spring MVC - DispatcherServlet
2022. 9. 23. 21:30
Spring/Ch2. Spring MVC
공통 부문 역할 전처리 Spring MVC 의 요청 처리 과정 ViewResolver 주요 메서드 메서드 설명 void initStrategies(ApplicationContext context) 기본 전략을 초기화 void doService(HttpServletRequest request, HttpServletResponse reponse) doDispatch() 호출 void doDispatch(HttpServletRequest request, HttpServletResponse reponse) 실제 요청을 처리 void processDispatchResult(HttpServletRequest request, HttpServletResponse reponse, HandlerExecutionChain)..
Spring MVC - 예외 처리2
2022. 9. 22. 21:36
Spring/Ch2. Spring MVC
@ResponseStatus 응답 메시지의 상태 코드를 변경할 때 사용 @ControllerAdvice 에 일부로 패키지을 잘 못 입력하자 그러면 500 번 내부서버오류가 날 것이다 GlobalCatcher.java package com.fastcampus.app; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; @ControllerAdvice("com.fastcampus.bpp") public class GlobalCatcher { @ExceptionHan..
Javascript - document.getElementById()
2022. 9. 22. 10:55
JavaScript
document.getElementById() 해당되는 id의 요소에 접근하는 함수이다. 예로 라는 부분이 있을 때 document.getElementById("aaa") 라고 한다면 라는 부분에 접근 가능하다. 접근한 후 의 여러 특성들을 자바스크립트로 바꿀 수 있다. element = document.getElementById(id); 일반적인 형태 Element getElementById(String elementId); 전달인자 elementId : 원하는 엘리먼트의 id 어트리뷰트 값 반환값 지정된 id 어트리뷰트를 가진 문서 엘리먼트를 나타내는 Element 에 해당하는 Element를 찾지 못하면 null 을 반환 HTML javascript var textBox = document.getE..
Javascript - onsubmit
2022. 9. 22. 10:40
JavaScript
onsubmit submit(폼 전송) 이벤트가 발생할 때 실행할 동작을 정의해주는 것이다. 이벤트가 발생하고 리턴값에 따라 submit을 하거나 하지 않거나 함 return의 의미 1. form 전송 이벤트 발생 시 실행할 코드 할당 위와 동일한 코드 form.onsubmit = function() { test(); } 2. form 전송 이벤트 발생 시 코드를 실행하고 결과를 return 위와 동일한 코드 form.onsubmit = function() { return test(); } 정리 return 은 onsubmit 이벤트에 실행할 코드를 할당하는 것과 onsubmit 이벤트에 결과값 true, false 를 리턴 하는 것의 차이다.
Spring MVC - 예외 처리
2022. 9. 22. 08:53
Spring/Ch2. Spring MVC
예외 처리 ExceptionController.java package com.fastcampus.app; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.RequestMapping; @Controller public class ExceptionController { @RequestMapping("/ex") public String main() throws Exception{ try { throw new Exception("예외가 발생했습니다."); } catch (E..
중고헌터 - 로그인 페이지 만들기3
2022. 9. 21. 17:48
프로젝트/중고헌터
로그인 성공 시 전에 있었던 페이지로 이동 BoardController.java list 메서드 리턴 값에 request.getReqeustURL() 을 추가해 GET 방식으로 URL 값을 넘긴다 package com.jcy.usedhunter; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; @Co..