11.04(Spring Security - 사용자 인증, taglibs 추가하기)
2020. 11. 4. 20:39
프로그래밍/Spring
사용자 요청 url 관련 설정 intercept-url : 위에는 특별한 설정, 아래는 일반적인 설정을 배치(위에서부터 아래로 검사) auto-config="true" 자질구레한 configuration설정 기본값으로 처리해줌 모든 요청 url에 대해서 USER라는 권한이 있는 사람만 접근가능 사용자 인증 password-encoder 인증에 어떤 인코더 쓸지 설정 1. in-memory 사용자 인증(메모리상에 사용자 등록) → 이번에 다룰 부분 2. UserDetails구현체를 통해 db에서 인증하기 header.jsp 로그인하지 않은 상태라면 이 부분을 보여줘라 로그인(인증)되었다면 이 부분 보여줘라 인증정보에 접근하는 태그 : authentication, principal authentication..
11.03(Spring Security - 암호화 처리)
2020. 11. 3. 20:28
프로그래밍/Spring
https://spring.io/projects/spring-security Spring Security Spring Security is a framework that focuses on providing both authentication and authorization to Java applications. Like all Spring projects, the real power of Spring Security is found in how easily it can be extended to meet custom requirements spring.io 인증 authentication 내가 그 사용자 맞다고 증명하는 행위 권한 authorization 사용자는 board/**를 사용할 수 있음, 관..
11.02(파일 다운받기, ajax, jsonView 관련 의존)
2020. 11. 2. 20:24
프로그래밍/Spring
파일 다운받는 방법 1. 업무로직 : attachment_no를 통해 originalFileName, renamedFileName 가져오기 2. 파일다운로드 3. 응답헤더 작성 return resource;를 하면 (이전에는 String과 ModelAndView만 리턴했음) 헷갈릴 수 있기에 쉽게 구분할 수 있도록 메소드 레벨에 @ResponseBody를 적어줌(jsp를 가지 않고 body영역에 직접 써짐!) @ResponseBody 이 메소드의 리턴값을 응답메세지의 바디 영역에 직접 쓰기할 것(jsp를 쓰지 않고 바로 씀) Resource는 모든 자식클래스를 Resource상위타입으로 제어 가능 자식이 뭐든지 간에 사용시에 getResource한다음 리턴해버리면 됨! ajax 스프링에서 json처리하는..
10.30(PSA)
2020. 10. 30. 20:19
프로그래밍/Spring
PSA 추상체로서 실제 구현체를 제어하는것을 의미 servlet jsp의 모든 방식 사용 가능 기존에는 response가 가지고 있는 출력스트림인 outputStream객체를 가져와서 서버 컴퓨터의 파일을 읽어 직접 쓰기 작업했음 그리고 Header작업을 통해 지금 내려보내는 파일은 2진파일이니 다운받을 준비하라고 브라우저에게 알려줄 용도로 Header세팅했었음 > application/octet-stream 이라는 타입을 통해 브라우저에게 2진파일이라는 것을 알려주고 다운로드할 준비하라고 설정했었음 이 방식을 그대로 스프링에서 사용가능 위와 같은 방식으로 하려면 handler메소드에서 response객체 요청하면 됨(HttpResponse) 스프링에서는 Resource라는 것만 달라짐 -> PSA로 스..
10.29(transaction처리, Exception 생성, typeHandler )
2020. 10. 29. 20:12
프로그래밍/Spring
실제 트랜잭션의 대상이 되는것은 servlet-context에서 관리하는 bean -> service (boardService)이기때문에 전역에 설정된 빈을 servlet-context에서 가져와서 사용함 Exception만들기 패키지 설정 > 상속클래스 설정 - RuntimeException > 생성자 Generate Constructor 여러개를 한번에 insert할 때 한 개는 성공하고 한 개는 실패하면 둘 다 실패되도록 처리가 됨(@Transactional) 부모자식 참조 관계가 있는 테이블을 한 방에 쿼리로 가져오는 기능 제공 (짧은 쿼리를 여러번 날리는게 안좋은건 아님. 오히려 좋은방법일 수 있음. 내가 선택하는 것임!) collection 1:N관계 (보드 한행당 첨부파일은 여러개일 수 있음..
10.28(MultipartFile)
2020. 10. 28. 20:39
프로그래밍/Spring
Multipart에 대한 작업처리자 -> CommonsMultipartResolver라고 생각하면 됨 CommonsMultipartResolver가 파일을 받아다가 upFile에 넣어주는 역할을 함 cos.jar는 MultipartRequest하면 모든 처리가 끝났지만 commons의 작동방식은 upFile이 controller에 넘어왔을때는 아직 메모리상(RAM)에 존재하고 있다가 직접 설정한 파일명으로 transferTo 메소드를 통해 요청했을때 실제로 저장됨 파일 여러개 올리기 BoardController 파라미터 부분을 배열로 바꿔주기 > MultipartFile[] upFiles 1. 파일을 서버컴퓨터에 저장 String saveDirectory = request.getServletContext..
10.27(LoginInterceptor, MultipartFile )
2020. 10. 27. 20:56
프로그래밍/Spring
LoginInterceptor 로그인하지 않은 사용자가 글쓰기 못하도록 돌려보내주는 역할 spring\common\interceptor에 LoginInterceptor 클래스 생성 > extends HandlerInterceptorAdapter 한 후 안에 내용 채워넣기 > Interceptor등록은 servlet-context.xml에 등록 > loginInterceptor등록해주기 로그인 성공시 인덱스 페이지가 아닌 맨처음 요청이 들어간 페이지로 redirect하도록 하기위하여 interceptor에서 session에 담아두고 로그인이 성공했을때, session에 key값에 해당되는 주소값이 있는지 확인하고 그 페이지로 redirect하도록 location값을 넘겨줌! 로그인 성공 후, redirec..
10.26(RequestParam, Pointcut, rowbounds, formatDate)
2020. 10. 26. 20:58
프로그래밍/Spring
@RequestParam required속성 true여서 누락되면 X 서버단에서도 유효성 검사를 진행해주면 좋음(비밀번호 누락) -> aop의 beforeAdvice를 통해 가능 > aop 밑에 PasswordCheckAspect 클래스 생성 > bean으로 등록해야되니까 @Component 붙여주기 > Aspect로 등록하기 위해 @Aspect > @Slf4j > 메소드 위에 @Pointcut붙여주기(메시지 내용은 중요하지 않음) > beforeAdvice메소드 위에 @Befoer or 연산자는 @Before에서만 사용 가능 Pointcut 선언하기 Pointcut은 Aspectj를 통해 와일드카드를 이용한 다음 표현식을 지원함.(&&, ||, !(부정)를 지원함.) 1. execution pointc..