본문 바로가기

동방프로젝트

(67)
JSON 예시 //JSON(JavaScript Object Name) 예시 { "name":"유관순", "birthday":"1902-12-16", "age":17, "related":["남동순","류예도"] "edu":[ { "title":"이화학당보통과", "year":1916 }, { "title":"이화학당고등과", "year":1916 }, { "title":"이화학당고등과", "year":1916 } ] } 중괄호로 객체 표현. 객체는 (이름, 값) 쌍을 가지며, 콜론으로 구분. 배열은 대괄호 & 불린은 true, false로 표현. related배열은 문자열 값 목록을, edu배열은 객체를 값목록으로 가짐. JSON형식 문자열 간 변환은 Jackson 라이브러리를 통해 변환. 스프링 MVC에서, Jacks..
ControllerAdvice 컨트롤러 클래스에 ControllerAdvice를 이용해, 다수의 컨트롤러에서 동일 타입의 익셉션이 발생할 경우, 중복을 제거할 수있다. @ControllerAdvice("spring") public class CommonExceptionHandler{ @ExceptionHanlder(RuntimeException.class) public String handleRuntimeException() { return "error/commonException"; } } ControllerAdvice가 적용된 클래스는 지정한 범위의 컨트롤러에 공통으로 사용될 설정을 지정할 수 있다. 위에선, spring과 그 하위패키지에 속한 컨트롤러를 위한 공통기능을 정의한 것으로, spring패키지와 그 하위패키지에 속한 컨..
jdbcTemplate 중복코드 제거 new RowMapper() { @Override public Member mapRow(ResultSet rs, int rowNum) throws SQLException { Member member= new Member( rs.getString("EMAIL"), rs.getString("PASSWORD"), rs.getString("NAME"), rs.getTimestamp("REGDATE").toLocalDateTime()); member.setId(rs.getLong("ID")); return member; } }​ //람다를 이용해, 임의클래스를 생성하는 것보다 더 간단하게 표기. (ResultSet rs, int rowNum) -> { Member member = new Member( rs.get..
Model을 통해 컨트롤러에서 뷰에 데이터 전달 package survey; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; @Controller//스프링mvc에서 컨트롤러로 사용됨 @RequestMapping("/survey") //"/survey"경로 요청에 대해 실행하는 메서..
스프링이 제공하는 폼 태그 사용이전 jsp 회원 정보 입력 이메일: 이름: 비밀번호: 비밀번호 확인: 회원 정보 입력 이메일: 이름: 비밀번호: 비밀번호 확인: 위는 수정후. 태그는 HTML의 태그를 생성. 위 태그의 action속성은 form태그의 action속성과 동일. modelAttribute는 커맨드 객체의 속성이름 지정. 는, 커맨드객체(registerRequest)의 name프로퍼티값을 value속성으로사용 즉, name프로퍼티값이 '스프링'일 경우, 해당 코드는 마찬가지로, form:password도, password타입의 input태그를 생성하므로 value속성의 값을 빈 문자열로 설정 태그엔 커맨드객체 존재가 필수. step1에서 step2로 넘어오면서 이름이 registerRequest인 객체를 모델에 넣어야 해당 태그가 정상..
spring의 transactional&proxy 트랜잭션의 시작&커밋&롤백의 처리를 담당하는 건? 두개 이상의 작업을 하나로 퉁친다. 가령, 비밀번호 변경을 위해 이메일을 발송-해당계정 일시 잠금-이메일 인증시 잠금해제를 한다고 할 때, 잠금을 했는데 발송된 이메일을 인증하는 과정에서 문제가 발생하면, 잠금만 되고 해제는 영원히 되지 않는다. 이때, 트랜잭션을 이용해 하나가 잘못되면 전체가 down이 되도록 해, 성공과 실패 모두 하나가 되도록 하면 문제가 없다. 즉, 인증 과정에서 잘못되면 발송부터 전부 취소가 돼 없던것으로 하는 것이다. @Transactional을 적용하기 위해 @EnalbeTransactionManagement를 사용시, 스프링이 @Transaction이 적용된 빈객체를 찾아 알맞은 proxy객체를 생성. MainForCPS실행..
8과 queryForObject() Member member= jdbcTemplate.queryForObject( "select*from MEMBER where ID=?", new RowMapper() { @Override public Member mapRow(ResultSet rs, int rowNum) thorws SQLException { Member member = new Member(rs.getString("EMAIL"), rs.getString("PASSWORD"), rs.getString("NAME"), rs.getTimestamp("REGDATE").toLocalDateTime()); member.setId(rs.getLong("ID")); return member; } }, 100); queryForObject 결과 칼럼이..
7과-2 @Configuration @EnableAspectJAutoProxy public class AppCtxWithCache { @Bean public ExeTimeAspect exeTimeAspect() { return new ExeTimeAspect(); } @Bean public CacheAspect cacheAspect() { return new CacheAspect(); } @Bean public Calculator calculator() { return new RecCalculator(); } } CacheAspect: Cache에 추가[7] RecCalculator.factorial([7]) 실행시간 : 446500 ns CacheAspect: Cache에서 구함[7] RecCalculator...