티스토리 뷰

#커맨드 객체 값 검증하기

  • 검증(Validation Check)을 위해서 Annotation을 추가한다.

  • @Email, @NotEmpty 등이 있다.

  • @Valid 라는 Annotation을 적으면 결과를 Errors로 받을 수 있다.(반드시 @Valid와 Errors는 붙어 있어야 한다. 순서는 상관없다)

  • errors는 자동으로 Model에 포함되어 있어서 jsp로 바로 전달이 된다. 즉, 굳이 view.addObject 해서 errors를 넣어줄 필요가 없다는 것이다.

  • jtsl 중 core library를 선언하듯이, <%@ taglib prefix=”form” url=”http://www.springfraemwork.org/tags/form” %> 라는 taglib을 적어주면 커맨드 객체 값을 검증할 수 있다.

  • applicationContext.xml도 수정해주어야 한다.



#Spring이 제공하는 주요 애노테이션

  • 잘 사용하지 않는다.

  • @NotNull(파라메터가 전달 되었는지 아닌지), @Size(숫자의 값이 지정한 값 이상이자 이하인지) 등이 있다.



#Hibernate Validator 가 제공하는 추가 애노테이션

  • Spring이 제공하는 주요 애노테이션보다 실용적으로 사용할 수 있다.

  • @NotEmpty, @NotBlank, @Length, @Range, @Email, @URL 등이 있다.



#예외처리

  • 원래 에러들은 정보를 보여주면 안된다. 해커들에게 정보를 제공해주는 셈이기 때문에!

  • 그래서 에러가 발생하면, 모든 예외들을 처리할 수 있는 클래스를 만들어주고, 예외들 중에서 RuntimeException으로 발생한 것들을 @ExceptionHandler가 처리해준다.

  • Spring에서는 예외를 그대로 보여주는 것이 아니라, error 페이지에 간략한 정보와 함께 반환해서 보여줄 수 있다.(ex. 100번 이상 파일 다운로드를 할 수 없다, 다운로드 가능 시간을 초과했다 등)

  • Spring이 없을 때는 에러가 발생했을 때 어떻게 처리했을까?

→ web.xml에 ‘Exception의 종류에 따라서 이런 페이지를 보여줘라’ 라고 개별적으로 정의할 수 있다.



#Static File 설정

  • CSS, JS, Image 등의 자원은 파일이 존재하는 URL 그 자체로 사용된다. 때문에 http://localhost:8080/js/jquery.js 이런 식의 URL로 요청을 해야하는데 이런 요청은 MVC의 DispatcherServlet을 판단해 Controller에서 RequestMapping 애노테이션을 검색하게 된다. 즉, 우리가 원하는 JS 파일을 얻을 수 없고 계속 404 에러만 발생한다.

  • 때문에 CSS, Javascript, Image 같은 것들은 따로 URL을 주어야 하는데, 이런 기능을  mvc:resources 가 제공해준다.


#실습 : 리다이렉트 처리하기

  • 세션에 정보를 담아서 null이 아닐 경우 home으로 리다이렉트 처리한다.

  • 리다이렉트는는 response.sendRedirect 와 같이 대량의 데이터를 보낼 수 없다. 즉 ModelAndView를 가지고 데이터를 보낼 수 없기 때문에 String으로 쓰고, 데이터를 보낼 경우에는 세션에 정보를 담아서 보내야한다.


  • login.jsp에서 데이터 입력 후, 다시 login.jsp로 돌아가면 home 으로 리다이렉트 된다.




#실습 : 커맨드 객체 값 검증과 에러메시지

  1. pom.xml 수정

  • Dependencies → Add → Validation-api 추가

  • Dependencies → Add → hibernate-validation → 5.2.4. Final 추가




2. Command 객체 수정

  • @NotNull은 파라메터 자체가 없을 때이고, @NotEmpty는 key는 있지만 value가 없을 때를 말한다. 그래서 @NotNull 을 @NotEmpty로 바꾸어주어야 에러 메시지를 확인할 수 있다.



3. Controller 수정

   



     1) @Valid, Errors 를 추가해준다. (반드시 valid 바로 뒤에 errors가 나와야한다.)

2) errors는 자동으로 Model에 들어가기 때문에 ModelAndView로 적어준다.

3) 에러가 있다면, login 페이지로 간다.

4) 에러가 없다면 home 페이지로 간다.


4. applicationContext.xml 수정


5. login.jsp 수정


  • 에러를 보고싶다면, path를 준다. (name과 path는 같아야한다.)


6. 실행결과

  • 아무것도 입력하지 않고 submit 버튼을 누르면


이렇게 나온다.


  • memberNumber와 같은 경우는 input 이 String이라서 지정하지 않은 에러가 나는 것.

  • F12를 눌러서 소스보기 하면 commandName 이 id로 바뀌어서 나오는 것을 확인할 수 있다.


공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함