본문 바로가기

백/spring

(7)
스프링부트의 트랜잭션, 스프링 jpa의 osiv전략 전통적인 스프링의 트랜잭션. 여기엔 문제점이 있음! OSIV(Open Session In View) OSIV는 영속성 컨텍스트를 뷰까지 열어둔다는 뜻이다. 위의 경우 LAZY전략으로 조회시 롯데팀에 대한 정보가 조회되지 않는다. 이유는 서비스에서 영속성 컨텍스트가 종료되었기 때문이다. 이와 같은 경우를 해결하기 위해 영속성 컨텍스트 종료를 컨트롤러에서 종료하게 하여, 컨트롤러에서도 롯데팀에 대해서 조회 할 수 있게 한다. 단, 이때 프록시를 통해 정보를 조회(s) 할 수는 있으나, I, U, D와 같은 기능은 할 수 없다.(트랜잭션이 종료되었기 때문에) 정리해서 다시 그리면 아래와 같음 - 세션의 시작(사용자가 request한 시점)은 서블릿이 시작되는 시점 부터~ (세션은 영속성 컨텍스트를 포함) - ..
스프링 기본파싱전략과 json통신 1. Get요청(select) 주소에 데이터를 담아 보낸다. 데이터 형태는 key=value 특징 : body로 데이터를 담아 보내지 않음. 2. Post, Put, Delete 요청(데이터를 변경) Body에 데이터를 담아 보낸다. 데이터 형태는 json으로 통일하는 것이 좋다. post의 경우 : form method ="post"로 보내면 됨 그러나 form태그의 한계 : get.post 요청만 가능 Put, Delete : 자바스크립트로 요청해야됨 그럼 저거두개는 form, 나머지 자바스크립트로 쓰면 로직이 지저분해짐 => 통일 필요 =>자바스크립트로 ajax요청 + 데이터는 json으로 통일! 태그라이브러리를 사용해서 태그를 사용하면 delete, put도 가능하긴한데 통일하는게 더 낫다. 3...
스프링 시큐리티 2- ng처리 어제에 이어서 스프링 시큐리티 이번엔 로그인 실패시 form에서 메시지가 뜨게 해보자, 요소에서 authentication-failure-url 속성은 /loginForm.html?ng=987로 설정, => 인증 실패 시 사용자를 다시 로그인 페이지로 리다이렉트하며, 쿼리 파라미터 ng=987를 함께 전달 ${param.ng}는 서버로부터 전달받은 ng라는 이름의 파라미터 값 loginform c태그 써야하니까 당연 태그리브 추가! 이제 프로젝트 5번 만들자(원래 4번에 저 테스트 했어야하는데 잘못만들엇음...) login.jsp login.jsp 입니다. is Log-in is Log-Out USER ID: ${pageContext.request.userPrincipal.name} Log Out 로그인..
스프링 시큐리티 1 보안처리하는법 1.컨트롤러 단 마다 보안처리(권장되지않음) 2. aop만들어서하기 3. 스프링 시큐리티! 자 이제 다시 sts랑 스프링으로 돌아가자,,, 인텔리제이랑 부트에 너무 익숙해져서 다 까먹은 것 같다 spring legecy project 만들어서 templates => spring mvc project 로그에 쿼리찍는거, 이거 1. pom.xml 4.2.5.RELEASE 버전 변경 org.springframework spring-jdbc 4.1.4.RELEASE org.projectlombok lombok 1.18.24 provided org.mybatis mybatis 3.2.8 org.mybatis mybatis-spring 1.2.2 로그에 쿼리찍는 log4j 설정 org.bgee.log..
파일 업로드 부터 수정까지 1. head사이에 script넣지말고 바디태그 밑에 넣기 스크립트를 문서의 태그 안에 위치시킨 경우, DOM이 완전히 로드되기 전에 스크립트가 실행되어 작동하지 않을 수 있습니다. 2. . https://kimvampa.tistory.com/m/220
트랜잭션이란!??!?!!?!??! 1. 트랜잭션의 개념 논리적 단위로 어떤 한 부분의 작업이 완료되었다 하더라도 , 다른 부분의 작업이 완료되지 않을 경우 전체 취소되는 것입니다. 이때 , 작업이 완료되는 것을 커밋(commit)이라고 하고 , 작업이 취소되는 것을 롤백(rollback)이라고 합니다. 영화 예매를 할 경우 카드 결제 작업과 마일리지 적립 작업 2. 스프링 트랜잭션 사용방법 트랜잭션 처리를 하지 않았을 경우 rollback이 되지 않는 경우입니다 조건에 안 맞는 데이터가 들어왔을때 '매표소 직원' 테이블에는 제약조건에 걸린 값만 들어오지만 '카드 결제' 컬럼에선 제약조건이 없기때문에 그 데이터가 그대로 남아있다 => 문제생김! 3. 스프링 트랜잭션을 이용하기 위한 설정 *. servlet-context.xml *. Dao..
Spring Validator를 이용한 검증 회원가입할때 많이 씀. 값을 받아와서, 커맨드 객체는 dto.class 컨트롤러단의 validator 객체로 검증 실시 후 view단 => 클라이언트 공통기능을 하는 클래스를 하나 만들어서(StudentValidator), 값 체크하는 메소드를 넣어줌 ValidationUtils 클래스 오류 있으면 각 오류에 맞는 메시지를 보여준다. @Valid와 @InitBinder @Valid 오류 발생시 실습 그대로 전송 이거대신 ValidationUtils.rejectIfEmptyOrWhitespace(errors, "id","trouble"); ValidationUtils.rejectIfEmptyOrWhitespace(errors, "pw","trouble"); 이게 더 간편 로그보면잘나옴 소스코드 packag..