0. 자동 로그인 정보를 저장할 DB 테이블 CREATE TABLE PERSISTENT_LOGINS( USERNAME VARCHAR2(50), SERIES VARCHAR2(200), TOKEN VARCHAR2(200), LAST_USED TIMESTAMP, CONSTRAINT PK_PL PRIMARY KEY (SERIES) ); 1. security-context.xml 설정 안에 를 추가로 작성한다. 2. 로그인 form 작성 자동 로그인 요청을 위한 태그를 추가한다. 이 때 태그의 name 속성을 'remember-me'로 설정해야 한다. 자동 로그인 로그인 취소 이후 자동 로그인을 체크하고 로그인한 뒤 브라우저를 종료하고 다시 접속해도 로그인이 유지되어있으면 성공이다. 또한, 맨 위에서 생성한 테이..
0. 시큐리티 태그 라이브러리 스프링의 시큐리티 태그 라이브러리는 스프링 시큐리티와 연결하여 사용자 정보를 확인하고 JSP로 가져오는데 사용할 수 있다. * 시큐리티 태그의 표현식 hasRole("ROLE_MEMBER") ROLE_MEMBER 권한이 있으면 true hasAnyRole("ROLE_MEMBER", "ROLE_ADMIN") 여러 권한 중 하나라도 해당하는 권한이 있으면 true principal 인증된 사용자의 사용자 정보 (UserDetails 인터페이스를 구현한 클래스를 가리킴) authentication 인증된 사용자의 인증 정보 permitAll 모든 사용자에게 허용 denyAll 모든 사용자를 거부 isAnonymouse() 로그인 하지 않은 경우 true isAuthenticate..
0. @PathVariable @pathVariable은 특정 파라미터 값을 URL에서 추출하기 위한 어노테이션이다. 요청 URL을 매핑할 때 경로 일부를 중괄호로 감쌀 수 있는데 이 어노테이션을 사용하면 중괄호 안의 값을 메서드 파라미터의 값으로 가져올 수 있다. @GetMapping("/board/{boardNum}") public String detail(@pathVariable String boardNum, Model model){ BoardVO boardVo = boardService.detail(boardNum); model.addAttribute("boardVo", boardVo); return "board/detail"; } int나 String 같은 기본 타입의 파라미터는 반드시 @pat..
스프링 프레임워크에서는 의 값을 Date 타입으로 받기 위해 설정이 필요하다. 0. DateTimeFormat 는 사용자가 특정 날짜를 선택할 수 있도록 달력 형태의 인터페이스를 제공한다. 사용자가 입력한 날짜 타입을 스프링의 컨트롤러에서는 String 타입으로 받을 수 있다. 하지만 Date 타입으로는 바로 받을 수 없는데 이는 날짜 형식의 차이 때문이다. 스프링에서 날짜 데이터를 Date 타입에 넣기 위해서는 'yyyy/MM/dd'의 형식을 가져야한다. 하지만 를 사용해 들어오는 날짜 데이터는 'yyyy-MM-dd'의 형식이다. 컨트롤러에서 이 데이터를 바로 Date 객체로 받기 위해서는 @DateTimeFormat 어노테이션을 사용해야 한다. import java.util.Date; import o..
클라이언트가 파일을 다운로드할 수 있도록 구현하기 위해서는 'Content-Disposition' 헤더가 필요하다. 'Content-Disposition' 헤더는 inline 또는 attachment 라는 값을 가질 수 있다. inline의 경우 데이터를 브라우저 화면에 배치(Dispose)하겠다는 의미이며 attachment는 데이터가 첨부(attachment) 파일로서 전송되어 사용자가 파일을 다운로드 받아 컴퓨터에 저장할 수 있도록 한다. 나는 파일을 다운로드 할 수 있도록 하기 위해 'Content-Disposition'을 'attachment'로 설정하고 파일명을 알 수 있도록 filename 이라는 내용을 추가로 작성하였다. 0. Resource 클래스 활용 import org.springfr..
0. 의존 라이브러리 추가 javax.servlet javax.servlet-api 3.1.0 provided commons-fileupload commons-fileupload 1.4 commons-io commons-io 2.11.0 net.coobird thumbnailator 0.4.8 org.imgscalr imgscalr-lib 4.2 1. root-context.xml 설정 2. web.xml 설정 2-1. multipart-config 추가 의 안쪽에 를 추가한다. 임시 파일 저장 경로, 업로드 파일의 최대 크기, 요청 데이터의 최대 크기, 메모리 임계값을 설정한다. appServlet org.springframework.web.servlet.DispatcherServlet contextC..
0. @RequestBody @RequestBody는 요청 데이터로 넘어온 JSON을 자바 객체에 매핑해주는 어노테이션이다. @GetMapping("/login") public String get(@RequestBody MemberVO memVo){ MemberVO memInfo = memberService.login(memVo); return memInfo; } 1. @ResponseBody @ResponseBody는 데이터를 응답 HTTP Body에 담아주는 어노테이션이다. AJAX 비동기 요청에 대해 응답을 보낼 때 자주 사용한다. 스프링의 경우 컨트롤러에 작성된 메서드들의 반환값이 String일 경우, ViewResolver에서 이를 View 파일의 경로로 해석하여 클라이언트에게 HTML이나 JS..