spring
-
스프링(Spring) SHA-256 알고리즘 이용한 비밀번호 암호화보안(Security)/Login, Password Policy 2018. 9. 10. 09:48
DB에는 다양한 정보들이 있는데, 개인을 지칭할 수 있는 정보를 노출하지 않도록 노력하는것이 의무화 되어 있다. 이를 위해 다양한 데이터들을 암호화 및 복호화를 통해 보안을 강화한다. 암호화된 데이터를 복원할 수 있느냐(복호화가 되느냐) 안되느냐에 따라 암호화 강약을 가늠할 수 있다. 노출됐을 때 미칠 영향력에 따라 암호화 강화 정도를 정한다. 비밀번호, 바이오 정보 암호화 강도가 높아야 하는 데이터 : 일방향 암호화 (복호화 X) 해쉬함수 사용 나머지 암호화 필요한 정보 : 블록 암호. 복호화 가능 과거에는 복호화가 가능한 블록암호를 사용했지만 오늘날 대부분 데이터를 암호화할 때 일방향 암호화 알고리즘을 사용한다. 대표적으로 SHA-256, SHA-512 등이 있다. 그중 SHA-256을 통한 비밀번호..
-
스프링(Spring) 테이블 조인(Join) 예제Spring/컨셉 2018. 9. 7. 10:23
스프링 테이블 조인 예제. 게시글 작성할 때 작성자에 대한 정보를 갖기 위해 조인이 필요하다. 게시글 객체인 BoardVO에 작성자 객체인 UserVO를 멤버변수로 만들어 사용한다. package com.blog.naver.user.vo; import org.hibernate.validator.constraints.NotEmpty; public class UserVO { // userId @NotEmpty(message="userId 입력하세요") private String userId; @NotEmpty(message="userName 입력하세요") private String userName; @NotEmpty(message="userPassword 입력하세요") private String userPa..
-
스프링(Spring) AOP(Aspect Oriented Programming) 이용한 트랜잭션(Transaction) 처리 패턴Spring/컨셉 2018. 9. 7. 10:18
트랜잭션이란 '하나의 업무 처리단위' 를 뜻한다. 이해를 돕기 위해 대표적으로 사용하는 것이 예금 입금 및 출금이다. ATM기로 예금을 출금하는 경우를 하나의 트랜잭션으로 본다면 1) 사용자는 ATM기에 원하는 출금액을 입력 2) ATM기는 출금액 확인 후 DB에서 사용자의 잔고를 갱신 ( 잔고 - 출금액으로 ) 3) ATM기는 출금액만큼 투입구에 반환 여기서 문제는 ATM기에 출금액만큼의 돈이 없는 경우이다. 출금액만큼의 금액을 줄 수 없는 경우 ATM은 출금액만큼 사용자에게 줄 수 없지만 DB에서는 사용자의 잔고가 출금액만큼 줄어 있다. 따라서 사용자의 경우 클레임을 걸어 올 것이다. 이를 방지하기 위해 1 ~ 3까지를 하나의 업무 처리단위로 보고 모두 충족시키지 않는 경우 DB를 이전 상황으로 돌려..
-
스프링(Spring) ORM : MyBatis 예제Spring/컨셉 2018. 9. 7. 10:11
ORM : Object Relational Mapping Framework로 객체 관계 매핑을 좀더 쉽게 돕는 프레임워크이다. 서블릿으로 작성할 때에는 DAO 코드에 쿼리문을 넣고 그에 해당하는 정보를 가져와 멤버에 대해 하나하나 rs.getxx() 메소드 등으로 값을 직접 제어했다면, MyBatis에서는 데이터 타입에 관계 없이 멤버명만으로 값 설정이 가능하다. 이를 위해서 환경 설정이 만만치 않다. 실무에서는 이러한 설정이 잘 되어 있는 프로젝트를 하나 가지고 복사해 사용하면 된다. MyBatis 연동 방법 포스팅 연동에 필수적인 세가지가 있는데 1) Connection Pool 2) MyBatis 3) Ojdbc6.jar 파일이다. 1번은 commons-dbcp(dbcp가 Database Conne..
-
스프링(Spring) 유효성 검사(Validation Check)Spring/컨셉 2018. 9. 7. 10:00
스프링의 큰 강점 중 하나가 name 속성명만 맞추면 그에 해당하는 VO객체 매개변수에 set된다는 것이다. 이와 같이 스프링에서는 모든 데이터를 VO 객체단위로 관리하는데 이를 커맨드(Command) 객체라고도 칭한다. 스프링에서는 커맨드 객체의 멤버들 검증을 보다 간편하게 제공한다. pom.xml에서 hibernate-validator 검색해 org.hibernate hibernate-validator 검색해 org.hibernate hibernate-validator의 최신 Final 버전 선택 후 OKDispatcherServlet 에 등록한 Bean Spring Configuration 파일에 다음과 같이 LocalValidatorFactoryBean 등록. Annotation을 통해 값을 검증..
-
스프링(Spring)에서 자바스크립트(JavaScript) 사용 방법Spring/컨셉 2018. 9. 7. 09:51
스프링에서 css, js, image 등의 자원은 파일이 존재하는 url 그 자체로 사용된다. 따라서 url 요청을 해야 하는데 이는 MVC의 DispatcherServlet에서 판단해 Controller에서 RequestMapping Annotation을 검색하게 된다. 404에러가 발생하게 된다. 따라서 CSS, JavaScript, Image 같은 정적 자원들에 대해 URL을 따로 주어야 하는데 이를 지원해주는 녀석이 mvc:resources이다. 이 태그를 DispatcherServlet에 등록해줘야 사용할 수 있다. 다음과 같이 static 폴더들을 지정해둔다. 보통 WEB-INF 하위에 둔다. web.xml에 springDispatcherServlet의 param-value로 지정해둔 Bean..
-
스프링(Spring) DB 연동 예제Spring/컨셉 2018. 9. 7. 09:45
데이터베이스와 연동해 게시판 테이블의 정보를 가져오는 예제. 서블릿과 똑같이 작성하는데 앞선 예제에서 데이터베이스 연동은 rootContext에서 수행해준다. 따라서 daoImpl에서는 rootContext에 등록해둔 DataSource bean을 이용해 getConnection 메소드만 호출하면 된다. 글로는 난해할 수 있기 때문에 바로 예제를 보자. 테이블은 다음과 같이 작성했고, 데이터는 직접 예전 예제에서 등록했던 데이터들을 사용했다. 글 수정부분은 아직 미완성한 상태 전체 코드가 필요하면 깃허브 참조 https://github.com/minwoohi/board_springDaoImpl 클래스. 서블릿 이용할 때에는 멤버나 setter가 없었지만 rootContext.xml 파일에 등록한 data..
-
스프링(Spring) DataSource 이용한 데이터베이스 (db, oracle) 연동 예제Spring/컨셉 2018. 9. 6. 11:17
스프링 통해 mvc 데이터베이스 연동 예제 스프링에서 데이터베이스 연동을 위해 필수적인 Dependency 2가지를 pom.xml에 추가하는 것이 필요하다. ※ 프로젝트는 STS를 통해 작성되었고, MVC 패턴에 대해 숙지하고 있음을 전제로 작성했습니다. - pom.xml 파일의 Dependencies 탭으로 이동해 Add 버튼 클릭commons-dbcp 입력 후 하위요소 중 1.4[jar] 선택 후 OK Oracle의 경우 Maven 지원을 해주지 않기 때문에 개인 util과 같은 방법으로 등록해야 한다. jcbc.jar 파일이 필요하므로 등록 절차 포스팅1) jdbc 파일을 일정 경로에 둔다. 필자는 c폴더로 지정프로젝트 마우스 오른쪽 버튼 - Run As - Maven build... 클릭Goals..