분류 전체보기 264

[Servlet] 포워드(dispatch), 바인딩

포워드: 하나의 Servlet에서 다른 Servlet이나 JSP와 연동하는 방법 - 요청에 대한 추가 작업을 다른 Servlet에게 수행 - Request에 포함된 정보를 다른 Servlet이나 JSP가 공유할 수 있음 - Request에 정보를 포함시켜 다른 Servlt에 전달 - MVC 패턴에서 Servlet에서 JSP로 데이터를 전달하는데 사용 redirect, Refresh, location, dispatch방식이 존재하는데 여기서는 dispatch방식만을 다룰것이다. dispatch는 Servlet에서 클라이언트를 거치지않고 바로 다른 Servlet에게 요청하는 방식이다. dispatch 웹 브라우어 주소창의 URL이 변경되지 않는다. 클라이언트에서 포워드가 진행되었는지 알 수 없다. 프로젝트를..

[MVC] MVC 모델, 테이블 조회 및 생성

모델 1 방식 JSP를 하지는 않았지만, JSP를 이용한 방식이 모델 1 방식이다. DB연동 같은 작업과 그 결과를 나타내주는 작업을 동일한 JSP에서 수행한다. 즉, 모든 클라리언트의 요청과 비지니스 로직을 JSP가 담당하는 구조이다. 기능 구현이 쉽고 편리하다는 장점이 있지만, 복잡해지면 유지보수에 문제가 발생한다. 이 모델 1 방식의 단점을 보완한 것이 모델 2 방식이다. 흔히 알고있는 MVC패턴에 대해 시작할 것이다. 모델 2 방식 웹 애플리케이션의 각 기능(클라이언트 요청, 응답, 비지니스 로직 처리)을 분리해서 구현한다. 각각의 기능을 모듈화 한다라고 이해하면 된다. 즉, 기능이 분리되어 있어 개발 및 유지보수가 쉽고 재사용성이 높다. MVC 디자인 패턴 Model-View-Controller..

[C/C++] mutex 응용과 condition_value

이전시간에 Mutex에 대해 살펴보았다. 이번에는 이 mutex를 응용한 '생산자-소비자' 패턴을 알아보고 condion_value에 대해 간단하게 알아보자. '생산자-소비자' 패턴은 멀티 스레딩하는데 많이 사용되며 '생산자'는 무언가 일을 처리하는 스레드를 받아오고 '소비자'는 받은 일을 처리하는 스레드를 의미한다. 아래의 전체코드를 한번 보자. 우리는 웹 페이지를 다운받는 시나리오를 가정한다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 ..

C , C++, C# 2020.03.01

백준[17144] 미세먼지 안녕!

출처는 아래와 같다. 2019년 삼성 상반기 기출문제로 알고있다. acmicpc.net/problem/17144 이 문제 역시 시키는대로 구현하면 되는 문제이다. 문제는 구현이 누군가에게는 쉬울수도 어려울수도 있다는 것이 문제이다. 문제를 보면 2가지로 나누어 순서대로 구현하여 문제를 해결하면 된다. 순서대로 확인해보자. 1) 확산 미세먼지가 확산된다는데 그냥 읽어서는 정확하게 구현하기 쉽지 않다. 필자는 예제에 있는 그림 중 3번째 그림을 보면서 이해하는데 시간이 좀 걸렸다. 이것을 코딩하는데 생각하는것도 만만치 않을텐데 필자는 나눠줘서 확산되는 값들을 저장하는 f[][] 배열을 통해 구현하였다. f[][] 배열은 확산에 따른 모든 값들을 더해지게 되고 원본 배열은 arr[][]에는 정 중앙의 확산에 ..

[Servlet]커넥션풀을 이용한 회원 정보 CRUD(생성,조회,수정,삭제)

이전에 작업한 방법의 문제는 필요할 때마다 연동해서 작업하는 경우 연결에 시간이 많이 걸린다는 문제가 있다. 이를 위해 웹 어플리케이션이 실행됨과 함께 연동할 데이터베이스와의 연결을 미리 설정하여 필요에 따라 연결해 놓은 상태를 이용해 빠르게 DB와 연동하여 작업하는 방법이 있다. 이 방법을 '커넥션풀' 이라한다. 아래 그림을 보며 커넥션풀의 동작 과정을 보며 이해해보자. 구현을 위해서는 Java SE에서 제공하는 javax.sql.DataSource 클래스가 필요하다. 그리고 웹 어플리케이션 실행 시 Tomcat이 만들어 놓은 커넥션풀 객체제 접근할 때 JNDI를 사용할 것이다. JNDI란 필요한 자원을 key/value 쌍으로 저장 후, 필요할 떄 키를 이용해 값을 얻는 방법이다. Tomcat 컨테이..

[C/C++] Mutex

CPU는 컴퓨터의 모든 연산이 발생하는 두뇌와 같은 엳할을 한다. CPU 에서 연산을 수행하기 위해서는, CPU의 레지스터(register) 라는 곳에 데이터를 기록한 다음에 연산을 수행해야 합니다. 64 비트 컴퓨터의 경우, 레지스터의 크기들이 8 바이트에 비해 불과합니다. 뿐만 아니라 레지스터의 개수는 그리 많지않으며 일반적인 연산에서 사용되는 범용 레지스터의 경우 불과 16개이다. 즉, 모든 데이터들은 메모리에 저장되어 있고, 연산 할 때 할 때 마다 메모리에서 레지스터로 값을 가져온 뒤에, 빠르게 연산을 하고, 다시 메모리에 가져다 놓는 식으로 작동한다. 예를들면, 메모리는 냉장고 이고 CPU 의 레지스터는 도마 라고 생각하자. 냉장고 (RAM) 에서 재료를 도마 위에 하나 (레지스터) 꺼내서 썰..

C , C++, C# 2020.02.22

[Servlet] 서블릿과 데이터베이스 연동 조회: PrepareStatement

이번에는 서블릿이 클라이언트로부터 요청을 받으면 그 요청에 대해 작업을 수행하는 것을 해보자. 보통, 회원 등록 요청 처리, 로그인 요청 처리 등의 처리를 의미한다. 아래 그림이 우리가 진행할 로직이다. 서블릿에서 데이터베이스와 연동하는 과정은 클라이언트로부터 요청을 받으면 서블릿은 SQL문을 사용해 데이터베이스에 접근하여 작업한다. 이를 바탕으로 회원정보에 대한 CRUD작업을 하는것이 목표이다. 먼저 회원정보를 조회해보자. 회원 정보 테이블을 생성한 후 회원 정보를 추가하여 웹 브라우저에서 서블릿으로 요청하면 데이터베이스와 연동해 회원 정보를 웹 브라우저로 출력하는 작업이다. 이번 실습의 구조는 아래와 같다. sqldeveloper 데이터 먼저 Sqldevelper를 사용하여 데이터베이스를 정의한다. ..

[Servlet] 웹 브라우저에서 서블릿 전송 및 예제들

이번시간에는 웹 브라우저에서 서블릿으로 데이터를 전송하는 방법에 대해 알아보자. 많이 들어봤겠지만, 여기서 GET, POST방식이 사용된다. GET 방식: URL뒤에 name=value 형태로 전송되며 보안에 취약, 데이터 최대 전송량은 255자이다. 기본 전송방식이고 사용이 쉽다. POST 방식: 데이터의 HEAD 영역에 숨겨진 채 전송, 보안에 유리, 데이터 전송량은 무제한 전송 시, 서블릿에서 가져오는 작업을 하므로 속도가 GET보다 느림 자 그럼 두 방식을 간단하게 살펴보자. 이전에 사용한 예제들을 다시보자. login.html 1 2 3 4 아이디 : 비밀번호: http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-d..

[Servlet] 서블릿에서의 요청 얻기와 응답

서블릿은 클라이언트가 요청을하고 서블릿과 데이터베이스 연동과 같은 비지니스 로직을 처리한 후 처리된 결과를 클라이언트에 돌려주는 기능을 한다. 이번 시간에 서블릿의 응답과 수행 요청 처리에대해 알아보자. 요청 : javax.servlet.http.HttpServletRequest 클래스 응답: javax.servlet.http.HttpServletResponse 클래스 에 정의되있다. API에서 함수 이름은 doGet() 이나 doPost() 메서드의 매개변수를 통해 확인할 수 있다. 서블릿에서 클라이언트의 요청 얻기 서블릿/JSP 프로그래밍을 위해서 HTML이나 javascript 내용에 대해 알아두면 좋다. 이 개념을 바탕으로 요청 처리를 해보자. 새로운 프로젝트를 만든다. dynamic 프로젝트로 ..

[Servlet] 서블릿(servlet) 이해하기

서블릿이란 서버에서 실행되다 웹 브라우저에서 요청을 하면 해당 기능을 수행한 후 웹 브라우저에 결과를 전송하며 서버에서 실행되므로 보안과 관련된 기능도 안전하게 수행한다. 즉, 클라이언트의 요청이 오면 기능을 수행하고 그 결과를 웹 브라우저에 돌려준다고 생각하면 된다. 동적으로 여러 기능을 제공하며 스레드 방식과 자바의 객체 지향적 특징을 가진다. 아래 그림은 서블릿 관련 클래스들의 계층 구조이다. Servlet 인터페이스는 Servlet관련 추상 메서드를 선언하며 init(), service() 등을 선언한다. -> javax.servlet ServletConfig 인터페이스는 Servlet 기능 관련 추상 메서드가 선언되어 있다. ->javax.servlet GenericServlet 은 상위 두 인..