목록Spring/忘れやすい概念 (16)
똑같은 삽질은 2번 하지 말자
스프링에서 말하는 "애플리케이션 컨텍스트"는 스프링이 관리하는 빈들이 담겨 있는 컨테이너라고 생각하시면 됩니다. 스프링 안에는 여러 종류의 애플리케이션 컨텍스트 구현체가 있는데, ApplicationContext라는 인터페이스를 구현한 객체들이 다 이 애플리케이션 컨텍스트입니다. 웹 애플리케이션 컨텍스트는 ApplicationContext를 확장한 WebApplicationContext 인터페이스의 구현체를 말합니다. WebApplicationContext는 ApplicationContext에 getServletContext() 메서드가 추가된 인터페이스입니다. 이 메서드를 호출하면 서블릿 컨텍스트를 반환됩니다. 결국 웹 애플리케이션 컨텍스트는 스프링 애플리케이션 컨텍스트의 변종이면서 서블릿 컨텍스트와 ..
일반적으로 프레임워크 기반의 웹 프로젝트를 보면 두개의 레이어 (Presentation Layer / Business Layer)로 나누어 시스템을 개발하는데, 이를 2-Layered 아키텍처 스타일 이라고 한다. 그리고 계층별로 해당하는 설정파일 applicationContext.xml(비즈니스 계층)/presentation-layer.xml(프레젠테이션 계층) 이 있다고 한다면, DispatcherSevlet이 생성되어 프레젠테이션 계층 설정 파일을 읽고 스프링 컨테이너 구동되며, Controller 객체들이 메모리에 생성된다. but, Controller 객체들이 생성되기전에 DAO,VO 같은 비즈니스 컴포넌트들을 메모리에 생성해야 하는데, 이때 사용하는 클래스가 ContextLoaderListen..
1. @RequestParam Commad 객체를 이용하면 클라이언트에서 넘겨준 요청 파라미터 정보를 받아낼 수 있다. but, 이를 위해서는 반드시 요청 파라미터와 매핑될 변수와 Setter 메소드가 Commad 클래스에 있어야한다. 그런데 Commnad 객체에는 없는 파라미터를 @Controller에서 사용하고 싶을때! 쓰는 @RequestParam public String getBoardList(@RequestParam(value="" defaultValue="" required="")String 변수이름) value -> 화면으로부터 전달될 파라미터 이름 defaultValue -> 화면으로부터 전달될 파라미터 정보가 없을 때, 설정할 기본값 required -> 파라미터 생략 여부 @Reques..
이제부터 한글로 데이터를 보냈을때 깨지는 현상을 고치기위해 할것 보통 jsp 파일의 설정부분인데 contentType는 서버에서 생성될 HTML의 캐릭터셋 즉, 네트워크로 보내기전 그 후 아스키코드로 변환되어서 건너온다. 이 때 따로 filter 설정을 안해주면 아스키코드값 그대로 데이터를 비즈니스 영역에 보내버리기 때문에 filter를 만들어서 utf-8로 변환되도록 설정해준다. (pageEncoding은 JSP 내의 Java 코드에 대한 캐릭터셋에 대한 정보) 요로코롬 해주고 주의할 것은 CharacterEncodingFilter- > request body encoding설정. POST 요청 parameter에 영향을 준다. 즉 GET 요청 에는 영향을 주지 않는다. GET 커버는 톰캣의 serve..
Controller 메소드가 실행되고 View 경로를 리턴하면 기본이 포워딩 방식이다. 그래서, 글 등록 후에 목록 화면이 출력되도 브라우저의 URL은 변경되지 않는다. 이렇게 넘기면 최종 URL은 /getBoardList.do 로 변경됨
Controller 객체에서 사용자의 요청(*.do)을 받을때 사용자가 입력하는 정보(이름,나이,성별등등)가 많거나 변경되는 상황 정보가 많으면 그만큼의 자바 코드가 필요해지며, 입력 정보가 변경될 때마다 Controller 클래스는 수정되어야 한다. but, Command 객체를 이용하면 이런 문제를 모두 해결할 수 있다. Command 객체는 Controller 메소드 매개변수로 받은 VO 객체라고 보면 된다. 위 코드와 같이 insertBoard 메소드에 parameter로 BoardVO vo를 선언하면 Spring 컨테이너가 insertBoard() 메소드를 실행할 때(Service 요청) Command 객체를 생성하여 넘겨준다. 결과적으로, 사용자 입력 정보 추출 VO 객체 생성, 값 설정을 모..