웹어플리케이션에서 데이터의 유효성을 검사하기 위한 방법으로 Front단에서 Javascript를 이용해 사용하는 방법이 있고, Back-end에서 Validator 객체를 사용하는 방법이 있다.

커맨드 객체의 유효성을 검사하기 위해 Validator 인터페이스를 사용하는 방법에 대해서 알아보겠다.


먼저 Student 클래스를 만들어 필요한 데이터들을 클래스화 해준다.


먼저 Validator를 인터페이스한 클래스를 하나 만들어준다.

Validator 을 인터페이스에서 검색 한 후 2번째에 있는 것을 클릭해준다.


Validator 인터페이스를 받은 클래스는 다음과 같이 2가지 메소드가 자동으로 오버라이딩된다. 첫 번째 supports 메소드는 검증할 객체의 클래스 타입 정보를 명시해준다.

두 번째 validate 메소드는 parameter 객체를 두 개 받는데 첫 번째 파라미터는 무엇이 들어올지 모르기때문에 Object로 받는다. 두 번째 파라미터는 에러객체이다.


이제 Controller 에서 Validator을 사용하면 된다. 검증 시 에러가 있으면 로그인 되지 않고 에러가 없으면 로그인 성공 페이지로 이동한다.



ValidationUtils.rejectIfEmptyOrWhitespace(errors,"name","trouble");

Spring이 제공해 주는 메소드이다. 비어있거나 공백이면 에러에 name,trouble 값을 넣어준다.


================================================================================================================================================


이제 @Valid 어노테이션을 사용해 간단하게 유효성 검사하는 법을 알아보자.

제일 먼저 pom.xml 파일에서 dependency를 추가해야한다.

버젼은 5.2.4.Final 해도 된다. 


커맨드 객체 앞에 @Valid를 추가해주고 밑에 initBinder 메소드를 추가하면 알아서 spring이 알아서 에러를 찾아준다.


Spring framework GET/POST @RequestMapping에 대해서 알아봅시다.



GET과 POST 형식으로 데이터를 받을 때 간단히 RequestMapping 부분에 GET과 POST만 따로 적어주면된다.



----------------------------------------------------------------------------------------------------

@ModelAttribute 어노테이션을 이용하면 커맨드 객체의 이름을 바꿀 수 있다.


-----------------------------------------------------------------------------------------------------


리다이렉트(redirect)

서버안에서 redirect 를 할 수 있고


http:// 로 redirect 할 수있다.



자바 백준 1652번 누울 자리를 찾아라


 한가지 함정이 있다. 누울 자리가 있다고 해서 한줄에 한번만 누울 수 있는게 아니라 벽을 만나게 되면 여러번이고 누울 수 있다.



Spring framework form 간에 데이터 이동 - ①HttpServletRequest 클래스를 이용한 방법


controll 클래스에 해당 경로를 매핑 해준뒤에 httpServletRequest로 GET이나 POST 형식으로 데이터를 불러와 그것을 다시 model 객체를 이용해 view페이지로 이동시켜 준다.


------------------------------------------------------------------------------------------------------------------------


Spring framework form 간에 데이터 이동 - ②RequestParam 어노테이션을 이용

controll 클래스에서 RequestParam으로 GET이나 POST로 넘어온 데이터를 받는다. 그것을 다시 model 객체를 이용해 view로 넘겨준다.

------------------------------------------------------------------------------------------------------------------------


이와 같은 2가지 방법을 통해 데이터를 폼간 폼으로 이동할 수 있지만 데이터량이 많으면 매우 복잡하고 가독성이 떨어 질 수 있다. 

이것을 개선하기 위해 데이터(커맨드) 객체를 이용한다.



Member 클래스에 데이터들을 getter setter 해준다음 그 클래스를 커맨드 객체(Member)를 바로 넣어준다.

jsp에서 바로 불러와 처리를 할 수 있게 시스템 내에서 해준다.


Spring framework MVC 모델에서 Controller에 대해서 알아보자



@Controller 으로 어노테이션 해주면 이 클래스가 컨트롤러 클래스라는 것을 명시하는 설정이 된다.

@RequestMapping("경로")를 어노테이션 해주면 요청 경로로 지정되고 리턴으로 뷰페이지로 반환된다.


데이터를 이동할 때 model 객체를 이용하면 손쉽게 뷰페이지로 데이터를 이동 시킬 수 있다. 위에 방식은 파라미터로 데이터를 받는것이다


ModelAndView 타입의 메소드는 위와 같이 사용한다. ModelAndView 는 생성자와 뷰내임을 동시에 가지고 있기 때문에 반환하는 값을 객체로 만들었던 그 값을

반환해주면 된다.


클래스 위에 RequestMapping을 하면 메소드 위에 매핑한것과 경로를 더한뒤에 값을 찾아간다.

즉, 클래스 위 @RequestMapping("/board")   메소드 위 @RequestMapping("/write") 이면 두개의 조합 /board/write 로 경로를 요청한다.

Spring Framework 한글 적용

web.xml 파일에 들어가서

각 jsp 파일마다 

<%@ page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%> 

적어주면 된다.


'프로그래밍 > Spring Framework' 카테고리의 다른 글

Spring framework form 간에 데이터 이동  (0) 2018.08.07
자바 Spring framework MVC 모델 - Controller  (0) 2018.08.06
자바 Spring framework MVC 모델  (0) 2018.08.06
Spring AOP  (0) 2018.08.03
Spring Environment 객체  (0) 2018.08.02

스프링 MVC 모델의 전체적인 동작이다.


Client에서 DispatcherServlet으로 보내고 DispatcherServlet은 servlet-context.xml로 보낸다.


servlet-context.xml에서 controller로 보내는데 context에서 base-package를 스캔하게 된다.

모든 /로 들어온것은 전부 가로채는데 그 중에 <resources mapping~ />은 가로채지않게 된다.

'프로그래밍 > Spring Framework' 카테고리의 다른 글

자바 Spring framework MVC 모델 - Controller  (0) 2018.08.06
자바 Spring Framework 한글 적용  (0) 2018.08.06
Spring AOP  (0) 2018.08.03
Spring Environment 객체  (0) 2018.08.02
스프링 생명 주기와 범위  (0) 2018.08.01

자바 백준 2869번 달팽이는 올라가고 싶다


자바 백준 1075번 나누기

풀이: 뒷자리 두자리를 00으로 초기화 해준다음 1씩 더하면서 나누어 떨어지는 수를 찾으면 된다.


자바 백준 1057번 토너먼트


풀이: 첫번째 입력 받은 값의 경계값을 찾은 뒤에 그 경계값과 입력 받은 두 수의 값과의 연관성을 찾는다.

연관성의 경우의 수는 3가지이다. 

1. 입력 받은 두 수 중에 하나의 값이 경계값보다 작거나 같다. 나머지 값은 경계값보다 크다.

2. 입력 받은 두 수 모두 경계값 보다 작거나 같다.

3. 입력 받은 두 수 모두 경계값 보다 크다.


1 번의 경우의 수가 되면 답을 찾게 된다. 

2 번의 경우는 경계값을 나누기 2를 한다.

3 번의 경우는 경계값을 나누기 2 하면서 두 수를 경계값만큼 빼줘야지 다음 경계값에 대한 계산을 할 수 있다.


코드를 보면 이해하기 쉽다.



+ Recent posts