본문 바로가기

dev/Spring49

[Spring] Servlet의 발전과정을 탐구해보자 - 탐구단계 1단계 : MethodCall 클래스를 통해서 ModelController의 메서드를 실행시킨 후 출력한다. - 1. HashMap 객체를 생성 ( Controller의 작업 결과를 저장할 객체 생성) - 2. 실행할 메서드를 가지고 있는 Controller 객체를 생성한 후 메서드를 실행 * 매개변수로 처리결과를 저장할 MAP을 넣어준다. - 3. mc.main(map) 의 실행결과로 "txtView1" 를 리턴해주고, 처리결과는 map에 저장된다 * call by reference로 결과값이 map에 저장된다. - 4. render(map,viewName); 를 통해서 출력해준다. * map에는 처리결과가 저장되어있고, viewName에는 출력페이지 이름이 저장되어 있다. * Scanner를 통해서 .. 2022. 5. 22.
[Spring] Private한 메서드 호출 자바의 접근 제어자 Private default protect public 같은클래스 O O O O 같은패키지 O O O 자손클래스 O O 전체 O 자바의 접근 제어자에 따르면 현재 PrivateMethodCall 클래스에서 Hello 클래스의 main() 메서드를 실행 할 수 없어야 한다. 하지만 Private한메서드를 호출할 수 있는 방법이 있다. 그방법은 다음과 같다. 1. Class 객체의 forName(String str) 를 통해서 Class 객체를 생성해준다. // Class helloClass = Class.forName(~); 2. 생성된 객체를 통해서 Hello 객체를 생성해 준다. // Hello hello2 = (Hello)helloClass.newInstance() 3. 1에서 생.. 2022. 5. 22.
[Spring] MVC 패턴 - 관심사의 분리 - 현재 getYoil 을보면 3부분으로 나뉘어 져있다 1. 입력 / 2. 작업 / 3. 출력 이각 부분을 관심사라고 한다. => 즉 해야할 작업 main() -> 3개의 관심사를 가지고 있다. ""OOP 5대 설계의 원칙 SOILD 1. SRP(단일 책임의 원칙) ==> 하나의 메서드는 하나의 책임만 가진다. 책임 == 관심사 "" 즉 main()은 관심사를 분리해야 한다. 분리 1. 관심사의 분리 2. 변하는것과 (자주)변하지 않는 것의 분리(Common code/ Uncommon code) 3. 공통 코드의 분리(중복 코드) 1) 입력 - Request.getParameter 2) 처리 3) 출력 2) 처리 3) 출력 1) 입력 - Request.getParameter 2) 처리 3) 출력 ===>.. 2022. 5. 22.
[Spring] HTTP/ TOMCAT 전반적인 내용 만약 1대의 PC에 여러개의 서버를 가지고 있다면(Email Server, File Server, Web Server) 요청을 어떻게 받냐면 어떤 서버에 요청을 보내는지 확인하기위해 포트 번호를 적어 줘야 한다. 웨서버의 경우 :80 인데 80의 경우는 생략이 가능하다. 111.22.33.44:80 -> 111.22.33.44 로표현가능 클라이언트가 포트번호를 붙야줘야 하는데 그렇다면 서버는 이미 해당 포트번호와 binding 되어 있어야 하며, 서버는 Listening 상태로 기다리고 있다. 포트 번호는 0~1023 번까지 예약되어 있고 그 이상은 65535개의 포트를 사용 할 수 있다. Web Server : Web을 Service 한다. WAS란 : Web Application 을 Service 한.. 2022. 5. 20.
[Spring] HttpServletRequest, HttpServletResponse * interface 간의 상속은 extends * class 간의 상속도 extends, extends는 1개 밖에안되며, * class 가 interface를 상속할때는 implements를 사용한다. Spring 에서 HttpServletRequest, HttpServletResponse 두 객체는 클라이언트가 -> 서버로 요청하는 것과, (HttpServletRequest) 서버 -> 클라이언트에게 답변을 보내는 것을 활용할때 사용한다. HttpServletReqest를 통해서 얻을수있는 정보들은 많은것들이 있다. 사용자가 서버에게 "http://localhost:9090/ch2//requestInfo" 으로 요청을 했다고 생각하면, 아래와 같은 메서드들로 통해서 얻을수 있는 데이터들이 있다. 또.. 2022. 5. 19.
[Spring] HttpServeltRequest, HttpServeltResponse, Session 로그인 로그아웃시 세션 생성 및 세션 삭제 방법.. 오랜만에 구현하려고 했더니 생각이 안나서 다시 정리해봤다. 웹브라우저에서 클라인언트로부터 서버로 요청이 들어오면 서버에서는 HttpServletRequeset가 생성되며, 요청정보에 있는 PATH로 맵핑된 서블렛에게 전달된다. 즉 Client가 Server로 요청을 보내면 해당 Client의 요청에 맞는 Servlet으로 데이터가 전달되는데 해당 데이터를 Server 측에서 HttpServletRequest로 요청을 받아 들일수 있다. 해당 Client의 요청 데이터를 HttpServletRequest res의 getParameter("변수명") 으로 받을수 있다 String value = res.getParameter("name"); 또한 Model을.. 2022. 3. 10.
[Spring] Bean 생성 Bean 설정을 하면서 Bean 생성이 뭐 어떻게 되는거지 라는의문점이 생겨서 직접 JAVA로 Bean을 생성해 봤다. 일반 Bean의 속성에 대해서 알아보자면 class : 정규회된 자바 클래스 이름 id : bean의 고유 식별자 scope : 객체의 범위(Singleton, Prototype) -singleton : 하나의 Bean정의에 대해 Spring IocContainer 에서 단 하나의 객체만 존재, (default : singleton) -prototype : 하나의 Bean 정의에 대해서 다수의 객체가 존재할 수 있음 constructor-arg : 생성자에 전달할 인수 property : 생성시 Bean setter에 전달할 인수 init Method와 Destory Method 첫번째.. 2022. 3. 4.
[JUnit] JUnit 사용하여 단위테스트 하기 JUnit을 사용하기 위해서는 dependecy를 추가해줘야 한다. dependecy를 추가해주는데 spring-test를 추가해주는데 이때 version을 선택해줘야 하는데 이때 spring의 버전과 동일하게 맞춰줘야 한다. 이렇게 dependency를 추가하면 @Runwith 어노테이션과 @ContextConfiguration을 사용할 수 있다. @RunWith(SpringJUnit4ClassRunner.class) @RunWith는 JUnit 프레임워크의 테스트 실행방법을 확장할 때 사용하는 어노테이션이다. SpringJUnit4ClassRunner라는 클래스를 지정해주면 JUnit이 테스트를 진행하는 중에 ApplicationContext를 만들고 관리하는 작업을 진행해준다. @RunWith 어노.. 2022. 3. 2.
[Spring] Controller Exception처리 Controller 작성시 예외사항을 고려하면 처리해야할 사항이 많아 지는데 처리하는 방법으로 @ExceptionHandler와 @ControllerAdvice를 이용한 처리 @ResponseEntity를 이용한 예외메시지 구성 이있다. @ControllerAdvice - AOP(Aspect-Oriented-Programming)를 이용하는 방식으로, 공통적인 관심사(coss-concern)는 분리하자는개념으로 공통적인 예외사항에 대해 @ControllerAdvice를 이용하여 분리하는 방식입니다. @ControllerAdvice는 해당 객체가 스프링 컨트롤러에서 발생하는 예외를 처리하는 존재임을 명시하는 용도로 사용하며, @ExceptionHandler는 해당 매서드가 ()들어가는 예외타입을 처리함을 .. 2022. 1. 20.
[Spring] file-Upload Spring file upload Maven Repository 에서 commons-fileupload 를 추가한다. Servlet-context.xml 설정을 추가한다. Bean을 추가해주는데 maxUploadSize는 한번의 Requset로 전달될수 있는 최대의 크기를 의미하며, maxUploadSizePerFile은 하나의 파일 최대크기 maxInMemorySize는 메모리상에서 유지하는 최대의 크기를 의미한다. 만약 이크기 이상의 데이터는 uploadTempDir에 임시 파일의 형태로 보관된다 절대경로를 이용하려면 URI 형태로 제공해야 하기 때문에 " file:/ " 시작하도록 합니다. defaultEncoding은 업로드하는 파일의 이름이 한글일 경우 깨지는 문제를 처리한다. jsp 에서 fo.. 2022. 1. 20.