목록Backend/스프링 (19)
개발 무지렁이
myBatis-spring spring에서 ORM을 더 쉽게 사용할 수 있도록 만들어서 제공하는 lib 📌.myBatis-spring 주요 컴포넌트 - SqlSessionFactoryBean : (myBatis) SqlSessionFactory를 SqlSessionTemplate의 생성자에 전달한다. ⚠️. Spring Bean으로 등록해야한다. - SqlSessionTemplate : (myBatis) SqlSession을 미리 만들어놓는다. ⚠️. Spring Bean으로 등록해야한다. 🪛. Spring Bean 설정파일(beans.xml or myBatis-context.xml) (0) Bean으로 등록할 때, DataSource 정보와 myBatis Config 파일정보, Mapping 파일 정보..
💡. 서버 시작시, Spring webMVC 동작흐름 서버가 시작되면('WAS'가 올라가면서) 프로젝트가 실행(배포)되면 (0) 'web.xml문서'를 로딩..(listener, filter, servlet)이 순서대로 등록 및 생성된다. ⚠️. BeanFactory 인터페이스를 기능확장시킨 'context(ApplicationContext)' 로딩.. (0-1) 먼저, listener의 'root-context.xml문서' 로딩..(Business Logic에 해당하는 DI Container 생성, bean 등록 & DI주입) (0-2) filter (향후 이 인터페이스의 구현체가 servlet으로 향하는 URL요청주소를 가로채서 사전처리한다.)..
🦣. Spring maven기반의 webMVC directory 구조 - src/main/webapp/: root영역(web content) - src/main/webapp/resources: css, js, img - src/main/webapp/WEB-INF/spring: root-context.xml문서,... - src/main/webapp/WEB-INF/views: .jsp문서 - src/main/webapp/WEB-INF/: web.xml문서 📌. WEB-INF : 웹에서 노출되지 않는 정보 : WEB-INF 하위에 있는 파일은 직접실행이 안된다. (ViewResolver를 통해서 연다, Controller를 들러야 동작한다.) 페이지 이동 시, 항상 절대경로를 앞에 붙여주는 것을 권장 기준 ..
@PathVariable 경로를 변수처럼 쓰겠다. name은 넘기지 말고, 자원만 넘겨라. (URL 요청주소 간소화) @Controller public class PathVariableController { @RequestMapping(value = {"/{type}/{id}.do"}) public void test(@PathVariable String type, @PathVariable String id) { System.out.println("PathVariableController의 test call..."); System.out.println("type: " + type); System.out.println("id: " + id); } } @RequestParam 전송된 parameter의 nam..
파일 업로드 컴포넌트 MultipartResolver (구현체: CommonsMultipartResolver) ⚠️. 파일을 업로드할 때, method는 반드시 post여야한다. (get은 길이제한이 있기 때문에) [UploadController.java] @Controller public class UploadController { @RequestMapping("/upload.do") public String upload(UploadDTO dto, HttpSession session, Model model) { try { // 저장할 폴더의 위치 가져오기 String saveDir = session.getServletContext().getRealPath("/WEB-INF/save"); Multipar..
예외처리 annotation, @ExceptionHandler @ExceptionHandler 메서드를 만든 controller 영역에서만 유효함. (특정 컨트롤러에만 국한된다.) @Controller public class ExceptionController { private static final Logger logger = LoggerFactory.getLogger(ExceptionController.class); @RequestMapping("/exception.do") public ModelAndView ex(String no) { logger.info("no: " + no); int converNo = Integer.parseInt(no); int result = 100 / convertNo;..