전체 글

전체 글

    JDBC와 JdbcTemplate

    JDBC 자바에서 데이터베이스에 접속할 수 있도록 하는 자바 API로, JDBC는 데이터베이스에서 자료를 쿼리하거나 업데이터하는 방법을 제공한다. 스프링은 더 쉽게 JDBC를 사용할 수 있도록 JdbcTemplate 클래스를 제공하며, JdbcTemplate은 JDBC를 사용할 때 요구되는 반복되는 코드없이도 개발자가 관계형 데이터베이스에 대한 SQL 연산을 수행할 수 있는 방법을 제공한다. JdbcTemplate이 없다면 데이터베이스 연결(connection), 명령문(statement) 생성과 쿼리 수행, 결과(result set) 처리, 사용한 자원들을 닫고 클린업하는 코드를 전부 작성해야 한다. 또한, 연결이나 명령문 등의 객체를 생성할 때 또는 쿼리를 수행할 때 반드시 SQLException 예..

    스프링 MVC 구조

    스프링 MVC 전체 구조 클라이언트로부터 HTTP 요청 디스패처 서블릿이 핸들러 매핑을 통해 요청 URL에 매핑된 핸들러(컨트롤러) 조회 찾은 핸들러를 처리할 수 있는 핸들러 어댑터 실행 핸들러 어댑터는 핸들러가 반환하는 정보를 ModelAndView로 변환해서 반환 뷰 리졸버를 실행하면 뷰의 논리 이름을 물리 이름으로 바꿔서 뷰를 찾고 반환 뷰를 통해서 뷰 렌더링 디스패처 서블릿 서블릿으로 동작하는 스프링 MVC의 프론트 컨트롤러로, 부모 클래스에서 HttpServlet을 상속받아서 사용한다. 부모 클래스인 FrameworkSerlvet에서 doService()를 오버라이딩 해두고, doServie()를 시작으로 여러 메서드들과 함께 doDispatch()가 호출된다. doDispatch() 메서드는 ..

    react-router-dom과 로그인 인증

    프론트엔드에서 인증이란, 로그인과 회원가입, 리다이렉션이다. 프론트엔드 애플리케이션은 백엔드에 HTTP 요청을 보냈을 때 403이 리턴되면, 로그인 페이지로 리다이렉트 해야한다. 또한, 로그인한 후 백엔드 서비스로부터 받은 토큰을 어딘가에 저장해 놓고 요청을 보낼 때마다 헤더에 Bearer 토큰으로 지정해 주어야 한다. 서버-사이드 라우팅 사이트.com/login을 입력하고 들어가면 이 요청은 GET 요청으로 해당 사이트의 서버에 전달된다. 서버는 login 경로를 보고 login.html 페이지를 반환한다. 브라우저는 받은 login.html을 렌더링하고, 이 경우 웹 페이지가 새로고침 또는 reloading 된다. 이런 라우팅을 서버-사이드 라우팅이라고 한다. 클라이언트-사이드 라우팅 한 페이지에서만..

    서버 세팅

    웹 기반의 시스템에서 성능에 영향을 줄만한 세팅은 크게 웹 서버, WAS 서버, DB 서버, 장비 세팅으로, 시스템에 가장 적절한 설정값은 반드시 성능 테스트를 통해서 찾아내야 한다. 아파치 웹 서버 설정 웹 서버를 WAS 서버 앞에 두지 않으면 정적인 리소스를 처리하느라 WAS 서버의 스레드를 점유하게 된다. 따라서, 반드시 상용 웹 서버나 아파치 웹 서버를 WAS 앞 단에 두고 운영해야 한다. httpd.conf 아파치 웹 서버는 여러 개의 프로세싱 모듈 기반의 서비스를 제공한다. (MPM) 아파치 웹 서버의 설정을 바구는 방법은, 설치 폴더 하단의 conf 디렉터리에 있는 httpd.conf 파일을 수정하는 것 ThreadsPerChild 250 MaxRequestsPerChild 0 Threads..

    OAuth2 로그인 인증

    OAuth2.0 인증 및 권한 획득을 위한 업계 표준 프로토콜 보안수준이 어느정도 검증된 플랫폼의 API를 이용하여 사용자 인증과 리소스에 대한 권한 획득(인가)을 할 수 있도록 해준다. 즉, 구글, 카카오, 네이버 등과 같은 사이트에서 로그인을 하면 직접 구현한 사이트에서도 로그인 인증을 받을 수 있도록 하는 구조 구성요소 Resource Owner: 개인 정보의 소유자 Client: 리소스 서버에서 제공해주는 자원을 사용하는 외부 플랫폼 Authorization Server: 외부 플랫폼이 리소스 서버의 사용자 자원을 사용하기 위한 인증 서버 Resource Server: 사용자의 개인 정보(자원)을 저장하고 제공해주는 서버 인증 종류 1. 권한 코드 승인 방식 일반적으로 서버 사이드에서 인증을 처리..

    JWT 인증 구현

    서블릿 필터 서블릿 필터란 서블릿 실행 전에 실행되는 클래스들로, 디스패처 서블릿이 실행되기 전에 항상 실행된다. 구현된 로직에 따라 원하지 않는 HTTP 요청을 걸러낼 수 있으며, 걸러낸 HTTP는 거절된다. 서블릿 필터에서 전부 살아남은 HTTP 요청은 디스패처 서블릿으로 넘어와 컨트롤러에서 실행된다. 서블릿 필터를 구현하려면 HttpFilter 또는 Filter를 상속해 doFilter() 라는 메서드를 원하는대로 오버라이딩 서블릿 필터들은 FilterChain을 이용해 연쇄적으로 순서대로 실행되며, 각 필터는 다음으로 부를 Filter를 FilterChain 안에 갖고 있어 FilterChain을 통해 다음 필터를 실행할 수 있다. 스프링 시큐리티 스프링 시큐리티는 스프링 기반 어플리케이션의 권한..

    백엔드 통합과 CORS

    Fetch API fetch는 자바스크립트가 제공하는 메서드로 API 서버로 http 요청을 송신 및 수신할 수 있도록 도와준다. fetch는 url을 매개변수로 받거나 url과 options를 매개변수로 받을 수 있으며, Promise 오브젝트를 리턴한다. 따라서, then과 catch에 콜백 함수를 전달해 응답을 처리할 수 있다. 메서드를 명시하고 싶은 경우나 헤더와 바디를 함께 보내야 할 경우에는 두 번째 매개변수에 요청에 대한 정보가 담긴 오브젝트를 넘겨준다. options = { method: "POST", headers: [ ["Content-Type", "application/json"] ], body: JSON.stringify(data) }; fetch("http://localhost:8..

    이벤트 처리

    지원되는 이벤트 SyntheticEvent – React (reactjs.org) SyntheticEvent – React A JavaScript library for building user interfaces reactjs.org 예시) 일정 추가하기 state = { todoList: [], current: '' }; onKeyDown 엔터를 누르면 할일 목록에 일정을 추가하는 이벤트 핸들러 이때 todoList에 push하면 안 되고 아래와 같이 setState로 상태값을 변경해주어야 한다. onKeyDown = (evt) => { if ( evt.keyCode === 13 ) { const { todoList, current } = this.state; this.setState({ todoLis..

    프론트엔드 기초

    프론트엔드 프론트엔드는 사용자 바로 앞에서 사용자와 상호작용하며 애플리케이션 로직을 수행하고, 백엔드 서버로 요청하는 역할로 웹 서비스에서 클라이언트 또는 프론트엔드란 웹 브라우저를 뜻한다. 브라우저는 인터넷을 이용해 서버에 있는 자원을 사용자의 컴퓨터로 다운로드한 후 브라우저에서 실행시킨다. 브라우저 동작 원리 브라우저의 주소창에 웹 주소를 입력하면 브라우저는 HTTP GET 요청을 서버로 전송하고, 프론트엔드가 있는 웹 서비스의 경우 HTML 파일을 결과로 반환한다. HTML을 받은 브라우저는 파싱과 렌더링 두 단계를 거쳐 텍스트로 된 HTML을 브라우저에게 보여준다. 파싱 브라우저는 HTML을 트리 자료 구조의 형태인 DOM 트리로 변환한다. IMAGE, CSS, SCRIPT 등 다운로드해야 하는 ..