본문 바로가기

Spring

(18)
Spring(18) - 스프링 Security 웹 어플리케이션을 개발할 때 프로그래머를 괴롭게 만드는 것중 하나가 바로 보안 입니다. 허가된 사용자만 접근할 수 있도록 접근권한을 제어하고, 중요한 정보는 HTTPS같은 프로토콜을 이용하여 암호화하여 주고받기도하며, 사용자의 로그인 암호나 신용카드 번호같은 민감한 정보들은 DBMS에 암호화하여 저장해야합니다. 이렇게 글로만 봐도 정말 막막한 느낌이 드는건 저뿐인가요..? 보안관련해서 웹어플리케이션 개발자의 코딩과 직결된 3가지는 다음과 같습니다. 인증(Authentication)처리 : 현재 사용자가 누구인지 확인하는 과정으로, 일반적으로 아이디/암호를 이용해 처리 인가(Authorization)처리 : 현재 사용자가 특정 대상(URL, 기능)을 사용(접근)할 권한이 있는지 검사 UI처리 : 권한이 없..
Spring(17) - 웹 어플리케이션 구조 웹 어플리케이션을 만들 때 가장 쉽고 많이 사용되는 구조가 바로 서비스-DAO구조입니다. 초보개발자들이 가장 이해하기가 쉽고 설계하기가 쉽기때문에 처음에는 이구조로 접근하는것이 좋습니다. 서비스-DAO구조의 각 구성 요소별 역할은 다음과 같습니다. 구성 요소 역할 모델 DB테이블과 관련된 클래스가 위치한다. 서비스 - DAO간 데이터를 주고받기 위한 객체로도 사용된다. DAO DB테이블에 대한 CRUD기능을 정의한 클래스이다. 데이터 입력, 수정, 조회 시 데이터타입을 모델로 사용한다. 서비스 컨트롤러를 통해서 전달받은 사용자의 요청을 정의한다. DB연산이 필요할 경우 DAO를 이용한다. 컨트롤러 사용자의 웹요청을 받아 서비스나 DAO로 전달하고, 결과를 뷰로 전달한다. 스프링 기반 어플리케이션에서는 컨..
Spring(16) - Mybatis연동 이전 글에 Hibernate ORM프레임워크에 대해서 좋은글을 써놓고 결국엔 Mybatis연동법을 포스팅하게되네요..(머쓱) 어쩔수 없이 우리나라에선 Mybatis를 많이 사용하니...;; Mybatis연동방법에 대해서 알아보겠습니다. 먼저 Mybatis를 스프링과 연동하는 방법은 다음과 같습니다. Mybatis-Spring 모듈 추가 SqlSessionFactoryBean을 이용해서 SqlSessionFactory 설정 트랜잭션 설정 Mybatis를 이용한 DAO구현 1. Mybatis-Spring 모듈 추가 1 2 3 4 5 6 7 8 9 10 org.mybatis mybatis-spring 1.2.2 org.mybatis mybatis 3.2.3 Colored by Color Scripter cs ..
Spring(15) - JPA, ORM, Hibernate, Mybatis JPA와 ORM 음지(?)에 묻혀서 그다지 주목받지 못하고있는 JPA, ORM, 하이버네이트라는 개념에대해서 알아보겠습니다. 처음 SPRING을 공부할 때 DB연동이라면 Mybatis프레임워크만을 사용하는 줄 알았고, 실제로 전문학원에서도 Mybatis만을 배웠습니다. 그 이후 가끔 공고에서 JPA, ORM을 사용하는 기업들이 조금씩 보여서 JPA, ORM에대해서 찾아보다가 이렇게 포스팅하게 됐습니다. JPA는 ORM을 사용하기위한 인터페이스를 모아놓은 것이며 JPA를 사용하기 위해서는 JPA를 구현한 하이버네이트같은 ORM 프레임워크를 사용해야 합니다. 결론적으로 Hibernate는 자바에서 사용하는 ORM프레임워크의 한종류입니다. 여기서 ORM이란 무엇일까요? ORM은 객체와 DB테이블이 매핑을 이루..
Spring(14) - 데이터베이스 연동(JDBC), 트랜잭션 스프링에서 데이터베이스와 연동하는 방법은 DataSource방식을 사용하는 것이다. 스프링이 지원하는 JPA/하이버네이트/Mybatis를 사용할 경우에 데이터베이스 연결을 위해 DataSource를 설정해주어야한다. 스프링은 다음과 같은 3가지 방식의 DataSource설정을 지원하고있다. 커넥션풀을 이용한 DataSource설정 JNDI를 이용한 DataSource설정 DriverManager를 이용한 DataSource설정(테스트 목적) 1. 커넥션풀을 이용한 DataSource설정 스프링은 커넥션풀 구현 클래스를 직접 제공해 주지않아서 maven의존을 통해 c3p0같은 커넥션 풀 라이브러리를 추가해 주어야한다. 의존설정 후 위와같이 스프링설정파일에 dataSource빈을 추가한다. 2. Driver..
Spring(13) - WebSocket HTTP5의 주요 API중 하나인 웹소켓은 클라이언트와 서버간 양방향 통신을 지원하기 위한 표준이다. 자바의 웹소켓 표준에 맞춰서 개발을 하다보면 DispatcherServlet이나 스프링의 빈 객체를 사용하기가 매우 번거롭다. 그래서 스프링은 자체적인 클래스를 제공해주고 있는데 그것이 바로 WebSocketHandler이다. 먼저 의존설정을 해준다. org.springframework spring-websocket 4.0.4.RELEASE 웹소켓 서버를 구현할 때는 AbstractWebSocketHandler나 TextWebSocketHandler를 상속받아서 구현한다. package my.com.ajax.controller; import org.springframework.web.socket.Clos..
Spring(12) - 파일업로드 파일업로드를 할경우 가장 기본적으로 뷰에있는 폼에 enctype="multipart/form-data"를 추가해주어야한다. 그 후 스프링 설정으로 multipartResolver를 등록해주어야한다. 이때 빈의 이름은 꼭 multipartResolver 여야만한다. DispatcherServlet은 multipartResovler라는 이름만을 사용하기 때문에 다른이름을 사용해서는 안된다. 이렇게 스프링에 설정을 하고 원하는 속성이 있으면 maxUploadSize, maxInMemorySize, defaultEncoding을 설정해 줄 수 있다. 설정이 끝난 후 컨트롤러에서 요청된 파일을 사용하려면 MultipartFile 인터페이스를 사용하면 된다. MultipartFile인터페이스가 제공하는 메서드를 사..
Spring(11) - XML/JSON, @RequestBody, @ResponseBody XML/JSON 서비스나 데이터를 HTTP 기반 API형태로 제공하는 곳이 많다. 예를들어 트위터, 네이버가 각자 사이트에서 사용하는 기능을 제공해 주는방식으로 HTTP 기반 API형태로 제공해준다. 이들 API특징 중 하나는 응답으로 XML/JSON형식을 사용한다는 것이다. 스프링 MVC에서는 응답생성을 위한 뷰클래스를 만든다던지, HttpServlerResponse를 이용해서 원하는 응답을 생성할 수 있지만, 좀더 쉬운 방법을 제공해주고 있다. 그것이 바로 @RequestBody, @ResponseBody 이다. @RequestBody @RequestBody는 요청몸체를 자바객체로 변환시킬 때 사용한다. 예를들어 요청 파라미터 문자열을 자바 String객체로 변환 시키거나 JSON형식의 몸체를 자바객..