자바웹개발 워크북 8

자바웹개발 워크북(8)

8-1 스프링 시큐리티 적용하기 스프링 시큐리티는 별도의 프레임워크로 시작되었지만 스프링으로 프로젝트가 통합되었습니다. 약간의 코드와 설정만으로 로그인 처리와 자동 로그인, 로그인 후 페이지 이동 등을 처리할 수 있어 개발의 생산성을 높일 수 있다는 장점이 있습니다. 스프링 시큐리티 관련 설정 추가application.properties를 이용하는 설정보다 코드를 이용해서 설정을 조정하는 경우가 더 많아 별도의 클래스를 이용해서 설정합니다.@Log4j2@Configuration@RequiredArgsConstructorpublic class CustomSecurityConfig {}설정 이후 프로젝트를 실행하면 알 수 없는 password가 생성되어 출력됩니다.스프링 시큐리티는 별도의 설정이 없을 땐 모..

자바웹개발 워크북(7)

7-1 첨부파일과 @OneToMany업로드 처리를 위한 DTO파일 업로드는 MulipartFile이라는 API를 이용해서 처리합니다.@Datapublic class UploadFileDTO { private List files;} @RestController@Log4j2public class UpDownController { @ApiOperation(value="Upload POST", notes="POST 방식으로 파일 등록") @PostMapping(value="/upload", consumes = MediaType.MULTIPART_FROM_DATA_VALUE) public String upload(UploadFileDTO uploadFileDTO) { log.in..

자바웹개발 워크북(6)

6-1  REST 방식의 서비스 Ajax와 REST 방식의 이해Ajax(Asynchronous JavaScript And XML) 방식은 브라우저에서 서버를 호출하지만 모든 작업이 브라우저 내부에서 이루어지기 때문에 브라우저 화면의 변화 없이 서버와 통신할 수 있습니다.Ajax가 가져온 변화는 모바일에서도 Ajax방식으로 데이터를 교환할 수 있습니다. 모바일에서도 서버의 데이터가 필요한데 화면과 관련된 부분은 필요하지 않기 때문에 순수한 데이터만 전송하는 방식이라면 데이터를 재사용할 수 있습니다. JSON 문자열문자열은 어떠한 프로그래밍 언어나 기술에 종속되지 않는다는 장점이 있습니다. 문자열을 이용하면 데이터를 주고받는 것에 신경 써야 하는 일은 없지만 문자열로 복잡한 구조의 데이터를 표현하는 문제가 ..

자바웹개발 워크북(5)

5.1 스프링 부트 소개 스프링 부트는 스프링에서 파생된 여러 서브 프로젝트에서 시작해서 메인 프로젝트가 되어버린 케이스입니다. 스프링 부트의 중요한 특징으로 Auto Configuration(자동 설정)을 내세울 수 있습니다. 예를 들어 데이터베이스와 관련된 모듈을 추가하면 자동으로 데이터베이스 관련 설정을 찾아서 실행합니다. 다른 특징으로는 내장 톰캣과 단독 실행 가능한 도구라는 것입니다. 별도의 서버 설정 없이도 개발이 가능하고 실행이 가능합니다. 서블릿에서 스프링으로 넘어오는 과정은 기존의 코드를 재활용할 수 없기 때문에 러닝커브가 상당히 큰 편이었습니다. 반면 스프링에서 스프링 부트로 넘어오는 일은 기존 코드나 개념이 그대로 유지되기 때문에 뭔가 새로운 개념이 필요하지는 않습니다.필요한 라이브러..

자바웹개발 워크북(4)

4-1 의존성 주입과 스프링스프링 프레임워크가 가장 많이 사용되는 곳은 웹 개발 프로젝트이지만 스프링 프레임워크의 출발점은 객체지향이나 설계와 관련된 내용들이 주를 이루고 있습니다. 스프링의 시작 스프링 프레임워크는 원래 웹이라는 제한적인 용도로만 쓰이는 것이 아니라 객체지향의 의존성 주입(dependency injection) 기업을 적용할 수 있는 객체지향 프레임워크였습니다.2000년 당시 자바 진영에서 JavaEE의 여러 가지 스펙을 정의하고 비대해지는 동안 스프링 프레임워크는 반대로 경량 프레임워크를 목표로 만들어졌습니다.스프링 프레임워크는 가장 중요한 '코어' 역할을 하는 라이브러리와 여러 개의 추가적인 라이브러리를 결합하는 형태로 프로젝트를 구성하는데 가장 대표적으로 웹 MVC 구현을 쉽게 할..

자바웹개발 워크북(3)

3-1 세션과 필터 웹은 기본적으로 과거의 상태를 유지하지 않는 무상태(stateless)연결입니다. 요청과 응답을 하나의 단위로 처리하면서 기존 사용자에 대한 정보는 기억하지 않습니다. 무상태라는 특징으로 인해 기존의 방문자를 기억하기 위해서는 특별한 메커니즘을 사용하게 되는데 세션(HttpSession)이나 쿠키(Cookie)라는 존재를 이용하기도 하고 특정한 문자(토큰)을 이용하기도 합니다. 세션 트랙킹(session tracking): 로그인 유지를 위한 모든 기능 무상태에서 과거를 기억하는 법 HTTP는 기본적으로 무상태이므로 과거의 요청 기록을 알 수 없습니다. HTTP가 무상태를 선택한 가장 큰 이유는 역시 적은 자원으로 여러 요청을 처리할 수 있다는 장점이 있기 때문이지만 덕분에 과거의 방..

자바웹개발 워크북(2)

2-1 JDBC 프로그래밍 준비 데이터베이스를 생성하기 위해 새로운 데이터베이스를 생성합니다. 데이터베이스의 이름을 설정하고 생성합니다.[도구] - [사용자 관리자] 메뉴로 이동하면 새로운 사용자를 추가할 수 있습니다. 추가 버튼을 눌러 이름과 암호를 설정합니다. 실습을 위해 호스트 설정은 %(모든곳에서 접근)으로 설정합니다.객체 추가 버튼을 클릭하여 사용할 수 있는 대상을 지정해줍니다. 생성된 계정 확인을 위해 [파일] - [세션 관리자] 메뉴를 통해서 점검합니다. 사용자와 암호, 데이터베이스를 설정하고 문제가 없는지 확인합니다.   select now();데이터베이스 연동 설정이 완료되면 SQL을 실행할 수 있는 창이 하나 생성됩니다. 현재 시간을 가져오는 SQL을 작성해 테스트해봅니다. (1) 테스..

자바웹개발 워크북(1)

1.1 자바 웹 개발환경 만들기 대부분의 웹 프로젝트는 아래 사진 구조처럼 이루어집니다.브라우저: 서버에서 전송한 결과를 화면에 보여주고 사용자의 화면 조작을 이용해 서버에 원하는 데이터를 보내고 받는 프로그램관련 기술:HTML/CSS/자바스크립트 웹 서버 혹은 WAS이미지와 같은 고정된 데이터를 제공하거나 동적으로 매번 새로운 데이터를 만들어낼 수 있는 WAS관련 기술: 서블릿/JSP/각종 프레임워크와 언어들 데이터베이스영구적으로 데이터를 보관하고 운영하기 위한 프로그램으로 기본적으로 관계형 패러다임을 이영한 관계형 데이터베이스를 사용관련 기술: SQL/데이터베이스 설계와 구현 어노테이션(Annotation)은 주로 코드상에 추가적인 정보를 남겨두거나 특정 코드에 대한 추가적인 처리나 설정을 위해서 사..