728x90
반응형

LoginInterceptor

로그인하지 않은 사용자가 글쓰기 못하도록 돌려보내주는 역할
spring\common\interceptor에 LoginInterceptor 클래스 생성
> extends HandlerInterceptorAdapter 한 후 안에 내용 채워넣기
> Interceptor등록은  servlet-context.xml에 등록
> loginInterceptor등록해주기


로그인 성공시 인덱스 페이지가 아닌 맨처음 요청이 들어간 페이지로 redirect하도록 하기위하여
interceptor에서 session에 담아두고 로그인이 성공했을때, session에 key값에 해당되는 주소값이 있는지 확인하고
그 페이지로 redirect하도록 location값을 넘겨줌!

로그인 성공 후, redirect할 주소 session에 저장하기(next)
LoginInterceptor >

String uri = request.getRequestURI(); // /spring/board/boardForm.do => 지금 현재 주소 가져오기 


주소값을 담아줄때는 request.getContextPath() -> /spring을 ""으로 대체해라(지워라) => 왜냐면 viewName에 redirect할때는 contextPath를 빼고 적기때문

uri = uri.replace(request.getContextPath(), ""); 
session.setAttribute("next", uri); //session에 next라는 key값으로 주소 저장 


> MemberController의 memberLogin메소드
> 로그인 성공시 세션에서 next값 가져오기

String next = (String)session.getAttribute("next"); 
location = next != null ? next : location; 
session.removeAttribute("next");  //한 번 사용된거 지워주기 
return "redirect:" + location; //return부분 변수 처리 



@RequestMapping(value="/boardEnroll.do", method=RequestMethod.POST)
위에꺼 간결하게 아래처럼 사용가능
@PostMapping("/boardEnroll.do")


파일 여러개 저장하기
controller의 boardEnroll 메소드 파라미터
@RequestParam(value="upFile",required=false) MultipartFile upFile  => MultipartFile[] upFiles 는 파일 여러개
> pom.xml에 file upload 처리 의존 라이브러리 등록 > commons-io와 commons-fileupload (이 둘은 한 쌍임)
> servlet-context.xml > file upload를 처리할 빈 등록 : id - multipartResolver

org.springframework.web.multipart.commons.CommonsMultipartResolver에 가보면 
setMaxUploadSize... 이런 설정들이 가능(사이즈 정할 수 있음) -> outline에서 확인가능

반응형
복사했습니다!