728x90

Spring 26

Spring 다국어 처리

다국어 처리(국제화)는 하나의 페이지를 여러가지의 언어로 서비스하는 것으로 과거에는 언어별로 페이지를 다르게 제작하였지만 현재는 이와 같이 사용하지 않는다. -> 프레임워크의 다국어처리기능을 사용(별도 페이지 제작 안 함) 1) 메세지 파일 제작 파일의 확장자는 .properties로 생성 언어 선택을 Locale 정보로 수행하며 파일명에 언어에 해당하는 Locale 코드를 추가한다. ex) xxx_en.properties, xxx_ko.properties, ... 파일 내부에는 메세지 키+메세지 값을 작성한다. (영어를 제외한 나머지 언어는 유니코드로 작성) -> 유니코드 작성은 자동 지원해준다. 파일 생성 위치 소스/메인/리소스 -> message 패키지 생성 -> messageSource_en.pr..

Spring 2022.09.29

Spring 예외 페이지 설정

예외 페이지는 사용자에게서 예외가 발생하였을 때 예외 페이지로 이동하여 안내함으로 써 사용자 편의성을 증대시키기 위해 설정한다. 언제 발생하는가? ex) 불가능한 요청, 존재하지 않는 페이지 등등 에러 처리 - 에러 자체가 발생되지 않게 선처리(유효성 검사) 에러가 발생하더라도, 넘어갈 수 있게(try-catch) 처리 vs 에러 페이지 설정 - 에러는 발생할수있지만 에러 발생 시, 왜 발생했는지 -1 어디로 가야 하는지 안내 -2 (가야 하는 페이지) 에러 페이지 설정은 @과 xml로 할 수 있다. 1) @ 설정 DispatcherServlet-servlet.xml에 @을 앞으로 사용할 거라고 알려줘야 한다. (Namespace -> mvc) 이후 DispatcherServlet-servlet.xml ..

Spring 2022.09.28

Spring 이미지 업로드

[파일 업로드] 파일 업로드를 위해서는 다음과 같은 설정들이 필요하다. 1. VIEW 파일을 업로드하는 form 태그에 enctype="multipart/form-data"를 추가한다. 2. Command 객체(bVO) 정보를 받는 bVO 객체에 변수를 추가해 준다. private MultipartFile uploadFile; // 멀티파일 객체 3. Fileupload 라이브러리(.jar) 추가 -> pom.xml commons-fileupload commons-fileupload 1.3.1 4. MultipartResolver 설정 -> DispatcherServlet-servlet.xml 이미지 업로드 수행 순서 1) VIEW --데이터 전송-->> Command 객체에 세팅(bvo.setMF) (..

Spring 2022.09.27

2-Layered 아키텍처

기존의 Spring MVC를 기반으로 한 프로젝트의 순서는 1) xxx.do 요청 2) 서블릿 컨테이너 구동 -> DispatcherServlet을 생성 -> DS-servlet.xml을 로드해서 생성 -> 이러한 현재 과정이 일어나는 현재의 계층(layer)을 "프레젠테이션 레이어"라고 한다. 3) 스프링 컨테이너가 구동 -> Controller 객체들 생성 -> C 객체들이 Command 객체로 DAO 객체를 사용 -> DAO2를 사용하고 싶으나 @Autowired가 되어 있지 않아 사용이 불가능 현재 Controller의 모든 메서드는 DAO 객체를 직접 이용하고 있지만 Spring에서는 DAO 객체를 직접 이용하지 않고, 반드시 "비즈니스 컴포넌트"를 이용해서 DAO 객체를 다룰 수 있게 구성해야..

Spring 2022.09.26

Spring 다양한 @(어노테이션) 설정

@RequestParam (메서드에 인자로 사용) Command 객체에는 없는 파라미터를 Controller 클래스에게 전달해주기 위해 사용 ex) @RequestParam(value="searchCondition",defaultValue="TITLE",required=false)String searchCondition value="무엇을 받을지" defaultValue="값이 없을때 기본 값" required="필수 여부" String SearchCondition에 View에서 보내준 searchCondition이라는 name의 value 값이 들어간다. @ModelAttribute("설정한 이름") (메서드에 작성하거나 인자 앞에 붙여 사용) View 작업자 입장에서 화면을 구성할 때 칼럼을 알아야 ..

Spring 2022.09.23

Spring MVC2 .xml 설정 어노테이션으로 변경

@ 설정을 위해서는 스프링 컨테이너가 내가 설정한 패키지 범위를 scan 할 수 있도록 context 네임스페이스를 추가해야 한다. // 스캔할 범위를 설정해 주어야 한다. @Component() 진행 시 DAO류는 @Repository 서비스류는 @Service 서비스류와 같이 진행하였다. 컨트롤러류도 마찬가지로 @Controller로 객체화를 진행한다. @Controller는 DS가 인식하는 C 객체로 설정해주며 더 이상 implements가 필요 없어 오버 라이딩 강제가 필요 없다. 완전한 POJO가 되었기 때문에 메서드 시그니쳐의 변경 또한 가능하다. 기존 오버 라이딩 시 public ModelAndView handleRequest(HttpServletRequest request, HttpServ..

Spring 2022.09.22

Spring MVC2 DispatcherServlet.xml 설정

사용자가 *.do 요청을 하면 web.xml을 읽어 들이는 서블릿 컨테이너에서 서블릿 객체를 생성한다. 이때 web.xml에 등록되어 있던 기존에 내가 만들었던 DS를 스프링 프레임워크에 내장되어 있는 DS로 교체한다. 만약, ClassNotFound 에러 발생시 properties -> Deployment Assembly에 메이븐 디펜던시를 추가하여 해결한다. // 스프링에 내장되어있는 DispatcherServlet DispatcherServlet(등록할 서블릿의 이름) org.springframework.web.servlet.DispatcherServlet // *.do 요청이 오면 DispatcherServlet로 맵핑 DispatcherServlet(등록한 서블릿의 이름) *.do 스프링 프레임..

Spring 2022.09.21

MVC 패턴의 변화

1) main.jsp main.jsp에서 뷰와 컨트롤러의 역할을 전부 수행 2) main.jsp + ctrl.jsp .jsp 컨트롤러 파일로 뷰의 요청 수행 3) main.jsp + FrontController.java(서블릿) => MVC2 서블릿 컨테이너에게(==톰캣, 웹서버) *.do 요청에 대해서 FrontController 서블릿으로 올 수 있도록 매핑 설정을 함 -> web.xml or @WebServlet("*.do") 4) 3번의 MVC2의 과정을 스프링으로 구현 FrontController 역할을 하는 서블릿을 DispatcherServlet이라 한다. DS는 Action 역할을 수행하는 Controller 들을 호출해서 사용자의 요청을 처리 하지만 자신이 직접 C들을 호출하지 않고, H..

Spring 2022.09.20

스프링 JDBC 설정

기존 Util 패키지에 작성하던 JDBC.java 파일은 개발자가 직접 관리해야하는 코드가 많은 편으로 템플릿 메서드 패턴중 하나인 "JdbcTemplate 클래스"를 활용하여 applicationContext.xml 파일에 설정이 가능하다. 템플릿 메서드 패턴은 반복적인 로직을 가지는 부분을 캡슐화해 사용하는것이 목표로 코딩 순서가 정형화된 기술을 재사용하기 용이하게 모듈화 해놓은것을 의미한다. JDBC 설정 순서 1) 라이브러리 추가 - pom.xml 파일에 다음 설정을 추가한다. commons-dbcp commons-dbcp 1.4 org.springframework spring-jdbc ${org.springframework-version} 2) JdbcTemplate에서 활용할 DataSourc..

Spring 2022.09.19

[AOP] .xml 설정을 @(어노테이션)으로 변경하는법

.xml의 설정을 @(어노테이션)으로 변경하기 위해서는 스프링 컨테이너에게 AOP 설정을 @으로 변경할 거라고 를 통해 알려줘야 한다. 결합(aspect)을 위해서는 포인트 컷과 횡단 관심이 필요하다. 1) 포인트컷 설정 - 연결하고자하는 횡단 관심이 작성된 클래스에서 설정 가능 ex) @Pointcut("execution(아웃풋 패키지명.클래스명.메서드명.(인자))") 2) aop 조건 설정 - 수행할 메서드에 조건 설정 @Before("실행할 포인트 컷의 메서드") @After("실행할 포인트컷의 메서드") @Around("실행할 포인트컷의 메서드") @AfterReturning(pointcut="실행할 포인트컷의 메서드", returning="반환받을 객체명") @AfterThrowing(point..

Spring 2022.09.18
728x90