스프링 8

JAVA 누적 방문자 수 체크

첫번째 방법: Filter를 이용하는 방법 1. filter를 상위 컨텍스트(root context)에 등록 2. delegating filter proxy를 web.xml에 등록 3. web.xml에서 등록된 filter-name을 id로 등록 이렇게 되면 filter proxy는 톰캣이 관리하지만 실제 필터는 스프링이 관리함 = Spring에서 모든 component를 인젝션 받을 수 있음. dao를 injection 받아 DB에 등록 두번째 방법: Logging Framework를 이용 1. log4j에서 getLogger 해서 로그를 찍곤 했는데, jdbcAppender를 사용하면 logger 메서드 중에 자동으로 DB에 로그를 찍어준다. 2. 이방법을 위해선 logger jdbcAppender와..

WEB Application 2020.11.18

추상 클래스로 view 만들기, properties 파일 사용해 폴더 위치 지정하기

jsp를 사용하는 이유가 '응답데이터를 html로 내보내기위해'인데 이 다운로드컨트롤러는 jsp를 사용할 이유가 딱히 없음. 그러니 MVC패턴에 맞도록 @RequestMapping("/board/download.do") public String download( @RequestParam(name="what", required=true) int att_no, Model model) throws IOException, ServletException{ AttatchVO attatch = service.download(att_no); model.addAttribute("attatch", attatch); return "downloadView"; ..

스프링 프레임워크 AOP

OP: Oriented Programming 프로그래밍 방법론은 중복을 해결하기 위해 점점 발전해왔다. AOP(Aspect Oriented Programming) : 관심사의 분리! 개발자가 각자 관심사에만 따라서 개발. 핵심관심사(Core Concern)는 타겟으로, 부가 관심사(Cross-cutting Concern)는 advice로 만든뒤 타겟, 어드바이스를 pointcut을 기준으로 걸러낸다음 joinpoint에서 weave하는 것. 부가 관심사: 여러 모듈이 공통적으로 거쳐야하는 작업 (예: 로그, 인증, 보안, 트랜잭션 관리) 장점: OOP에서도 해결되지 않은 중복을 해결 가능 업무 로직이 실행될 때 (-> core concern, target) 언제, 어떤 파라미터로, 얼마만큼의 소요시간이 ..

스프링 Spring 프레임워크 jUnit과 연동하기

junit으로 테스트할 땐 서버를 실행되지 않는다. 하지만 dao를 주입받아 쓰려면 컨테이너객체가 생성되어야함 => 서버를 돌리지 않은 상태에서 컨테이너 객체를 생성하게 하는 어노테이션: @ContextConfiguration 이때 형성되는 컨테이너: 애플리케이션 context. 테스트할 dao가 웹 어플리케이션 컨텍스트의 하위 객체가 되어야함. @WebApplicationConfiguration + test할때 자동 롤백되어야함 . => AOP 적용해 @Transactional을 넣어주자. 컨트롤러는 request가 있어야함. Mock 객체를 사용하면 Mock req, Mock resp 만들 수 있음. =>Spring의 MVC test module을 사용하면 됨 import static org.spri..

자바 Spring 에서 serviceImpl NullPointerException 해결하기 (리스너 관련)

해당 코드는 serviceImpl의 생성자 안에 있고, serviceImpl은 상위 컨텍스트에 생성됨. 그러면 SampleListener보다 먼저 생성돼서 NullPointer 뜸 생성자 안에 있던 코드를 init() 메서드로 만들고, postConstruct 어노테이션을 사용해 생성 이후에 실행되도록 한다. 그 과정에서 SampleListener대신 자기 자신을 context로 참조할 수 있다. 그리고 그 context는 init()보다 먼저 DI되기 때문에 SampleListener가 없이 사용이 가능하다. SampleListener 는 ServletContext를 상속받은 리스너로서, 접속 유저 정보를 저장해놓는 작업을 수행한다.

스프링 프레임워크 설치 및 테스트 (Spring)

AOP(Aspect Oriented Programming)에 따른 트랜잭션 관리 가능 (AOP : annotation만 잘 선언해놓으면 됨. ) 의존성, 결합력은 낮추고 응집력은 높이기 가능 => 많은 일들을 해주는 Enterprise Framework docs.spring.io/spring-framework/docs/4.3.29.RELEASE/spring-framework-reference/htmlsingle/ 스프링은 IoC(Inversion of Control) container로서 역할 (= DI Container) www.egovframe.go.kr/wiki/doku.php?id=egovframework:rtea3.9 egovframework:rtea3.9 [eGovFrame] www.egovf..

WEB Application 2020.10.06

웹 프로그래밍 (front controller 패턴에 resolvers 더하기)

www.notion.so/techsignal/resolver-a0d7c594c3d74a79941a4d6113887490 여러분 그거 아시나요? 웹으로 접속하셔서 링크에 커서를 갖다대면 무슨 일이 일어나는지???!?!?!!? resolver Resolvers: www.notion.so 클릭 클릭! ReqParam 어노테이션을 사용하면 해당 컨트롤러 코드 내에서 req.getParameter()를 할 필요가 없어진다. T 타입 사용하기 상세검색을 하고 싶은데 어떤 타입으로 지정해야할지 모르겠다??? 1. 일단 PagingVO에선 T타입으로 선언해둔다 2. 그 안에 들어갈 변수가 뭐뭐 있는지 봄 3. prod_lgu, prod_buyer, prod_name... ProdVO의 변수들이다?! ->컨트롤러에서 P..

WEB Application 2020.09.23