Spring

· Spring
WebApplicationContext(DispatcherServlet)설정파일은 mvc-servlet.xml이다.Controller단 관련 빈들을 등록해준다.즉, mvc-servlet에서는 @Controller를 스캔하도록 하면된다.물론 @Controller뿐만아니라 Controller 단에서 사용하는 여러 빈들을 등록하면된다. 근데 이런 빈들은 각각의 역할이 있기 때문에 단순히 빈 등록 방법만 하기보다는이 DispatcherServlet이 어떤식으로 동작하는지를 알아야한다. 그 후 mvc-servlet.xml 내용을 살펴보자.   기본적으로 우리가 만드는 Controller는 다음과 같은 형태를 띈다.@Controllerpublic class FreeController {@RequestMapping(..
· Spring
Spring의 DI 컨테이너 BeanFactory 만들어보기BeanFactory는 스프링이 빈을 생성하고 의존관계를 설정하는 기능을 담당하는 가장 기본적인IOC 컨테이너를 말한다. 이 BeanFacotry를 구현한 많은 컨테이너를 제공하고 있고개발자는 원하는 컨테이너를 선택해 빈을 관리하면 된다.그 중 많이 선택하는 방식이 @Annotation기반에   @Controller, @Service, @Inject 등을 붙인 방식이다. 여기서는 Reflections를 이용해  @Controller, @Service, @Inject 가 붙은 클래스들을 DI 방식을 통해 빈 등록하는 걸  구현해본다.  DI는 생성자 DI만 생각한다.스프링에서처럼 다양한 기능을 제공하는 것이 아닌 단순히 빈을 생성하는 기능만 구현한..
· Spring
@RequestParam @RequestParam은 1개의 HTTP 요청 파라미터를 받기 위해서 사용한다. @RequestParam의 required 속성은 기본값이 true이다. 요청 파라미터의 값이 없다면, 에러가 발생한다. 요청 파라미터가 필수가 아닌 경우에는 required 속성을 false로 한다. 이때는 파라미터의 값이 없다면 에러가 발생하지 않고 null값이 들어간다. int, long 등 null값이 들어갈 수 없는 변수일 경우도 에러가 난다. @RequestMapping("/studentView") @ResponseBody public String studentView(@RequestParam(required = true) Long id){ //요청에 파라미터가 없으면 에러가 난다. re..
· Spring
Person 클래스@Getter@Setter@ToStringpublic class Person { private String name; private int age;}    태그에서  데이터를 전달해보자.    @RequestParam,@ModelAttribute,@RequestBody 차이스프링에서 객체-파라미터 매핑은 요청상황이나 응답상황 모두 MessageConverter가 담당한다.상황에 따라 스프링이 적절한 MessageConverter의  구현체를 통해 객체-파라미터 매핑을 한다.요청에서 @RequestParam, @ModelAttribute가 붙은면 FormHttpMessageConverter가,@RequestBody가 붙으면 MappingJacksonHttpMessageCon..
· Spring
일반적으로 개발자로서 컨테이너를 검색하면 WEB Container, Servlet Container, Spring Container 등이 나온다.이 컨테이너들을 이해하기 위해서는 컨테이너가 뭔지를  이해해야한다.일반적인 IT에서의  컨테이너는 여기를 참고하자. https://cloud.google.com/learn/what-are-containers?hl=ko 컨테이너란?  |  Google Cloud컨테이너는 어떤 환경에서나 실행하기 위해 필요한 모든 요소를 포함하는 경량 소프트웨어 패키지입니다.cloud.google.com     Spring 컨테이너란 ApplicationContext를 스프링 컨테이너라고 합니다.   ApplicationContext는 인터페이스입니다.이 ApplicationCon..
https://brilliantdevelop.tistory.com/125?category=1018911에서 FreeBoard테이블 엑셀 다운로드를 하였다. 이제 Member테이블에서도 엑셀 다운로드를 하려고 한다. Controller에 다음과 같이 member에서의 excel다운로드기능의 메소드를 추가하려고 한다. ExcelControoler의 excelDownloadMember 메소드 @RequestMapping("/member/excelDown") public void excelDownloadMember(HttpServletResponse response, @ModelAttribute("searchVO")SearchVO searchVO , @ModelAttribute("searchJob") Strin..
POI란 아파치 소프트웨어 재단에서 만든 라이브러리로 마이크로소프트 오피스 파일을 자바 언어로 읽고 쓰는 기능을 제공한다. 마이크로소프트의 excel 파일은 '.xls'와 '.xlsx'이 있다. 이 2개의 차이는 xls : EXCEL2003이전 형식 xlsx : EXCEL2007이전 형식 이다. 이 2개의 excel파일형식에 따라 poi lib도 2개가 존재한다. 이 글에서는 xlsx만 다루도록 하겠다. pom.xml에 dependency를 추가하자. (나는 xlsx만 할 거기 때문에 poi-ooxml dependency만 추가하면 된다. org.apache.poi poi-ooxml 3.7 POI의 주요 메소드 : // 워크북 생성 XSSFWorkbook wb = new XSSFWorkbook(); //..
JQuery.load()는 Ajax의 일종이다. 서버에서 데이터를 로드하고 반환된 HTML을 일치하는 요소에 배치합니다. 이는 /about/chProfile.wow에 요청에 대한 결과화면이다. aboutHome.jsp 창희프로필 창희의술 창희의 피아노 이는 /about/aboutHome.wow에 대한 결과화면이고 jquery.load로 /about/chProfile.wow를 요청해 그 결과를 ".tab-content" 태그에 배치하였습니다. 그래서 보통 jquery.load 에서는 해당 요청에 대한 결과가 특정 화면(html) 일 때 사용합니다. jQuery .load() 메소드 사용법 .load( url [, data ] [, complete ] ) 반환값: jQuery - url : 데이터를 받을 U..
파일 다운로드 현재 freeView에서 다음과 같이 파일이 2개가 있다. 이를 누렀을 때 다운로드가 되도록 해보자. freeView.jsp의 첨부파일 태그를 보면 다음과 같이 되어있다. 첨부파일 파일 ${st.count} ${f.atchOriginalName} Size : ${f.atchFancySize} Down : ${f.atchDownHit} 여기서 주목할건 태그밖에 없다. 태그의 target 속성의 "_blank"는 새창을 연다. 즉 위 태그는 새창을 열면서 서버:포트/contextPath/attach/download/${f.atchNo} (localhost:8080/contextPath(없으면 생략)/attach/download/첨부파일번호)로 요청한다 우리는 이 요청에 맞는 컨트롤러를 만들고 ..
파일업로드 이해하기 웹에서는 이 클라이언트/서버 간 요청/응답을 HTTP 프로토콜로 진행한다. HTTP에서는 파일도 지원해준다. 파일업로드란 클라이언트가 요청에 파일을 포함하고 서버가 요청받은 파일을 처리하는 과정의 일환이다. 클라이언트 : "서버야, 나 Request보낼 때 파일도 포함시켜 보낼게. 이거 서버에 저장해줘" 서버 : "OK. 어디보자. Request에 파일 있군. 알았어 잘 처리했어." 의 과정이다 . 물론 위의 대화를 HTTP프로토콜에서 처리해야 되는데 이게 생각보다 어렵다. 우선 파일업로드를 위해선 다음의 3가지 규칙을 꼭 지켜줘야 한다. (파일을 선택해야되니까..) 태그 method는 POST (밑에서 설명) 태그 enctype=multipart/form-data (밑에서 설명) M..
기발개발
'Spring' 카테고리의 글 목록