전체 글

    DataTable Ajax 사용하기

    사용자 전체 조회를 해보았다. 처음 사용해봐서 삽질을 조금 했는데 재미있었고, 무엇보다 데이터를 쉽게 표현할 수 있고 기능이 많은 라이브러리라서 유익했다. 먼저 사용하려면 스크립트를 포함해줘야 한다. www.cdn.datatables.net/1.10.21/css/jquery.dataTables.min.css www.cdn.datatables.net/1.10.21/js/jquery.dataTables.min.js HTML 코드 사용자ID 사용자 이름 전화번호 E-mail 권한 JavaScript 코드 $(document).ready(function() { $("#deviceTable").DataTable({ "pageLength": 10, ajax:{ url:"./userAll.do", type:"GET"..

    이진탐색

    sort된 배열 에서 특정 값(target)을 찾기 위해 주여진 숫자 중 가운데 수 기준으로 target이 작을경우 좌측으로 , 클경우 우측으로 한개씩 targer을 찾을 때 까지 검색한다! sort사용법! int[] arry = {45,12,3,94}; Arrays.sort(arry); 후에 for문으로 뽑아주면 3,12,45,94 이렇게 순서대로 나온다, 한글이나, 알파벳도 마찬가지! 이진탐색 사용법 예제 int[] arry={28,15,4,30,1}; Arry.sort(arry); // -> {1,4,15,28,30} int low=0; int mid; int higth=arry.length-1; while(low0+4/2 if(arry[mid]==tartget){ return arry[mid]; ..

    세션 저장소

    1.톰캣 세션을 사용한다. - 기본 선택되는 방식이다. - WAS에 저장되는데 2대이상의 WAS로 구동되는 환경에서는 추가 설정이 필요하다. 2.MySQL과 같은 데이터베이스를 세션 저장소로 사용한다. - 가장 쉬운 방법이다. - 로그인 요청시 DB IO가 발생할 수 있다. 3.Redis 같은 메모리 DB를 세션 저장소로 이용한다. 사용료를 지불해야한다! 서비스가 커질때 고려! 'org.spirngframework.session:spring-session-jdbc' 를 gradle에 등록해주고 application.prorperties에 spring.session.store-type=jdbc 만 등록하주면 jpa가 세션테이블을 자동으로 생성하여 세션저장소가 지정된다!

    Java Enum이란?

    Enum을 통해 얻는 기본적인 장점 문자열과 비교해, IDE의 지원을 받을 수 있다. 자동완성, 오타검증, 텍스트 리팩토링 등 허용 가능한 갑들을 제한할 수 있다. 리팩토링시 변경 범위가 최소하 된다. 내용의 추가가 필요해도, Enum코드외에 수정할 필요가 없다. Java Enum인 경우 int값이 아니라 완전한 기능을 가진 클래스이다! 우선 enum타입으로 클래스를 생성해야한다 이제 상수를 선언하면 되는데, 관례적으로 모두 대문자로 작성한다. Entity클래스에 선언해주기 위해서 String이 아닌 enum을 선언한다. JPA를 사용하므로 @Enumerated(EnumType.SPRING)을 선언하면 Enum필드가 테이블에 저장시 숫자형이 아닌, Enum의 이름이 저장된다. 여기서는 GUEST,USER..

    Eclipse rejected-non-fast-forward 오류

    깃허브에 익숙하지 않아서 자꾸 뭐가 틀어지는지 non-fast-forward 오류가 자주 뜬다..... ㅠㅠㅠㅠ으ㅏ으아으ㅏㅇ Advanced...를 눌러서 기존에 있던거 휴지통 눌러서 삭제해준다음에 Source ref에 master로 추가해준다. 마지막으로 Marge시켜주고 Push!

    Spring Security , OAuth2.0으로 구글 로그인 구현 1

    스프링 시큐리티는 막강한 인증과 인가 기능을 가진 스프링 프레임워크이다. 인증이란, 보호된 리소스에 접근한 대상에 대해 누구인지, 작업을 수행해도 되는지 확인하는 과정이다. 인가란, 인증 이후에 해당 리소스에 대해 접근 가능한 권한을 가지고 있는지 확인하는 과정이다. 보안과 관련해서 체계적으로 많은 옵션을 제공해주기 때문에 개발자가 일일이 보안 관련 로직을 작성하지 않아도 된다. 구글 로그인 기능 구현해보자! https://console.cloud.google.com/ 로 접속해서 새로운 프로젝트를 생성한다. 프로젝트를 선택한 후 API 및 서비스 -> 사용자 인증 정보 OAuth 클라이언트 ID 클릭! 동의 화면 중 외부/내부가 있는데 외부를 클릭한다. 애플리케이션 이름 : 사용자에게 노출될 애플리케이..

    템플릿 엔진

    지정된 템플릿 양식과 데이터가 합쳐져 HTML문서를 출력하는 소프트웨어 서버 템플릿 엔진 - JSP(명확하게는 아님) ..등 클라이언트 템플릿 엔진 - React,Vue ...등 영역과 작동하는 방식이 다르다. 자바스크립트는 브라우저 위에서 작동 - 브라우저에서 작동될 때는 서버 템플릿 엔진이 제어할 수 없다. - 서버에서는 Json혹은 xml형식의 테이터만 전달하고 클라이언트에서 조립한다.

    JPA Auditing 으로 생성/수정시간 자동화하기

    교육과정 동안 언제 만들어졌는지, 언제 수정되었는지에 따른 유지보수 중요성을 배우진 못했다. 이제 모델링할 때 고려해서 짜야겠군... 같은 내용인데 매번 DB에 insert/update을 하기에는 코드가 여기저기 들어가게 되니까 생성될 때 같이 생성되면 편리하다! domain 폴더에 BaseTimeEntity클래스를 만들어주고 모든 Entity의 상위 클래스가 되게 하면 된다. 1. @MappedSpuerclass 를 이용하면 JPA Entity클래스들이 BaseTimeEntity를 상속할 경우 필드들도 컬럼으로 인식하도록 한다. 2. @EntityListeners(AuditingEntityListener.class)로 해당 클래스에 Auditing기능을 포함한다. 3. @CreatedDate priva..

    람다식 (stream,map,collect)

    //postRepository에서 넘어온 결과를 postsRepository.findAllDesc().stream() //Stream을 통해 map으로 new PostsListResponseDto 에 매핑 해준다. //PostsListResponseDto에서는 파라미터로 postRepository에서 넘어온 결과 Entity posts를 받고 있으므로 //결과적으로 .map(posts -> new PostsListResponseDto(posts)) .map(PostsListResponseDto::new) //collect를 사용해서 List로 변환한다. .collect(Collectors.toList()); stream이라는 게 있는 것 조차 몰라서 공부하면서 혼란스러웠다 람다식을 배운 적이 없으니. ㅠ..

    페이지 로딩 순서

    HTML은 위에서부터 코드가 실행되기 때문에 head가 실행되고 body가 실행된다. js의 용량이 크면 클수록 body부분의 실행이 늦어지기 때문에 body하단에 두는게 좋다 css는 화면을 그리는 역할이므로 head에서 불러오는 것이 좋다 + 부트스트랩인 경우 제이쿼리에 의존 하고 있기 때문에 제이쿼리를 먼저 호출하는게 되도록 작성해야 한다. + Scriptlet,jstl,el은 서버단에서 실행 되며 브라우저에서 실행되는 Javascript에서는 변수를 직접 주고받을 수 없다. + JAVA>JSTL>HTML>Javscript + jsp외부로 js를 빼면 작동안할 겁니다. 서버는 jsp를 처리하지 외부에서 임포트되는 js를 처리하지는 않는다.

    Tomcat error) java.lang.IllegalArgumentException: Invalid character found in method name. HTTP method names must be tokens

    Tomcat error) java.lang.IllegalArgumentException: Invalid character found in method name. HTTP method names must be tokens https 요청을 시도하려고 할 때 발생할 수 있는 에러이다. 톰캣 쪽에서 https설정을 해주지 않았는데 https로 요청하기 때문에 발생할 수 있는 에러이다. 해결 방법 1. url을 http로 바꾸면 해결된다. 2. 서버 포트를 바꿔 본다. 3. 프로세스를 찾아서 종료시킨다.

    실제로 실행된 쿼리의 형태

    JPA가 관계형데이터베이스에 맞게 SQL을 대신 생성하여 실행하기 때문에 실제로 실행된 쿼리의 형태가 궁금할 수 있다. application.properties를 만들어준 후 spring.jpa.show_sql = true 를 작성해준다. 짜란!