반응형

2018/09 50

Java Dynamic Proxy

다이나믹 프록시란메소드 인터셉팅을 통해 부수적인 코드를 삽입할 수 있는 기술, Spring AOP에서도 사용한다.원래객체에 부수적인코드가 합쳐진 새로운 객체가 프록시 객체가 된다. 사용예)1. 먼저 Proxy로 사용할 클래스에 대한 인터페이스를 정의한다.1234567class interface Computer { public void boot(); public void prepareGUI(); }cs 2. 정의한 인터페이스를 구현123456789101112131415161718192021class ComputerImpl implements Computer { @Override public void boot() { System.out.println("현재 부팅이 진행중입니다..."); } @Override..

Back-End/Java 2018.09.17

자바의 인자 전달 방식은 Call by value다.

자바에서는 인자를 전달할 때 값을 전달한다. 예를들어 public void methodA(SomeClass param) { param = new SomeClass();} public static void main(String[] args) { SomeClass instance = new SomeClass(); methodA(instance);} 위와 같은 상황이 있다고 가정하고 결론부터 얘기하면 methodA를 실행한다고해서 main에 있는 instance에 새로운 SomeClass객체가 할당되지 않는다. methodA에 인자로 전달된 param은 분명 메인에 instance의 주소값을 가지고 있고, 그 주소값을 통해 instance객체에 대한 제어를 할 수 있는 것은 분명한 사실이다. 하지만 param..

Back-End/Java 2018.09.17

BlockingQueue 정리

멀티 스레드 환경에서 Queue는 생산 및 소비의 구조에 필수적인 자료구조이다.여기서 우리는 BlockingQueue라는 interface를 구현한 객체를 가져다 쓸 수 있다. Block 이라는 것은 먼저 무엇일까? '막는다'는 뜻이다.Queue가 꽉찼을때의 삽입 시도 / Queue가 비어있을때의 추출 시도를 막는 다는 것이다.이 자동으로 '막는' 기능이 있어 BlockingQueue 의 구현체는 모두 Thread-safe 하다. BlockingQueue의 종류 1) ArrayBlockingQueue배열로 구현된 큐로 생성시 최대 크기를 인자로 준다. 선택적으로 공평성 정책을 두어 block된 thread들의 순차적 대기열 생성대기열의 순서는 보장되지 않지만 공평성을 따지기 때문에 특정 thread의 기..

Back-End/Java 2018.09.17

JSP Servlet 에서 Image 응답 보내기

HttpServletResponse 객체를 이용한다. 123response.setContentType("image/jpeg");byte[] image = IOUtils.toByteArray(new FileInputStream(new File("이미지파일경로")));response.getOutputStream().write(image);Colored by Color Scriptercs 위와같이 response객체를 이용해 이미지를 byte[] 형태의 데이터로 보내면 브라우저에 이미지 자체가 보인다. IOUtils를 사용하기 위해서는 maven사용자는 아래 dependency를 추가하면 된다. 12345 commons-io commons-io 2.4cs

Back-End/JSP 2018.09.17

JSP Servlet 이클립스에서 작업할 때 이미지 경로 문제

처음엔 이클립스 상에서 폴더 만들고 그 안에 이미지가 업로드 되게 한 후 테스트 진행했다. 아무리 해봐도 이클립스 프로젝트를 새로고침 해주지 않는 이상 절대 한방에 이미지가 안보였다. 알고보니 이클립스 프로젝트 폴더는 워크스페이스 폴더고, 실제로 배포되는 진짜 경로가 따로 있다는 것을 알게됐다. 그래서 이클립스 프로젝트 폴더 경로로 이미지를 업로드하니 당연히 실제 배포 경로엔 이미지가 없었고, 새로고침 할 때 그 때 프로젝트 폴더로 배포가 돼어 이미지를 볼 수 있는 것이었다. 그 경로는 HttpServletRequest객체.getServletContext().getRealPath("/") 메소드로 얻어올 수 있다. 업로드를 저 경로에 해주면, 이미지도 제대로 보인다.

Back-End/JSP 2018.09.17

JSP 란?

JSP는 Java Server Page의 약자로 동적인 웹페이지를 만드는 프로그래밍 기술이다. Servlet도 같은 목적이지만 방법에 있어 다르다. Servlet은 .java확장자를 갖는 자바파일이다. 웹브라우저에 요청이 있을때 doGet이나 doPost등의 메소드를 통해 보여줄 웹페이지의 html코드를 동적으로 만들어 보내준다. 하지만 이 방법은 이전 포스트에서 얘기했던것처럼 웹페이지 규모가 커질수록 코드가 복잡해진다. 그에 비해 JSP는 .jsp 확장자를 갖는 파일로, html코드 내에 자바코드를 삽입하는 것이다. 즉 Servlet과는 구현방법이 반대이다. 하지만 페이지를 만들어내는데에 있어 Servlet으로 하는 방법보단 훨씬 간단하게 작업할 수 있다. JSP의 동작 방식은 아래와 같다. 1) 웹브..

Back-End/JSP 2018.09.17

서블릿 초기화 파라미터(ServletConfig)

서블릿이 초기화 될 때 인자들을 줄 수 있으며 그 방법은 크게 2가지가 있다. 1. web.xml을 통한 설정 web.xml내에 서블릿은 태그로 표현되며 등 속성을 갖고있다.여기에 이라는 태그를 이용해 서블릿의 초기화 인자를 줄 수 있다.은 내부에 , 태그가 있어 각각 초기화 인자의 이름, 값을 표현한다. 서블릿이름클래스이름 인자이름 값 위와 같이 설정된 초기화 인자는 서블릿의 getInitParameter("인자이름")을 통해 그 값을 가져와 사용가능하다. 1) 테스트할 서블릿 만들기 2) web.xml에 등록 서블릿 등록 후 태그를 통해 초기화 인자 지정해주고, /initTest로 매핑 3) 서블릿에서 초기화 인자 가져와서 처리내용 구현 getInitParameter는 HttpServlet에서 상속받..

Back-End/JSP 2018.09.17

JSP Servlet Context 단위 공유 파라미터

서블릿 파라미터 설정은 태그 내에 으로 할 수 있다. 하지만 이렇게 각각 서블릿에서 사용되는 파라미터 대신Context단위로 파라미터 설정하여 여러 서블릿에서 공유하여 사용될 수 가 있다.방법은 web.xml에서 태그를 이용하는 것이다. conParamconSharedValue param-name, param-value는 과 동일하다. 저렇게 web.xml에 선언한 context단위 파라미터는 ServletContext객체를 통해 접근할 수 있는데, 서블릿에 getServletContext() 메소드로 얻어올 수 있다. getServletContext().getInitParameter(""); 위와 같이 context객체를 통해 getInitParameter메소드 호출하는것은 servlet 파라미터 가져..

Back-End/JSP 2018.09.17