[디자인패턴] Observer Pattern
·
기타/디자인패턴
[디자인패턴]Observer Pattern [디자인패턴] Observer Pattern디자인 패턴은 공부할 수록 흥미롭다. 이전 프로젝트 개발을 할 때 찝찝했던 부분이 있었는데 그런 부분을 해결할 방법을 알 수 있어서 재미있다. 디자인 패턴에 대한 이해가 왜 필요한지 알고 공부를 하니 더 이해가 잘 된다. 이번에 공부한 옵져버 패턴은 특히 그렇다. 작년에 개발했던 장비 테스터 프로그램이 생각난다. PC가 장비에 연결된 시리얼 포트로 장비의 정보를 수신받아 화면에 출력하는 기능이 있었다. 내가 구현했던 방식은 데이터가 업데이트 되는 부분에서 화면 갱신을 하는 것이었다. 쓰레드를 돌려서 현재 들어온 값이 이전 값과 다르면 화면을 갱신하여 표시했다.private void UpdateLine1Data(){ wh..
JSP 개발 설정
·
Spring Framework
[JSP]개발 환경 설정톰캣을 설치한 뒤 이클립스 설정을 해야한다.첫 프로젝트 생성File - new - project 클릭 Dynamic Web Project 선택 ※Dynamic Web Project가 없다면 ... Eclipse EE를 설치한다.프로젝트 이름을 적은 뒤 target runtime 지정하기 위해 New Runtime 클릭설치한 톰캣 버전 선택설치한 톰캣 경로 지정 후 Finish 클릭Project Explorer에 프로젝트가 생성된 것을 볼 수 있다.서블릿 생성프로젝트 우클릭 -> New -> Sevlet패키지 이름과 클래스 이름 작성next를 누르면 지정되는 URL path를 확인할 수 있다.next를 누르면 여러 메서드를 지정할 수 있다. 예제를 위해 toGet만 체크해준다. 설정..
톰캣 설치
·
Spring Framework
[JSP]톰캣설치[JSP]톰캣설치http://tomcat.apache.org/접속 후 좌측의 Download에서 버전 선택 후 zip파일 다운로드압축을 해제하고 bin안의 startup 실행(윈도우는 bat, 리눅스는 sh)실행 후 localhost:8080 접속하면 다음과 같은 페이지가 나온다.startup이 실행 안될 때JDK가 설치되지 않아서 실행이 안됐다. JDK 설치 후 JAVA_HOME까지 환경변수에 추가해야 올바르게 실행된다.환경변수 추가 방법
Interceptor
·
Spring Framework/Spring
Interceptorinterceptor를 통해 뷰의 공통적인 부분을 묶을 수 있다. 이를 통해 사용자 세션, 쿠키를 확인하거나 로그를 남기는 등 여러 작업을 할 수 있다.interface CookieValidator { void checkUser(email);}컨트롤러에서 이 인터페이스를 상속받아 사용하면 된다.인터셉터 작성​xpublic class AuthorizationInterceptor extends HandlerInterceptorAdapter {​ @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {​ String em..
[Java]lombok 적용
·
Language/Java
[Java]lombok 적용 lombok 적용DTO를 작성할 때 일일히 Getter, Setter, ToString을 생성하기 귀찮다. 물론 IDE에서 자동으로 코드 생성이 가능하긴 하지만 멤버 변수가 바뀔 경우 다시 코드를 생성해야한다. 이런 불편함을 해소해주는 것이 lombok이다. @Getter, @Setter 같이 어노테이션만 추가해 주면 자동으로 Getter, Setter 생성이 된다.dependency 추가 org.projectlombok lombok 1.18.2 provided 이렇게 의존성만 추가해서는 어노테이션 적용이 되지 않는다. IDE에 추가 설치가 필요하다.설치된 경로 C:\Users\USER\.m2\repository\org\projectlombok\lombok\1.18.2에 가서..
티스토리 블로그 구글 검색 등록
·
기타/블로그
[블로그]구글 검색 등록 구글 웹마스터 도구로 이동한다. 링크로그인 후 시작하기 클릭속성추가 클릭 내 블로그의 주소를 입력하고 소유권 확인을 해야한다. 속성확인에서 대체 방법 탭을 선택하고 HTML태그를 복사한다. 티스토리 블로그로 이동하여 환경설정 페이지의 좌측 꾸미기 - 스킨편집 클릭 HTML 편집 클릭 head 태그 내부에 아까 복사한 내용을 붙여넣기하고 저장한다. 웹마스터 콘솔에서 저장을 클릭 성공하면 다음과 같은 화면이 나온다
AutoCloseable
·
Language/Java
[Java]Autoclosable java6 이전까지는 close 메서드를 호출하여 안전하게 리소스를 닫아주어야 했다.​x//JAVA6 이전 ...Class.forName("com.mysql.jdbc");try { Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection(jdbcUrl, urerId, passWord); ps = conn.prepareStatement(sql);​ //.....​} catch (SQLException e) { e.printStackTrace();} finally { if (rs != null) { try { rs.close(); } catch (SQLException e) { e.printStac..
[Java]Class.forName
·
Language/Java
[Java]Class.forName Class.forNameJDBC 드라이버를 로드하는 코드를 보면 Class.forName을 사용하는 것을 볼 수 있다. 이 Class.forName의 의미는 무엇일까?Class.forName("com.mysql.jdbc.Driver");Connection conn = DriverManager.getConnection();코드를 살펴보면 리턴값을 받지도 않고 DriverManager의 getConnection메서드를 바로 사용할 수 있다. 또 forName의 인자로 패키지의 경로가 설정된 것을 볼 수 있다. 왜 이렇게 구현한 것일까? 각 JDBC마다 드라이버와 Connection의 구현은 다를 것이다. 각 DBMS마다 다른 API를 사용하여 DB에 연결할 경우 DBMS를..