지난 시간에는 frontcontroller를 도입했다. 이렇게 frontcontroller를 도입하고 나면 pagecontroller는 일반 자바 객체로 만들 수가 있다. 이것을 POJO라고 한다. 이 때는 PageController interface의 규칙에 따라 구현해야 한다. 1) controller 패키지 작성 src/main/java 아래에 controller 패키지를 추가한다. 2) controller 패키지 아래에 PageController interface를 만들어 준다. interface는 구현하는 클래스가 따라야 할 일종의 규약이다. PageController interface에는 service() 메서드를 구현하는데 이는 나중에 스프링을 도입할 때를 대비해 스프링을 흉내낸 것이다. 1..
우리가 만든 회원 리스트는 오로지 하나의 jsp창만을 출력하는 간단한 구조이지만 서블릿이 많아지면 서블릿마다 반복되는 코드들이 늘어난다. 스프링에서는 프론트 컨트롤러를 이용해 이런 작업을 처리한다. 스프링을 흉내내어 프론트콘트롤러를 간단하게 만들어 보자. 1) src/main/java/servlet 패키지 내에 DispatcherServlet 클래스를 작성한다. 2) DispatcherServlet에서는 모든 요청을 잡아서 다른 페이지 컨트롤러(서블릿)에 위임한다. 12345678910111213141516171819202122232425262728293031323334package servlet; import java.io.IOException; import javax.servlet.RequestDis..
지난 시간까지 Jsp를 도입하며 완전한 MVC 패턴을 구현해 보았다. 이번시간에는 mybatis framework를 사용하여 자바 코드와 SQL문을 분리해 보도록 하겠다. 동시에 반복적으로 수행해야 하는 JDBC 코드를 캡슐화 하는 방법도 알아보자. 1) build.gradle 파일에 mybatis 라이브러리를 추가해 준다. build.gardle 파일의 dependencies 에 // mybatis 라이브러리 Persistence Framework // https://mvnrepository.com/artifact/org.mybatis/mybatis compile group: 'org.mybatis', name: 'mybatis', version: '3.4.6' 와 같은 코드를 추가하고 gradle 명..
문제 국경을 지나는 것은 언제나 귀찮고 힘든 일입니다. 여행자들은 도착지에 도착하기 위해 통과하는 국경을 최소화 시키길 원합니다. 당신은 여행자들을 도와 국경선을 최소한으로 통과하는 방법을 찾고 싶습니다. 다행히 당신이 도와줘야 하는 여행자가 사는 세상은 모든 나라의 국경선이 정확한 원이고 서로 겹치거나 교차하지 않는다고 합니다. 각 국가의 좌표 배열 X, Y 와 반지름 배열 R 그리고 시작 좌표인 x1, y1 종료 지점 좌표인 x2, y2가 주어진다고 할 때 최소한으로 통과해야 하는 국경선의 수를 리턴하는 함수를 작성하십시오. 입출력 예시 입력 1) int[] X = { 0, -6, 6 }; int[] Y = { 0, 1, 2 }; int[] R = { 2, 2, 2 }; int x1 = -5; int..
문제 초기 대출금(price)과 매월 상환금(monthlyPayment), 상환기간(loanTerm)이 주어졌을 때 이자율을 계산하라. 단 상환기간은 월 단위로 주어지며 매월 이율은 연이율을 12로 나눈 것과 같다. 이자율은 1e-9 이하의 오차범위를 가져야 한다. 입출력 예시 입력 1)price = 6800monthlyPayment = 100loanTerm = 68 출력 1)0 입력 2)price = 2000monthlyPayment = 510loanTerm = 4 출력 2)9.562054624620941 풀이 이자율을 미지수로 두고 매번 남은 잔액에 대해 생각해 보면 잔액 *= 이자율/1200 + 1잔액 -= 월 상환금 인 것을 알 수있다. 이자율에 구체적인 값을 넣고 오차범위 안에 드는 값을 구하면..
지금까지 만든 회원 리스트 출력창은 모두 Servlet에서 out,print로 WebBrowser에 출력한다. 이 때 out.print는 버퍼에 태그를 저장했다가 내 보내는데 버퍼가 다 차면 매서드가 종료되기전에 보내기 때문에 에러가 생긴다. 또한 Servlet에는 java 코드와 html 코드가 섞여 있기 때문에 가독성이 떨어지고 유지보수의 불편함이 있다. 이런 문제점을 해결하기위해 JSP를 도입하게 된다. JSP는 JSP엔진에 의해 자바코드로 변환되어 컴파일 된 이후 다시 출력된다. 이미 우리가 나눠 놓은 DAO 와 Member 객체에 더해 출력부인 JSP까지 나뉘어 지게 된 것을 MVC 구조라고 부른다. MVC는 Model, View, Controller 의 약자로 각각 Model에는 DAO, Me..
문제 n명의 회사원이 둥근 테이블에 앉아 회의를 하려고 한다. 회의를 시작하기 전에 그들은 먼저 악수를 해야한다. 회사원들은 각각 다른 사람과 악수를 해야 하며 모든 악수는 동시에 진행되어야 하지만 서로의 팔이 교차되어서는 안 된다. 정수가 주어졌을 때 그만큼의 직장인이 하는 악수가 성립하는 조합의 수를 리턴하는 함수를 작성하라. 입출력 예시 입력 1)int n = 2 출력 1)1 입력 2)int n = 8 출력 2)14 풀이 이 문제를 풀기 위해서는 카달랑 수의 개념을 알아야 한다. 조합론에서, 카탈란 수(Catalan數, 영어: Catalan number)는 이진 트리의 수 따위를 셀 때 등장하는 수열이다. 위 문제를 통해 수열의 점화식을 알아보자. 모든 사람이 악수를 해야 하기 때문에 주어지는 정수..
지난번에는 Servlet를 이용하여 회원 리스트를 만들어 보았다. 그 방법에서는 모든 코드를 서블릿 안에서 처리해야 하기 때문에 중복되는 코드가 많고 코드가 서로 섞이고 유지보수에 어려운 점이 많았다. 이번에는 DAO를 이용하여 Servlet을 분리해 보도록 하겠다. 1) domain패키지와 Member클래스 생성 우선 src/main/java 아래에 domain 패키지를 생성하고 패키지 아래에 Member 클래스를 만든다. Member 클래스는 자료를 저장하는 모델이 된다. Member 클래스의 코드는 아래와 같다. 123456789101112131415161718192021222324252627282930313233package domain; public class Member { private St..
- Total
- Today
- Yesterday
- 야근
- 전략패턴
- 유지보수
- Spring in Action
- Warning
- was
- 자바스크립트개론
- GROUP BY
- 마르코프
- 마르코프 연쇄
- REST API
- 디자인패턴
- CONVENTIONS
- html
- 클린코드
- 자바스크립트 개론
- restful api
- DP
- 몰라서망신
- 경고
- RESTful
- 문장 생성기
- 로그
- Markov
- 코딩의 기술
- java
- markov chain
- 동적계획법
- Count
- 크롬
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |