6. package com.starpl.study.base.aop;
public class GlobalArgumentResolver implements WebArgumentResolver {
@Override
public Object resolveArgument(MethodParameter methodParameter,
NativeWebRequest webRequest) {
if (UserSession.class == methodParameter.getParameterType()) {
HttpSession session = (HttpSession) webRequest.getSessionMutex();
if (session != null) {
UserSession userSession = (UserSession) session.getAttribute("userSession");
if (userSession != null) {
return userSession;
} else {
return new UserSession();
}
}
}
return UNRESOLVED;
}
}
7. package com.starpl.study.base.aop;
public class RequestInterceptor extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response,
Object handler) throws Exception
{
HttpSession session = request.getSession();
UserSession userSession = (UserSession) session.getAttribute("userSession");
if (userSession != null) {
request.setAttribute("_USER", userSession);
} else {
request.setAttribute("_USER", userSession = new UserSession());
}
return true;
}
}
8. § 확인 : 시스템 구성 단위가 목표한 대로 동작하기 위한
작업으로, 시스템의 모든 계층에 꼭 필요함
§ JSR 303 Bean Validation
§ 도메인 객체를 확인하기 위한 Java 표준 기술
§ 어노테이션으로 확인 규칙을 명시
§ hibernate-validator-4.2.0.Final.jar
§ validation-api-1.0.0.GA.jar
§ 스프링 폼 태그와 연동
10. package com.starpl.study.model.domain;
public class UserJoinCommand
{
@Length(min = 4, max = 16) private String userId;
@Length(min = 4, max = 16) private String userName;
@Length(min = 4, max = 16) private String nickName;
@Length(min = 4, max = 16) private String userPassword;
@Length(min = 4, max = 16) private String userPassword2;
@Email @NotBlank private String email;
// getter, setter 정의
}
11. @RequestMapping(value = { "/join" }, method = RequestMethod.POST)
public String joinUser(HttpServletRequest request, Model model,
@Valid UserJoinCommand userJoinCommand, BindingResult result)
{
// @Valid 수행 후 에러가 있으면
if (result.hasErrors())
{
// 다시 가입폼으로 보내줍니다.
return viewBase + "/join";
}
…… // 이상이 없으면 가입 처리
}
15. § messages_en.properties
§ org.hibernate.validator.constraints.NotBlank.message=Can not be empty.
§ org.hibernate.validator.constraints.Length.message
=length must be between {2} and {1}.
§ already_login_err=Have already Logined.
§ not_login_err=No login information.
§ messages_ko.properties
§ org.hibernate.validator.constraints.NotBlank.message=비워둘 수 없습니다.
§ org.hibernate.validator.constraints.Length.message
=길이는 {2}와 {1} 사이 여야합니다.
§ already_login_err=이미 로그인 되어 있습니다.
§ not_login_err=로그인 정보가 없습니다.
17. § 에러(Error) 프로그램 코드에 의해서 수습될 수 없는 심각한 오류
§ 예외(Exception) 프로그램 실행 중에 발생하는 예기치 않은 사건 중
프로그램 코드에 의해서 수습될 수 있는 다소 미약한 오류
§ 예외가 발생하는 예
§ 정수를 0으로 나누는 경우
§ 배열의 첨자가 음수 또는 범위를 벗어나는 경우
§ 부적절한 형 변환이 일어나는 경우
§ 입출력을 위한 파일이 없는 경우 등
§ 자바 언어는 프로그램에서 예외를 처리할 수 있는 기법을 제공
18. § 예외 블록의 지정
try {
...... // try 블록 : 예외가 발생할 가능성이 있는 문장을 지정한다
}
catch(예외타입N 매개변수N) {
...... // 예외 처리 블록 N
}
finally {
...... // finally 블록 : 예외의 발생여부와 상관없이 무조건 수행
}
§ 예외를 발생시키기 위해 throw 문 사용
throw new 예외객체타입(매개변수);
Ex : throw new StarplStudyI18nException("already_login_err");
19. public class StarplStudyException extends RuntimeException
{
private static final long serialVersionUID = 1L;
String message;
/**
* @param message
*/
public StarplStudyException(String message)
{
super(message);
this.message = message;
}
}