본문 바로가기

SPRING

(86)
HandlerInterceptor : 세션을 미리 확인하자 HandlerInterceptor 핸들러 인터셉터 특정한 URI 호출을 가로채는 역할을 한다. 이를 이용하여 기존 컨트롤러의 로직을 수정하지 않고도 사전이나 사후에 제어가 가능하다. 참고로, Adaptor가 인터페이스와 다른 점은 인터페이스는 모든 추상 메서드를 구현해야 하지만 HandlerInterceptorAdaptor는 일단 초벌구이처럼 모든 추상 메서드를 대충 구현해놓은 상태라 여러 개의 메서드 중에서 내가 원하는 것 하나만 가져다가 써도 나머지 두 추상 메서드를 구현하지 않아도 되는 장점이 있다. HandlerInterceptor는 대표적으로 세 가지의 메서드를 가지고 있다. preHandle() 컨트롤러 실행 전에 필요한 기능을 구현할 때 사용 반환 값이 true인 경우에만 컨트롤러 요청으로 ..
로그인 / 로그아웃 / 세션 1. 로그인 정보를 담기 위한 VO 객체 package spring; // 로그인 정보를 담는 VO 클래스 public class LoginCommand { private String email; private String password; private boolean rememberEmail; // 이메일 아이디 기억하기(쿠키) public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getPassword() { return password; } public void setPassword(String password) { this.password = pa..
비밀번호 변경하기 1. 비밀번호 변경을 위한 커맨드 객체 생성 package spring; // 비밀번호 요청을 받아줄 커맨드 객체 public class ChangePwdCommand { private String currentPassword; private String newPassword; public String getCurrentPassword() { return currentPassword; } public void setCurrentPassword(String currentPassword) { this.currentPassword = currentPassword; } public String getNewPassword() { return newPassword; } public void setNewPasswor..
404 NOT_FOUND 처리하기 스프링 MVC의 모든 요청은 DispatcherServlet을 통해 처리되므로 404 에러도 같이 처리할 수 있도록 해야한다. 1. web.xml 설정 추가 appServlet org.springframework.web.servlet.DispatcherServlet contextConfigLocation /WEB-INF/spring/appServlet/servlet-context.xml throwExceptionIfNoHandlerFound true 1 2. Controller @ControllerAdvice 해당 객체가 스프링의 컨트롤러에서 발생하는 예외를 처리하는 존재임을 명시 @ExceptionHandler 해당 메서드가 ()에 들어가는 예외 타입을 처리한다는 것을 의미 즉, NoHandlerFou..
파일 업로드 처리 : MultipartResolver 첨부파일을 서버에 전송하는 방식 중에 여러 가지가 있지만 그 중에서 서블릿 3.0 이상에서는 자체적인 파일 업로드 처리가 API 상에서 지원된다. 이 방법을 통해 파일 업로드를 처리해보자. 1. 임시로 업로드될 폴더 경로 만들기 /Users/dabin/upload/tmp 2. pom.xml에 라이브러리 수정 및 추가 1.8 5.0.7.RELEASE 1.9.0 1.7.25 javax.servlet javax.servlet-api 3.1.0 provided 3. web.xml 설정 Tomcat이 관여하는 첨부파일의 처리에 대한 설정을 한다. 서블릿 3.1 버전으로 web.xml 파일의 헤더 부분의 변경이 필요하다. 파일 업로드를 위해 설정도 추가해준다. appServlet org.springframework..
Model 객체 / @ModelAttribute Controller의 메서드를 작성할 때 Model이라는 타입을 파라미터로 지정할 수 있다. Model 객체는 JSP에 컨트롤러에서 생성된 데이터를 담아서 전달하는 역할을 한다. 메서드의 파라미터에 Model 타입이 지정된 경우에는 스프링이 알아서 Model 객체를 만들어준다. @ModelAttribute 어노테이션에 대해 알아보자. 스프링 MVC Controller는 기본적으로 자바 빈 규칙에 맞는 객체는 다시 화면으로 객체를 전달한다. 자바 빈 규칙이란 생성자가 없거나 빈 생성자를 가져야하며 setter/getter를 가진 클래스의 객체를 말한다. 아무튼, 자바 빈 규칙에 의해 생성된 객체는 전달될 때 클래스명의 앞글자가 소문자로 처리되어 화면까지 전달된다. @GetMapping("/ex04") pu..
@RequestParam 어노테이션 @RequestParam 어노테이션은 파라미터로 사용된 변수의 이름과 전달되는 파라미터의 이름이 다른 경우에 쓰이는 어노테이션이다. 보통 이와 같이 파라미터와 동일한 이름을 사용하지만 @GetMapping("/ex02") public String ex02(String name, int age) { log.info("name: " + name); log.info("age: " + age); return "ex02"; } 이렇게 파라미터명을 다르게 처리하고 싶을 때, @RequestParam 어노테이션을 사용한다. 주소창에서 /sample/ex02?n=dblee&age=25 와 같이 입력해야 정상적으로 처리된다. @GetMapping("/ex02") public String ex02(@RequestParam..
스프링 MVC의 기본 구조 및 흐름 프로젝트 구동 시 관여하는 XML 파일에는 여러 가지가 있다. web.xml Tomcat 구동과 관련된 설정으로 프로젝트 구동은 여기서부터 시작한다. contextConfigLocation /WEB-INF/spring/root-context.xml org.springframework.web.context.ContextLoaderListener appServlet org.springframework.web.servlet.DispatcherServlet contextConfigLocation /WEB-INF/spring/appServlet/servlet-context.xml 1 appServlet / root-context.xml 그 다음 동작하는 스프링과 관련된 설정 파일로 빈 등록 및 의존 주입이 이루어..