분류 전체보기219 [개요] 특성 / 기존 방식과이 차이점 React 톺아보기 리액트란?페이스북에서 개발하고 관리하는 UI 라이브러리>> UI 기능만 제공하므로 전역상태관리, 라우팅, 빌드시스템 등은 개발자가 직접 구축해야한다.>> Angular 등의 프레임워크에 대조적, 진입장벽 높음>> 이를 보완하기 위해 create-react-app 도구 제공 (관련포스팅 : 211번 포스팅)가상돔(Virtual DOM)을 사용하여 변화된 상탯값 기반 UI 업데이트>> 리액트 등의 프론트 라이브러리/프레임워크를 사용하지 않으면 직접 업데이트 해주어야 해서 복잡도가 높다>> 리액트는 가상돔을 통해 UI를 빠르게 업데이트 함 * 가상돔 : 이전 UI 상태를 메모리에 유지해서 변경될 UI의 최소 집합을 계산하는 기술함수형 프로그래밍을 적극적으로 사용한다- 선언형 프로그래밍.. 2023. 5. 16. [shortcut key] 개발툴, 편집창 단축키 개발툴 단축키 개발환경에서 쓰이는 단축키들 이클립스/STS ctrl+H - 폴더 전체검색 - 현재 파일 뿐 아니라 프로젝트 폴더 전체에서 서치해준다. DBeaver ctrl + shift + f - 쿼리를 보기 좋게 정렬해준다 기타 ctrl + shift + v - 서식 없이 텍스트만 붙여넣기 win + shift + s - 클립보드로 화면캡처하기 - ctrl + c로 붙여넣기 할 수 있다 win + v - 클립보드 켜기 - 여러개를 캡처한 후 한번에 붙여넣고 싶을 때 클립보드를 킨 다. 2023. 5. 11. [개요] 시작하기 / nvm Node.js다양한 프론트앤드 프레임워크에서 필수적으로 필요한프로그램인 Node.js에 대해 알아본다Node.js란?JS를 서버에서도 사용할 수 있도록 만들어진 프로그램(환경)- 언어가 아닌 프로그램(환경)이다- 이전까지는 프론트와 백의 언어가 달랐다면 Node.js를 통해 통일이 가능해졌다.V8이라는 크롬의 자바스크립트 엔진 위에서 동작하는 자바스크립트 런타임** 자바스크립트 런타임이란?- 자바스크립트 코드를 실행할 수 있는 환경- 일반적으로 자바스크립트 코드는 웹 브라우저에서 실행되지만, 자바스크립트 런타임 환경에서도 실행될 수 있다.웹서버와 같이 확장성 있는 네트워크 프로그램을 제작할 수 있다.- 웹 서버, API 서버, 채팅 서버, 블록체인 노드 등 nvm이란?Node Version Manage.. 2023. 5. 10. 보안 프레임워크 : 스프링 시큐리티 스프링 시큐리티 보안 관련 기능을 제공하는 프레임워크인 스프링 시큐리티에 대해 톺아본다. 스프링 시큐리티란? 보안을 담당하는 스프링 하위 프레임워크 인증과 권한에 대한 부분을 Filter 흐름에 따라 처리하고 있다. * Filter는 Dispatcher Servlet으로 가기 전에 적용 되므로 가장 먼저 요청을 받는다. 145번 포스팅에서 암호화 기능을 사용하기 위해 잠시 살펴봤었다 인증과 권한 스프링 시큐리티에서 보안을 구성하는 두가지 핵심 영역이다. 인증(Authentication) - 보호된 리소스에 접근하는 유저에게 접근 권한이 있는지 확인하는 일련의 과정 == 로그인 * 접근주체(Principal) : 보호된 리소스에 접근하는 대상(유저) * 비밀번호(Credential) : 접근주체의 비밀번호.. 2023. 5. 3. [JWT] 토큰을 통한 로그인 인증 관리 JWT 톺아보기 API를 사용하는 웹서비스를 개발한다면, 토큰을 사용해여 인증작업을 처리하는 것이 가장 좋은 방법이다. 토큰 기반 인증시스템에 주로 활용하는 JWT(Json Web Token)에 대해서 알아보자. 사용자 인증관리 기존에 사용하던 세션 방식과 새롭게 익힐 토큰 방식을 비교해본다. 세션(서버)기반 인증 유저가 로그인을 했을 때 서버측에서 로그인중이라는 인증정보를 기억하는 방식 토큰방식보다 보안에 강하다 사용자들의 정보를 기억하기 위해서 세션을 유지해야함 >> 단점1. 로그인 중인 유저의 수가 많아지면 성능에 무리가 간다. - 세션을 유지하기 위해 메모리를 활용시 램이 과부하되고, 이를 피하기 위해 데이터베이스에 저장하는 경우도 있지만 이 역시 DB성능에 무리가 간다 >> 단점2. 확장성이 떨.. 2023. 5. 2. [함수] 시간연산관련, 시리즈 생성 시간연산관련 함수 interval 타입을 비롯하여 시간 및 날짜를 다루는 타입들을 활용하는 방법을 알아본다. 연산규칙 interval과 다른타입 간의 연산 - interval은 date, timestamp 타입과 (+)와 (-)같은 연산자를 사용할 수 있다. - date타입과 (+), (-) 연산시 timestamp로 자동 형변환된다. date/timestamp 간의 연산 - 날짜간 덧셈은 지원되지 않는다. - 서로 다른 date를 (-)연산하면 차이나는 일수가 integer로 반된다. - 서로 다른 timestamp를 (-)연산하면 interval이 반환된다. 연산 함수 now() - 현재시간을 반환 - current_timestamp류는 SQL 표준에서 지정한 함수로 세션의 타임존을 기반으로 반환 -.. 2023. 5. 2. [함수] 타입변환 관련 타입 변환 관련 함수 타입캐스트(형변환) PostgreSQL에서는 다음과 같은 데이터 타입간의 캐스트가 가능하다 문자열(TEXT) ↔ 숫자(INTEGER, BIGINT, NUMERIC 등) 문자열(TEXT) ↔ 날짜/시간(DATE, TIMESTAMP 등) 문자열(TEXT) ↔ 불리언(BOOLEAN) 문자열(TEXT) ↔ 이진 데이터(BYTEA) 방법1) SQL 표준 : CAST(value as type) 방법2) PostgreSQL 제공 연산자 : value::type - 방법1과 완전히 동일한 기능 - 활용예) '{apple,cherry apple, avocado}'::text[] '2013-02-12 15:20:31'::timestamp 방법3) 함수 사용 : float2(value), double(.. 2023. 5. 2. [JDBC] 자바 연결, Connection Pool 자바와 DB연결 자바등과 같은 어플리케이션에서 데이터베이스를 사용하려면 DB Connection이 필요하다. DB Connection DB를 사용하기 위해 DB와 애플리케이션 간 통신을 할 수 있는 수단 DB Connection은 Database Driver와 Database 연결 정보를 담은 URL이 필요함 ex: 오라클DB의 thin 드라이버를 사용하기 위한 파라미터 Driver - oracle.jdbc.driver.OracleDriver URL - jdbc:oracle:thin:@IP주소:1521:ORA7 Java의 DB Connection은 JDBC를 주로 이용하는데, URL 타입을 사용함 구조 - 2Tier : 클라이언트로서의 자바프로그램(JSP)이 직접 DB서버로 접근하여 데이터에 엑세스하는 .. 2023. 4. 28. Mapper 인터페이스를 사용한 프로젝트 Mapper 인터페이스 마이바티스 3.0에서부터 제공하는 기능인 @Mapper를 사용하면 프로젝트 레이어가 간단해질 수 있다. MVC 레이어에 대해 알아보고, 프로젝트 구성에 대해서도 살펴본다. MVC와 레이어 Spring에서는 MVC에 Service라는 것과 DAO라는 개념이 추가된다. MVC - Model : DB에서 data를 가져와 메모리에 올려놓은 것 - View : jsp, html 단에서 보여주는 것 - Controller : 이 두 가지를 연결해주는 것 - DAO(Repository) : Data Access Object, db와 소통하는데 사용하는 레이어 - Service : 로그인 서비스, 검색 서비스, 이메일 서비스 등과 같이 독립적인 로직을 갖는 처리 단위 다양한 프로젝트 구조 - .. 2023. 4. 24. <selectKey> : insert + select를 한번에 Mybatis에서 유용하게 활용할 수 있는 태그인 에 대해서 알아보자 란? DML문(insert,update,delete)에 쿼리문(select)을 활용해야하는 경우 >> 별도의 쿼리를 작성하지 않고 하나의 메소드에 일괄처리할 수 있다. 여러 테이블에 동일한 시퀀스를 insert하는 경우에 주로 사용된다. >> 발생한 시퀀스를 조회하는 currval은 동일한 트랜젝션에서만 쓸 수 있다. 스프링은 하나의 SQL문이 실행될따마다 자동 커밋을 하고 있어 일반적 상황에서 currval은 쓸 수 없다. 는 이러한 한계를 우회할 수 있는 지름길을 제공한다. 공식문서에서 보기 : 원어, 한국어 번역 예제1 : 개념다지기 하단의 예제는 selectKey 가 가장 많이 활용되는 insert 메소드 이다. 예제태그의 흐름.. 2023. 4. 20. 스프링에서 직접 트랜잭션 제어하기 : @Transactional 트랜잭션 수동제어 스프링 및 스프링부트는 Mybatis의 트랜잭션을 자동으로 처리해준다. 하지만 로직에 따라 직접 제어해야할 때가 있을 것이다. 스프링에서의 트랜잭션 SqlSession - Mybatis의 클래스 - DB와의 연결 및 SQL문 처리를 수행한다. SqlSessionTemplate - Mybatis-Spring 연동 모듈 중 하나 - SqlSession을 스프링의 IoC컨테이너에서 관리하도록 함으로써 객체 생성과 관리, 트랜잭션등을 처리한다. >> 장점 : 코드가 간결해지고 자원누수를 막는다. >> 단점 : .commit(), .rollback()을 쓸수 없다! (직접 트랜잭션 관리 불가) @Transactional 트랜잭션을 수동으로 제어하게끔 스프링에서 제공하는 어노테이션 일반적으로 비즈.. 2023. 4. 19. [Boot] 로깅 설정하기 (SLF4J, log4j, logback) 로깅 Logging 로깅 라이브러리를 사용하는 이유와 사용방법에 대해서 알아보자. 로깅이란? 정보를 제공하는 일련의 기록인 로그(log)를 생성하도록 시스템을 작성하는 활동. 로그를 출력하는 방법 - System.out.println() 이용 - 로깅 라이브러리 이용 System.out.pringln()의 한계 속도가 느리다. 날짜/시간/타입(error, info, debug,..) 등과 같은 정보가 기본적으로 없다 콘솔창에 출력만 하기 때문에 데이터를 쌓고 남기기 힘들다. 로깅 라이브러리 종류 java.util.logging - JDK에 포함된 기본 로깅 API(별도 라이브러리 추가X) - 기능이 부족해 많이 사용되지는 않는다. Log4j - 아파치 제단에서 제공하며 가장 많이 사용되는 로깅 라이브러리.. 2023. 4. 14. [토막정보] 다양한 개발용어 (1/2) 개발용어헷갈리는 개발용어들을 정리해본다.목차빌드배포환경변수라이브러리 vs 프레임워크도메인비즈니스 로직컬렉션서버개발(백앤드)메타데이터해싱 / 해시함수하드코딩엔드포인트래퍼(Wrapper) 패턴유의적 버전(Semantic Versioning)스크레이핑(scraping), 크롤링(crawling)의존성(Dependency)SPA(Single-Page Application)라우팅(Routing)**포스팅은 목차의 역순으로 기술되어있다.(최신순) 라우팅(Routing)사용자의 경로 이동을 관리하는 기술 또는 패턴- 사용자가 요청한 URL 경로에 맞는 화면을 보여준다- 이벤트(버튼클릭 등)에 따른 화면을 보여준다.서버 사이드 라우팅(SSR)- URL의 요청에 따라 적절한 페이지를 렌더링하여 클라이언트에 전달하는.. 2023. 4. 13. [Postman] API 개발을 위한 HTTP 통신 테스트 Postman개발중인 API를 테스트 할 수 있는 플랫폼인Postman에 대해서 알아보자Postman이란?API를 개발할 때 요청을 보내고 응답을 받는 과정을 테스트해볼 수 있다.설치하기- 포스트맨 공식사이트 : https://www.postman.com/- 로그인 후 Download the desktop app for 윈도우 클릭하여 설치용어- Workspaces : 팀, 개인 등 다양하게 설정 가능- Collection : 다양한 요청들을 저장할 수 있는 단위(폴더의 개념)- Request : 하나의 API 요청을 보낼 수 있는 단위- Response : 요청에 대한 결과사용하기1. 새로운 Request를 만든 후 Get / Post 등의 메소드를 선택한다. 2. 테스트 하고자 하는 http://l.. 2023. 4. 13. [API] 개요 / RESTful 설계규칙 / HTTP 메소드 API 프론트/백단으로 분리되게 되면 API가 백단의 역할을 맡게 된다. API란 무엇인지 간단하게 훑어본다. API란? Application Programming Interface 소프트웨어가 다른 소프트웨어로부터 지정된 형식으로 요청, 명령을 받을 수 있는 수단 장점 - 데이터 접속의 표준화와 편의성(디바이스/운영체제 등과 상관없이 조건만 맞다면 동일한 액세스 가능) - 자동화와 확장성(API를 통한 CRUD처리) - 적용력(예측성이 높아 유연한 서비스 제공 가능) 단점 - HTTP방식으로 인한 보안의 취약점(SQL injection, DDoS, .. 등) - 공식화된 표준의 부재로 관리가 어렵고 광범위한 프로그래밍 지식 필요 접근방식에 따른 API종류 Private API 내부 API로 제삼자에게 .. 2023. 4. 13. [데이터타입] 숫자, 문자, 날짜/시간 데이터 타입 PostgreSQL에서 자주쓰이는 데이터 타입들을 알아본다 숫자 integer : - 정수만을 저장할 수 있는 숫자타입 numeric (가변적크기) : - 정수 또는 소수값을 저장한다.(Oracle의 Number타입) serial : - PostgreSQL에서 지원하는 타입으로 시퀀스를 사용한 auto increment 기능이 있다. --serial타입으로 칼럼을 생성할때, CREATE TABLE test( id serial ); --내부적으로 실행되는 SQL문 CREATE SEQUENCE test_id_seq; CREATE TABLE table_name ( id integer NOT NULL DEFAULT nextval('test_id_seq')); ALTER SEQUENCE table_n.. 2023. 4. 11. [DBeaver] 편리한 작업툴 DBeaver DBeaver 란? Oracle, MySQL, PostgreSQL 등 다양한 DB에 연결해서 쿼리를 보낼 수 있는 GUI 설치하기 1. DBeaver 이전버전 다운로드 2. 피해야할 버전 23.0.2 이후 버전 : 자바 17이상 필요 23.0.1 : 글씨크기 설정 안되는 버그 >> '회사1'에는 22.3.3 설치 단축키 편집창 글꼴 확대 축소 : Ctrl + '+' , Ctrl + '-' SQL문 실행 : Ctrl + Enter DB연결하기 플러그+ 모양 아이콘 클릭 - [PostgreSQL] 선택 Host에 localhost입력 (DB공유시 해당 pc 네트워크의 IPv4입력) Database에 생성해둔 DB이름입력 Password에 'postgres' 입력 Save password loc.. 2023. 4. 10. [01] CRUD : 엔티티와 레파지토리 (+ JUnit 테스트) JPA의 CRUD JPA에서 데이터를 객체로써 어떻게 활용하는지 알아본다. 이때, JUnit을 통해 실습해본다. 참고자료 : 점프 투 스프링부트 JUnit Java에서 독립된 단위테스트(unit test)를 지원해주는 프레임워크 스프링부트에 기본적으로 포함되어 있다. >> 자동생성 된 src/test/~/SbbApplicationTests.Java 파일을 쓰면 됨 @SpringBootTest : 클레스에 붙임. 해당 클래스를 테스트 클래스로 인식시킨다. @Test : 메소드에 붙임. 호출될때 마다 새로운 인스턴스를 생성하여 독립적인 테스트가 이루어지게 한다 테스트 실행 - [Run] - [Run As] - [JUnit Test] ** 이미 로컬서버가 구동중이라면 오류가 뜬다. Boot Dashboard에.. 2023. 4. 7. [00] JPA 시작하기 (+ H2 데이터베이스) JPA in SpringBoot 스프링부트에서 DB를 활용할 수 있는 프레임워크 중 하나인 JPA에 대해서 알아보자 참고자료 : 점프 투 스프링부트 스키마란? DB의 구조와 제약조건에 관해 기술한 것 >>데이터베이스를 구성하는 데이터 개체(entity), 속성(Attribute), 관계(Relationship) 및 데이터 조작시 데이터 값들이 갖는 제약 조건 등에 관해 전반적으로 정의 사용자가 검색을 할때 맨 아래 저장되어있는 데이터베이스까지 가 닿아 정보를 얻기까지의 구조, 일련의 데이터 처리 프로세스, 자료들간의 협력관계 등을 '형식언어'로 나타낸다. 스키마의 3계층 1.사용자 관점에서 논리적 구조를 기술한 외부 스키마 2.물리적인 저장장치의 면에서 논리적인 구조를 기술한 내부 스키마 3.조직체나 기.. 2023. 4. 6. [Boot] 스프링부트 기본개념 및 프로젝트 생성 Spring Boot 스프링부트에 대해 알아보고 STS 및 인텔리제이를 사용해서 프로젝트를 생성해본다. 참고자료 : 점프 투 스프링부트 포스팅순서 스프링부트 개요 프로젝트 생성하기 - IntelliJ ver - 이클립스ver - 테스트하기 스프링부트 도구 설치하기 - Spring Boot Devtools - Lombok 프로젝트 구조 - 디렉토리 주요구조 - 주요파일 스프링부트 개요 스프링부트에 대해 간략하게 알아본다. 스프링부트란? 기존 스프링(Spring) 프레임워크에 톰캣 서버를 내장하고 여러 편의 기능들을 추가하여 꾸준한 인기를 누리고 있는 프레임워크 스프링레거시와의 차이점 보안적으로 안전하다 - SQL 인젝션(sql문을 조작하여 공격), XSS(자바스크립트를 삽입해 공격), CSRF(위조된 요청.. 2023. 4. 5. [개요] DBMS 개요 및 PostgreSQL 특징 DBMS DataBase Management System에 대해 알아보고 그 중 한 종류인 PostgreSQL을 시작해본다 DBMS란? 정의 데이터베이스라는 데이터의 집합을 만들고, 저장 및 관리할 수 있는 기능들을 제공하는 응용 프로그램 종류에 따라 DataBase Server까지 지원하기도 한다. 종류 Oracle, MySQL, MariaDB, Microsoft Access, PostgreSQL, ... 관리도구 : DBMS를 전문적으로 관리하기 위한 프로그램 sqldeveloper(Oracle), MySQL Workbench(MySQL), DBeaver(다양한 DBMS지원)... SQL이란? Structured Query Language 관계형 데이터베이스에서 사용되는 언어로 특정 회사에서 만드는 .. 2023. 4. 4. [Github-Action] CICD / 워크플로우 Github ActionCI/CD 도구 중 하나인 깃헙액션에 대해 톺아본다. Github Action 이란?CI/CD 플랫폼- 코드 변경 사항을 자동으로 테스트하고 빌드하며, 성공하면 배포까지 자동으로 진행할 수 있다.- 컨테이너 환경의 경우 CI기능만 사용하고 CD는 다른 전문 도구를 사용하는 경우가 많음 (배포전략, 쿠버네티스 환경 등의 이유로 깃옵스 기반 도구 사용)GitHub 기반- Pull Request, Commit, Merge 등과 같은 이벤트를 기반으로 동작시킬 수 있다.- 레포지토리 내부 또는 외부의 작업들을 인식할 수 있다.마켓플레이스- 기 구현된 커스텀 작업들(Action)을 마켓플레이스에서 가져다 쓸 수 있다.공식문서https://docs.github.com/ko/actions h.. 2023. 3. 24. [08] 스케줄러(+cron표현) 스케줄러 특정날짜, 특정시간, 혹은 일정주기마다 특정한 작업(sql)을 실행시키고자 할 경우 스프링에서 제공하는 scheduler를 활용할 수 있다. 사용준비하기 스케줄러를 사용하려면 클래스 및 메소드를 만든 후 어노테이션을 붙이면 된다. 단, 스케줄러를 사용하겠다는 등록이 선행되어야한다. 등록위치 : servlet-context.xml 스키마 등록하기 NameSpaces탭에서 task체크 스케줄 등록하기 1. 테스크 스케줄러라는 객체를 빈을 등록시켜주는 과정 - id : 사용할 이름을 붙인다 - pool size : 쓰레드(일을 처리하는 단위), 기본값은 1이다 10정도로 설정해준다. 2. @Scheduled라는 어노테이션을 스캔해서 등록하겠다는 의미 - scheduler : 으로 등록해둔 bean의 .. 2023. 3. 10. [07] websocket을 이용한 실시간 채팅 WebSocket 통신방식 중 하나인 WebSocket을 이용해서 실시간으로 통신이 가능하다. 다이나믹 웹 프로젝트라면 웹소켓을 활용할 수 있으며, 스프링에서도 라이브러리를 통해 웹소켓을 사용할 수 있다. HTTP통신 : 비연결 통신 기존에 사용했던 통신은 url을 통해서 요청하는 HTTP통신이다. (ajax도 HTTP를 이용한다) cf. HTTP통신이란? 데이터를 주고받는 프로토콜(규칙) 비연결 통신 클라이언트가 요청을 서버에 보내고 나서 서버가 응답하면 연결이 끊기는 특성이 있음 >> 지속적으로 데이터를 주고받을 수 없다. >> setInterval() 등의 함수로 주기적으로 연결시키는 방법으로 우회해야한다.(polling 방식) websocket통신 : 영구적 양방향 통신 영구적이다 : HTTP를 .. 2023. 3. 5. [06] 비동기식 통신(AJAX) AJAX in 스프링 스프링에서 비동기식 통신을 할때도 AJAX를 활용할 수 있다. JSP단은 키값의 중요도가 높아진다는 것 외에는 달라지는것은 없다. 단, Contoller단에서는 활용할 수 있는 코드가 추가된다. AJAX복습 기본 AJAX 복습하러가기 [KeyPoint] - 순수JS방식보다 jQuery방식이 훨씬 쉽다 >> jQuery방식으로 코드를 구성해본다. - input에서 name으로 키값을 주는것이 아닌 ajax구문에서 키값을 준다. >> input에는 ajax에서 선택할 수 있도록 id 속성을 쓴다. - controller단에서 응답할 데이터에 한글이 껴있는 경우 >> 메소드로 문자셋을 utf-8로 설정해준다. - 다수의 데이터를 보내고자 vo객체로 응답하면 toString메소드가 실현되어.. 2023. 2. 27. [인터넷] IP주소 / 포트포워딩 >WEBDATABASE언어클라이언트서버데이터과학개발도구프로젝트관리기타 HTTP JavaScriptPHPMySQL인프라리눅스 인터넷AWS 인터넷 IP주소Internet Protocol: 인터넷을 이용하는 각각의 플레이어들이 준수해야하는 규칙IP Address (IP주소)이용자들이 서로 정보를 주고받기 위해서는 각 PC에 고유한 주소를 가지고 있어야한다.like 전화번호IP주소 확인하기 1cmd창에서 " ping 도메인 " 를 입력하면 해당 도메인을 갖고있는 서버의 IP주소를 확인할 수 있다(cmd 나갈때는 ctrl+c)주소창에 도메인이 아닌 IP주소를 사용해서 접속할 수 있다.IP주소 확인하기 2접속하는 쪽에서도 IP를 가지고 있어야만한다.https://whatismyipaddress.com/ 등의.. 2023. 2. 25. [05] 인터셉터 인터셉터 스프링에서 제공하는 인터셉터에 대해 알아보자 인터셉터란? 필요성 사용자는 url을 조작함으로써 접근권한이 없는 페이지에 진입 할 수 있다. 인터셉터를 사용한다면 이와 같은 상황을 방지할 수 있다. 필터와의 차이점 필터가 서블릿 구동 전에 수행된다면 인터셉터는 서블릿 구동 후 컨트롤러가 실행되기 전에 수행된다 반대로 컨트롤러 실행 후 서블릿으로 돌아오기 전에 낚아채서 수행시킬수도 있다. 활용 예 1. 해당 요청을 할 수 있는 회원이 맞는지 로그인여부 확인 2. 해당 요청을 할 수 있는 권의 회원이 맞는지 권한확인 HandlerInterceptor 살펴보기 Spring에서 제공하는 인터페이스로 이를 구현함으로써 인터셉터 기능을 사용한다. preHandle메소드 전처리, DispatcherServle.. 2023. 2. 24. [04] 파일등록 : commons 라이브러리 파일등록 기존에 사용하던 Cos가 아닌 다른 라이브러리를 사용해보고, spring에서 파일을 등록하는 절차는 어떻게 되는지 알아보자 새로운 라이브러리 : commons-fileupload Cos.jar의 단점 1. 파일의 크기에 제한이 있다 2. multiple 기능 사용 불가하다 >> 이를 보완할 라이브러리를 적용해보자 commons-fileupload 준비하기 1. 메이븐에서 하기 두가지 라이브러리를 검색한다 1-1. Apache Commons FileUpload 1-2. Apache Commons IO 2. pom.xml에 라이브러리를 추가한다. 3. root-context.xml에서 bean으로 등록한다. (최대용량도 이때 지정한다) commons-fileupload commons-fileuplo.. 2023. 2. 22. [03] 발전된 방식(암호화, 롬복, ..) 발전된 방식 기존의 코드에 좀더 발전된 방식을 차용해보자. 포스팅순서 유용한 팁 1-1. 스프링의 인코딩필터 1-2. 좀 더 세련된 페이징처리 1-3. 쿼리스트링의 대안 코드 암호화 롬복 유용한 팁 코드를 구성하는데 도움이 되는 짧은 팁들을 모아보았다. 스프링의 인코딩 필터 한글로 입력된 파라미터를 받으려면 인코딩 작업은 필수이다. 이때 스프링에서 제공하는 인코딩 필터(CharacterEncodingFilter)를 등록하여 활용해보자 등록과정(web.xml) 1) 태그로 CharacterEncodingFilter를 등록한다. 2) 태그를 통해 어떤 문자셋으로 인코딩 할것인지 입력한다. 3) 태그를 통해 어떤 url요청시 거쳐갈것인지 입력한다. url-patten을 '/*'로 입력하면 모든 url요청시 거.. 2023. 2. 22. [02] Controller 톺아보기 (url매핑, 파라미터받기, 결과리턴하기) Spring의 MVC Pattern 스프링의 MVC의 흐름은 기존에 해오던 방식과 거의 동일하다. 그러나 Controller단까지 오는 코드에 큰 차이가 있다. 포스팅순서 DispatcherServlet : web.xml에 기등록되어있는 서블릿 클래스로 스프링에서는 해당 서블릿이 모든 서블릿의 역할을 대신하게 된다. Controller 매핑값 설정 : 스프링에서 직접 서블릿을 만들지 않는다면 url의 매핑값과 컨트롤러를 어떻게 연결할수 있을까? 전달값 받아내기 : Controller에서 요청과 함께 전달된 값을 받는 여러가지 방법을 알아본다. Service 객체 만들기 : Controller에서는 Service의 메소드를 호출하며 데이터를 넘긴다. 이때 Service객체를 singleton pattern.. 2023. 2. 22. 이전 1 2 3 4 5 6 7 8 다음