목록Spring (17)
우당탕탕 개발자 되기
FieldError, ObjectError 의 생성자 : errorCode, arguments를 제공하는데 오류 발생시 오류 코드로 메시지를 찾기위해 사용 error.properties 파일 생성 - 오류 메시지를 구분하기 쉽게 파일로 관리 -> 스프링 부트에 파일을 인식할 수 있도록 설정 필요 application.properties 에 추가 spring.messages.basename=messages,errors V1 메시지 처리 전 bindingResult.addError(new FieldError("item", "itemName", item.getItemName(), false, null, null, "상품 이름은 필수입니다.")); 메시지 처리 후 bindingResult.addError(new..
상품 정보 입력 검증 검증 직접 처리 - 검증 오류 보관 더보기 Map errors = new HashMap(); //오류 발생시 어떤 검증에서 오류가 발생했는지 정보를 담아둔다. 어떤 필드에서 오류가 발생 했는지 구분하기 위해 오류가 발생한 필드명을 key 로 사용 -> 검증 오류 발생 시 입력 폼을 다시 보여준다. -> 검증 오류들을 고객에게 친절하게 안내해서 다시 입력할수 있게 한다. -> 검증 오류가 발생해도 고객이 입력한 데이터가 유지 BindingResultV1 BindingResult bindingResult 파라미터를 추가 해준다 FieldError 생성자 요약 public FieldError(String objectName,String field, String defaultMessage)..
입력 폼 처리 - th:object : 커맨드 객체를 지정 - *{...} : 선택 변수 식, th:object 에서 선택한 객체에 접근 - th:field : HTML 태그의 id,name,value 속성을 자동으로 처리해준다. HTML 의 id 가 타임리프에 동적으로 만들어지기 때문에 으로 label 의 대상이 되는 id 값을 임의의 지정하는 것은 곤란하지만, 타임리프에서는 ids.prev(...), ids.next(...) 을 제공해서 동적 생성 id 값을 사용할 수 있다. 메세지 message.properties : 메세지 관리용 파일을 만들어 하드코딩을 피할 수 있다. LocaleResolver 변경 Locale 선택 방식을 변경하려면 LocaleResolver 의 구현체를 변경해서 쿠키나 세션..
웹 페이지 개발 시 공통 영역이 많이 있기 때문에 그러한 부분을 편리하게 해결하기 위해 템플릿 조각과 레이아웃 기능을 제공 th:fragment : 태그가 다른곳에 포함되는 코드조각으로 이해 부분 포함 insert -> 사용 시 현재 태그 내부에 추가된다. 부분 포함 replace -> 사용 시 현재 태그를 대체한다 파라미터 사용 -> 이런 방법으로 파라미터를 전달해 동적으로 조각을 렌더링 할 수 있다. 템플릿 레이아웃 : 공통으로 사용하는 css,javascript 같은 정보들을 한 곳에 모아두고 각 페이지마다 필요한 정보를 더추가해서 사용할수 있다. 전체에 적용할수도 있다. 출처) https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-2/d..
타임리프 특징 - 서버 사이드 HTML 렌더링 - 네츄럴 템플릿 - 스프링 통합 지원 텍스트 - HTML 태그의 속성이 아닌 HTML 콘텐츠 영역 안에서 직접 데이터를 출력하고 싶으면 [[...]] 을 사용하면 된다. 변수 -> ${...} SpringEL 다양한 표현식 사용 Object user.username : user의 username을 프로퍼티 접근 user.getUsername() user['username'] : 위와 같음 user.getUsername() user.getUsername() : user의 getUsername() 을 직접 호출 List users[0].username : List에서 첫 번째 회원을 찾고 username 프로퍼티 접근 list.get(0).getUsername..
Thread(쓰레드) - 애플리케이션 코드를 하나하나 순차적으로 실행하는 것이다. - 쓰레드가 존재하지 않다면 애플리케이션 실행은 불가능하다. - 쓰레드는 한 번에 하나의 코드 라인만 수행한다. - 동시 처리가할 일이 생기면 쓰레드를 추가로 생성 단일 요청 다중 요청 요청 마다 쓰레드 생성 장점 - 동시 요청을 처리 할 수 있다. - 리소스가 허용될 때까지 처리 가능 - 하나의 쓰레드가 지연 되어도, 나머지 쓰레드는 정상 동작한다. 단점 - 쓰레드는 생성 비용은 매우 비싸다(요청마다 쓰레드를 생성하면, 응답 속도가 늦어진다) - 쓰레드는 ContextSwitching 이 일어난다. - 쓰레드 생성에 제한이 없다 -> 한 번에 요청이 몰릴 경우 서버가 죽을 수도 있다. 쓰레드 풀 (요청 마다 쓰레드 생성 ..
Web Server(웹 서버) - HTTP 기반으로 동작 - 정적 리소스 제공, 기타 부가기능 - 정적(파일) HTML, CSS, JS , 이미지, 영상 WAS-Web Application Server(웹 어플리케이션 서버) - HTTP 기반으로 동작 - 웹 서버 기능 포함+(정적 리소스 제공 기능) - 프로그램 코드를 실행해서 애플리케이션 로직 수행 Web Server vs WAS - 웹서버는 정적 리소스, WAS는 애플리케이션 로직 - 둘의 경계는 모호하다. - 자바는 서블릿 컨테이너 기능을 제공하면 WAS - WAS는 애플리케이션 코드를 실행하는데 더 특화 웹 시스템구성 WAS,DB로 만 구성 했을 때 - WAS 는 정적 리소스, 애플리케이션 로직 모두 제공 가능 - WAS가 너무 많은 역할을 담당..
첨부파일을 서버에 전송하는 방식 태그를 이용하는 방식 : 브라우저의 제한이 없어야 하는 경우에 사용 - 일반적으로 페이지 이동과 동시에 첨부파일을 업로드하는 방식 - 을 이용해서 화면의 이동 없이 첨부파일을 처리하는 방식 Ajax를 이용하는 방식 : 첨부파일을 별도로 처리하는 방식 - 을 이용하고 Ajax로 처리하는 방식 - HTML5의 Drag And Drop 기능이나 jQuery 라이브러리를 이용해서 처리하는 방식 서버에서 첨부파일을 처리하는 방식 - cos.jar : 2002년도 이후에 개발이 종료되었으므로, 더 이상 사용하는 것을 권장하지 않는다. - commons-fileupload : 가장 일반적으로 많이 활용되고, 서블릿 스펙 3.0 이전에도 사용 가능 - 서블릿 3.0 이상 : 3.0 이상..