- 자바스크립트의 확장 문법
- 번들링되는 과정에서 자바스크립트 형태의 코드로 변환된다
- jsx
Continue reading
프로젝트 생성 및 실행
- node.js, npm, yarn 설치
- node.js는 당장은 필요없지만, 설치시 npm이 함께 설치된다
- npm은 패키지매니저 도구
- node.js 설치 후, node.js의 cmd창 실행
- npm 설치 확인
- yarn 설치 (패키지 관리자 도구)
- 설치 명령어 : npm install –global yarn
- 설치 확인 : yarn –version
- 코드에디터 설치 (Visual Studio Code)
- 설치 후 좌측 확장팩 설치 메뉴 이용
- ESLint 설치
- Reactjs code Snippets 설치
- Prettier-code formatter 설치
- Koran Language Pack for Visual Studio Code 설치
- f1 누른 후 Configure Display Language 입력
- ko로 설정 후 재시작
- 프로젝트 생성 및 실행
- node.js cmd 혹은 vscode의 터미널창
- 프로젝트를 만들 디렉토리로 이동
- 프로젝트 생성 명령어 입력
- yarn create react-app 프로젝트명
- 프로젝트 생성 후 해당 디렉토리에서 실행명령어 입력
Continue reading
개요
- 자바스크립트의 발전
- 자바스크립트 만으로 대규모 어플리케이션을 만들 수 있게 됨
- 구조관리의 발전 필요
- 이를 해결하기 위해 수많은 프레임워크 출시
- 해당 프레임워크는 주로 MVC, MVVM 아키텍쳐 사용
- 보통 사용자가 어떤 작업을 하면, 변경사항을 뷰에 반영
- 반영하는 과정에서 뷰를 변형(mutate)
- 페이스북 개발팀은 뷰를 변형하는 것이 아닌, 새로 렌더링하는 방식 고안
Continue reading
- ARIA 블록암호 알고리즘 기반 암복호화 설정 간소화
- 내부적으로 필요한 설정 보유, XML Schema를 통해 필요 설정 추가 가능
- globals.properties 설정파일의 중요정보를 암복호화 처리 가능
- properties 파일에 암호화 데이터 설정 후 #(…} 표현식으로 복호화 가능
- #{egovEnvCryptoService.decrypt(‘…’)}
Continue reading
- 세션 방식으로 접근제어 권한관리를 설정
- Spring Interceptor 기반으로 인가처리
- globals.properties 파일로 설정
Continue reading
용어
- 접근주체 / Principal : 보호된 리소스에 접근하는 대상
- 인증 / Authentication : 접근주체에 대해 누구인지, 어플리케이션의 작업을 수행해도 되는 주체인지 확인하는 과정
- 인가 / Authorization : 해당 리소스에 대해 접근 가능한 권한을 가지고 있는지 확인하는 과정
- 권한 / Authority :
- 어떤 리소스에 대한 접근 제한
- 모든 리소스는 접근 제어 권한이 걸려있다
- 인가과정에서 해당 리소스에 대한 제한된 최소한의 권한을 가졌는지 확인
Continue reading
적용기준
아키텍쳐 규칙
- Annotation 기반 Spring MVC 준수
- @Controller 및 @RequestMappin을 통한 URL mapping 활용
- view와 model 부분을 controller를 통해 분리
- Annotation 기반 layered architecture 준수
- 화면처리, 업무처리, 데이터처리 부분에 대하여 각각 @Controller, @Service, @Repository 활용
- 업무처리를 담당하는 서비스클래스는 EgovAbstractServiceImpl을 확장하고 업무에 대한 특정 인터페이스 구현
- 데이터 처리를 담당하는 DAO 클래스(@Repository)는 EgovAbstractDAO 또는 EgovAbstractMapper를 상속
- EgovAbstractDAO : iBatis
- EgovAbstractMapper : MyBatis
- Hibermate/JPA 적용시에는 예외, 데이터처리 규칙 참조
Continue reading
```java package com.metaus.configuration;
Continue reading
```java package com.it.study;
Continue reading
jsp 사용 방법
- 스프링 웹 프로젝트의 기본 dependency
Continue reading
- 스프링 프레임워크의 복잡한 설정을 간편하게 할 수 있는 서브프로젝트
- 웹컨테이너를 내장하고 있어 최소한의 설정으로 쉽게 웹 어플리케이션 제작 가능
- 특징
- templates 폴더 자동 생성
- 스프링
- 기존의 스프링은 HTML내에 자바코드를 삽입하는 방식의 JSP 사용
- 디렉터리의 위치도 웹 디렉토리에 해당하는 src/main/webapp 안에 존재
- 위 방식은 war파일로 패키지화했을 경우에만 정적리소스를 정상적으로 사용 가능
- 스프링부트
- src/main/resources 디렉터리 내 화면과 관련된 파일 관리
- static 폴더 자동 생성
- css, fonts, images, plugin, scripts 등의 정적 리소스 파일이 위치
- application.properties
- 해당 파일은 웹 어플리케이션 실행 시 자동으로 로딩
- 각각으로 분리되어있는 xml 또는 자바 기반의 설정을 해당 파일에서 key-value 형직으로 지정 처리 가능
Continue reading
- 기존 스프링에서는 DAO 클래스에 @Repository 선언
- 해당 클래스가 DB와 통신하는 클래스임을 명시
- 마이바티스의 매퍼 어노테이션 지정 시, XML mapper에서 메서드의 이름과 일치하는 SQL문을 찾아 실행
- mapper 영역은 DB와 통신, SQL쿼리를 호출하는 것이 전부이며 로직은 필요하지 않다
Continue reading
- 마이바티스의 데이터설정 일부를 생략, 스프링에 설정 추가
Continue reading
- 동적 SQL을 만들기 위해 마이바티스가 제공하는 XML 엘리먼트
- if
- choose(when, otherwise)
- trim(where, set)
- foreach
- OGNL 표현식 사용
- jsp의 JSTL표현식이 OGNL
- Object Graph Navigation Language
- 프로퍼티의 값을 가져오거나 설정하기 위한 언어
<c:if test=”${obj.val!=null}”>
- 기본 문법
- coment 객체의 userid 필드 : comment.userid
- 현재 객체의 hashcode()메서드 호출 : hashCode()
- 댓글 배열(comments)의 첫번째 인덱스 값 : comments[0]
Continue reading
- 매퍼의 구성 엘리먼트
- resultMap
- sql
- insert,update,delete
- selectKey
- select
Continue reading
예시파일
Continue reading
마이바티스 설정
- mybatis-config.xml
- 설정파일은 getConnection 메서드의 데이터베이스 연결정보를 대체한다
- 트랜잭션 관리자
- JDBC 코드를 대체하기 때문에 type은 JDBC로 지정
- 데이터베이스 설정
- 매퍼 정보 설정
- sql을 선언해둔 xml이나 인터페이스 형태의 매퍼 위치를 지정
- xml의 위치는 클래스패스를 기준으로 지정
Continue reading
- JDBC를 대체하는 퍼시스턴스 프레임워크
- 내부적으로 JDBC API를 사용
- 개발자가 직접 JDBC를 사용할 때의 중복작업을 대부분 자동화
- SQL을 별도의 XML이나 어노테이션으로 정의
- 특징
- JDBC를 작성할 때의 try/catch 구문 사용 불필요
- 객체 프로퍼티를 Prepared 구문의 파라미터로 자동 매핑
- 조회결과를 객체로 자동 매핑
- 트랜잭션 관리
- 데이터 매퍼
- 객체와 DB, 매퍼 자체를 독립적으로 유지하면서, 객체와 DB간 데이터 이동
- VO에 해당하는 부분이 SQL 구문에 매핑
- SQL 실행결과도 VO로 매핑
- 일일이 ResultSet으로 꺼낼 필요가 없다
- 예
Continue reading
스프링의 주요 구성요소
- DispatcherServlet
- 클라이언트의 요청을 전달
- 컨트롤러에게 클라이언트의 요청을 전달
- 컨트롤러가 리턴한 결과값을 view에게 전달
- HandlerMapping
- 클라이언트의 요청 URL을 어떤 컨트롤러가 처리할지 결정
- Controller
- 클라이언트의 요청을 처리
- 결과를 DispatcherServlet에 전달
- ModelAndView
- 컨트롤러가 처리한 결과 정보 및 뷰 선택에 필요한 정보를 담는다
- ViewResolver
- View
Continue reading
- 과도한 xml 설정으로 인한 불편함 해결 필요
Continue reading