본문 바로가기

728x90
반응형

Spring 정리/Spring MVC 5

(24)
JSR-303 / JSR-383 JSR-303 어노테이션은 빈 객체에 주입되는 값의 유효성을 검사한다. properties에 [annotation이름.bean객체이름.변수명] 을 써서 등록한다. properties를 사용하기 위해서 ServletAppContext.java에 등록한다. @Bean public ReloadableResourceBundleMessageSource messageSource() { ReloadableResourceBundleMessageSource res = new ReloadableResourceBundleMessageSource(); res.setBasename("/WEB-INF/properties/error_message"); return res; } setBasename으로 등록했기 때문에, error_..
에러 메시지 커스터마이징 유효성 검사를 통해 오류를 검출할 때 그대로 출력하면 JSR-303 에러이다.(우리가 이전 시간에 했던 것) 기본 메세지말고 우리가 만든 메세지를 출력할 수는 없을까? codes[0]을 통해 [에러종류.빈이름.프로퍼티이름]를 확인할 수 있었다. @Bean public ReloadableResourceBundleMessageSource messageSource() { ReloadableResourceBundleMessageSource res = new ReloadableResourceBundleMessageSource(); res.setBasename("/WEB-INF/properties/error_message"); return res; } 메세지를 나타내기 위해서는 당연하게도 properties 파일을..
유효성 검사 client가 값을 입력할 때, 혹시 오류가 발생하는지 그 처리를 제대로 해 주었는지 확인하는 작업이다. @Valid를 사용한다. @GetMapping("/input_pro") public String input_pro(@Valid DataBean1 dataBean1, BindingResult result){ System.out.println(dataBean1.getData1()); System.out.println(dataBean1.getData2()); if(result.hasErrors()){ for(ObjectError obj : result.getAllErrors()) { System.out.println(obj.getDfaultMessage()); System.out.println(obj.ge..
Properties / Message 변하지 않는 값을 설정할 때 Properties를 기억하라 Help - install New Software - Add에 들어가서 PropertyEditor를 설치한다. [WebContet] 하위폴더에 있는 [META-INF], [WEB-INF], [resources] 에 더해서 [properties]를 하나 생성한다. 그 안에 data1.properties, data2.properties를 생성한다. 1. Properties를 Controller에서 사용하기 aaa.a1 = 100 aaa.a2 = 문자열1 bbb.a2 = 200 bbb.c3 = 문자열2 @PropertySource("/WEB-INF/properties/data1.properties") @PropertySource("/WEB-INF/pr..
RequestScope 빈 주입 Bean을 @Autowired를 통해서 자동주입 받을 수 있다. 스프링 코어에서 prototype(새로운 객체 생성)과 singleton(같은 객체에 반복)이 있다. Spring MVC에서는 request,session,application의 기능을 잘 사용해야 한다. *주입된 Bean은 요청 발생시 주입만 이루어지기 때문에!!! request에 자동으로 저장되지 않는다.!!! 따라서 jsp에 전달하기 위해서는 model을 통해서 전달해야 한다. Bean을 생성하는 방법에는 2가지가 있다. 1. @Bean을 이용한 생성 2. @Component를 이용한 생성 1. @Bean을 이용한 생성 @Bean @RequestScope public DataBean1 databean1(){ return new Data..
RequestScope - 새로운 요청이 발생해 응답결과가 브라우저로 전달 될 때까지 요청 정보가 담겨 있는 Request 객체를 사용할 수 있다. - HttpServletRequest 객체에는 서버 개발자가 필요에 의해 데이터나 객체를 저장할 수 있고, RequestScope 내에서 사용이 가능하다. redirect : request 객체 소멸 forward : request 객체 유지 HttpServletRequest Model @ModelAttribute 1. redirect @Controller public class TestController { @GetMapping("/test1") public String test1(HttpServletRequest request) { request.setAttribute("dat..
Redirect와 Forward 1. Redirect -클라이언트는 응답결과로 받은 요청주소를 직접 요청하게 된다. -브라우저가 요청하는 것이므로 주소창의 주소가 변경된다. -Redirect는 새로운 요청이 발생하는 것이므로 HttpServletRequest 객체는 소멸하고 새롭게 생성되며, HttpSession 객체는 그대로 유지된다. @GetMapping("/test1") public String test1(){ return "redirect:/sub1"; } @GetMapping("/sub1") public String sub1(){ return "sub1"; } 주소창에 마지막 경로는 새롭게 요청됬으므로 sub1이다. 2. Forward -코드의 흐름을 서버상에서만 이동한다. -브라우저는 서버에서의 흐름을 알 수 없기 때문에 주..
Form 커스텀 태그 Form태그 JSP로 표현을 한다면 코드양이 길고, JSTL을 사용하면 양이 줄어든다. Form에 어떻게 Bean을 주입할까? 1. @ModelAttribute로 받아 setter를 통해 일일히 다 설정하고 request로 넘기기 2. model.addAttribute("name", 객체)로 전달하기 @GetMapping("/test1") public String test1(@ModelAttribute UserDataBean bean){ bean.setUser_name("홍길동"); bean.setUser_id("abcd"); bean.setUser_pw("1234"); bean.setUser_postcode("12345"); bean.setUser_address1("address1"); bean.set..

728x90
반응형