
6장. 파일 업로드 처리
2022. 1. 22. 13:22
개발 서적/코드로 배우는 스프링 웹 프로젝트
6장. 파일 업로드 처리 ch21. 파일 업로드 방식 파일 업로드 방식 태그를 이용하는 방식 브라우저의 제한이 없어야 하는 경우에 사용 일반적으로 페이지 이동과 동시에 첨부파일을 업로드하는 방식 을 이용해서 화면의 이동 없이 첨부파일을 처리하는 방식 Ajax를 이용한 방식 첨부파일을 별도로 처리하는 방식 을 이용하고 Ajax로 처리하는 방식 HTML5의 Drag And Drop 기능이나 jQuery 라이브러리를 이용해서 처리하는 방식 방식의 파일 업로드 uploadForm.jsp Submit UploadController.java package org.zerock.controller; import java.io.File; import org.springframework.stereotype.Controll..

5장. AOP와 트랜잭션
2022. 1. 22. 13:20
개발 서적/코드로 배우는 스프링 웹 프로젝트
5장. AOP와 트랜잭션 ch18. AOP라는 패러다임 AOP란? 관점 지향 프로그래밍 관점이라는 용어는 개발자들에게 관심사(concern)라는 말로 통용됨 즉, 코드를 작성하면서 염두(관심)에 두는 일들 파라미터가 올바르게 들어왔을까? 이 작업을 하는 사용자가 적절한 권한을 가진 사용자인가? 이 작업에서 발생할 수 있는 모든 예외는 어떻게 처리해야 하는가? 등등... 핵심 로직은 아니지만, 코드를 온전하게 만들기 위해서 필요한 고민들. AOP는 이러한 핵심 비즈니스 로직이 아닌 관심사들을 별도의 코드로 작성하여 컴파일 혹은 실행시점에만 결합시킬 수 있도록 괌심사를 분리 하는 것. 이로 인해 개발자는 핵심 로직에 조금 더 집중할 수 있음 기존의 코드를 수정하지 않고, 원하는 기능들과 결합할 수 있는 패러..

4장. REST 방식과 Ajax를 이용하는 댓글 처리
2022. 1. 22. 13:17
개발 서적/코드로 배우는 스프링 웹 프로젝트
4장. REST 방식과 Ajax를 이용하는 댓글 처리 ch16. REST 방식으로 전환 REST 데이터 처리를 위한 어노테이션 어노테이션 기능 @RestController Controller가 REST 방식을 처리하기 위한 것임을 명시 함 @ResponseBody 일반적인 JSP와 같은 뷰로 전달되는 게 아니라 데이터 자체를 전달하기 위한 용도 @PathVariable URL 경로에 있는 값을 파라미터로 추출하려고 할때 사용 @CrossOrigin Ajax의 크로스 도메인 문제를 해결해주는 어노테이션 @RequestBody JSON 데이터를 원하는 타입으로 바인딩 처리 @RestController JSP와 달리 순수한 데이터를 반환하는 형태이므로 다양한 포맷의 데이터 전송 가능 주로 많이 사용 형태 : ..

3장. 기본적인 웹 게시물 관리물 관리
2022. 1. 22. 13:15
개발 서적/코드로 배우는 스프링 웹 프로젝트
3장. 기본적인 웹 게시물 관리물 관리 ch08. 영속/비즈니스 계층의 CRUD 구현 VO 클래스 정의 lombok 사용 package org.zerock.controller; import java.util.Date; import lombok.Data; @Data public class BoardVO { private Long bno; private String title; private String content; private String writer; private Date regdate; private Date updatedate; } org.zerock.mapper 패키지를 스캔하도록 설정 root-context.xml BoardMapper.java package org.zerock.mapper..

2장. 스프링 MVC 설정
2022. 1. 22. 13:10
개발 서적/코드로 배우는 스프링 웹 프로젝트
2장. 스프링 MVC 설정 ch05. 스프링 MVC의 기본 구조 web.xml Tomcat 구동과 관련된 설정 root-context.xml, servlet-context.xml 스프링과 관련된 설정 web.xml 설정 contextConfigLocation /WEB-INF/spring/root-context.xml org.springframework.web.context.ContextLoaderListener appServlet org.springframework.web.servlet.DispatcherServlet contextConfigLocation /WEB-INF/spring/appServlet/servlet-context.xml 1 appServlet / root-context.xml의 경로 ..

1장. 스프링 개발 환경 구축
2022. 1. 21. 18:58
개발 서적/코드로 배우는 스프링 웹 프로젝트
1장. 스프링 개발 환경 구축 ch01. 개발을 위한 준비 pom.xml 설정 pom.xml 에서 스프링 프레임워크 버전은 3.1.1로 생성되므로, 5.0.7 버젼으로 변경 java 1.8 버젼으로 변경 maven-compiler-plugin 3.5.1 버젼으로 변경 1.8 5.0.7.RELEASE 1.6.10 1.6.6 org.apache.maven.plugins maven-compiler-plugin 3.5.1 1.8 1.8 -Xlint:all true true lombok 설치 getter/setter, toString(), 생성자 등 자동 생성 ch02. 스프링의 특징과 의존성 주입 스프링의 주요 특징 POJO(Plain Old Java Object) 기반의 구성 별도의 API를 사용하지 않는 P..
String to Double Array (String -> Double[]) 변경
2021. 5. 26. 13:19
개발 지식/Memo
String str = "1.1,2.2,3.3,4.4,5.5,6.6,7.7"; double[] doubleArray = Arrays.stream(str.split(",")).mapToDouble(Double::parseDouble).toArray(); Double[] DoubleArray = Arrays.stream(str.split(",")).map(Double::valueOf).toArray(Double[]::new);
String to Int Array (String -> int[]) 변경
2021. 5. 26. 13:18
개발 지식/Memo
String str = "1,2,3,4,5,6,7"; int[] intArray = Arrays.stream(str.split(",")).mapToInt(Integer::parseInt).toArray(); Integer[] integerArray = Arrays.stream(str.split(",")).map(Integer::valueOf).toArray(Integer[]::new)

HTTP 메시지 구조
2021. 1. 30. 20:18
개발 지식/WEB 기본 지식
HTTP 메시지는 요청 메시지와 응답 메시지의 내용이 조금 다르다. 우선 HTTP 메시지의 구성을 살펴보자 HTTP-message = start-line *( header-field CRLF ) CRLF [ message-body ] CRLF는 엔터를 의미 tools.ietf.org/html/rfc7230#section-3 HTTP 1.1의 공식 스펙을 확인해보면 위와 같은 형식으로 이루어진다고 기술되어 있다. HTTP 메시지 구조는 크게 4가지로 나눌 수 있다 - start-line : 시작 라인 - *( header-field CRLF ) : 헤더 - CRLF : 공백 라인 - [ message-body ] : 내용 start-line (요청 메시지) 요청 메시지에서 start-line = reque..
Stateful, Stateless (상태유지, 무상태)
2021. 1. 30. 19:29
개발 지식/WEB 기본 지식
Stateful (상태유지) 서버에서 클라이언트의 상태를 유지(기억)하고 응답 - 항상 같은 서버를 통해서 응답받아야 한다. - 만약 서버에 장애가 생겨서 다른 서버를 통해 작업을 수행하려고 한다면, 다시 처음부터 수행해야한다. (새로운 서버에는 유지하고있는 값이 없기 때문에) 로그인 등의 작업에 많이 사용 Stateless (무상태) 서버에서 클라이언트의 상태를 유지(기억)하지 않음 - 클라이언트에서 요청할 때 모든정보를 담아서 서버로 요청한다. - 모든정보를 매번 다시 받기때문에 중간에 서버가 장애가 나서 다른 서버를 통해 작업을 수행해도 모두 처리할 수 있다. 수평확장에 유리 (즉, 필요에 따라 서버 무한 증설이 가능) 실무에서의 한계점 설명처럼 모든곳에서 Stateless (무상태)를 사용하도록 ..