Java/Spring
-
Statement 자바에서 정적 쿼리문을 수행할 때 java.sql 패키지에 있는 Statement 인터페이스를 사용하게 된다. Statement 객체에 Connection 되어 있는 곳에 쿼리문을 수행하고 결과를 반환한다. Statement 는 아래와 같은 동작 순서를 가진다. 1. SQL 쿼리문 분석 2. 쿼리문 컴파일 3. 실행 아래는 예시이다. int seq = 3; String sql_str = "SELECT name FROM test_table WHERE seq = " + se String url = "jdbc:mysql://localhost:3306/DB명"; String username = "DB 계정 ID"; String password = "DB 계정 PW"; Connection con..
[sql] statement 와 preparedStatementStatement 자바에서 정적 쿼리문을 수행할 때 java.sql 패키지에 있는 Statement 인터페이스를 사용하게 된다. Statement 객체에 Connection 되어 있는 곳에 쿼리문을 수행하고 결과를 반환한다. Statement 는 아래와 같은 동작 순서를 가진다. 1. SQL 쿼리문 분석 2. 쿼리문 컴파일 3. 실행 아래는 예시이다. int seq = 3; String sql_str = "SELECT name FROM test_table WHERE seq = " + se String url = "jdbc:mysql://localhost:3306/DB명"; String username = "DB 계정 ID"; String password = "DB 계정 PW"; Connection con..
2022.12.14 -
Java 개발자라면 한번쯤은 봤을 Static 키워드이다. Static 키워드로 선언된 필드, 메소드, 클래스는 프로그램이 실행될 때 생성 및 초기화가 된다. 즉, 프로그램이 시작될 때 메모리에 올라간다. 메모리에 올라가 같은 주소만을 바라보기 때문에 공유할 수 있어 공유해야 하는 필드에 보통 사용한다. Static 키워드는 필드, 메소드, 클래스에 적용할 수 있다. static 필드 public class Obo { public String name = "obo"; } public class Ok { public static final int number = 123; public static String name = "ok"; } public class Test { System.out.println("..
Static 키워드Java 개발자라면 한번쯤은 봤을 Static 키워드이다. Static 키워드로 선언된 필드, 메소드, 클래스는 프로그램이 실행될 때 생성 및 초기화가 된다. 즉, 프로그램이 시작될 때 메모리에 올라간다. 메모리에 올라가 같은 주소만을 바라보기 때문에 공유할 수 있어 공유해야 하는 필드에 보통 사용한다. Static 키워드는 필드, 메소드, 클래스에 적용할 수 있다. static 필드 public class Obo { public String name = "obo"; } public class Ok { public static final int number = 123; public static String name = "ok"; } public class Test { System.out.println("..
2022.12.14 -
Spring Security 에서 권한에 따른 접근 불가한 url 에 대한 handler 설정이다. 본인은 권한 없는 사람의 접근에 따라 특정 화면으로 고정시킬 목적으로 handler 설정을 한다. 1. AccessDeniedHandler 발생 시 보여줄 View 화면 설정 본인은 아래와 같은 경로에 accessDenied.html 파일을 생성했다. 2. AccessDeniedHandler 설정 아래와 같이 security/handler/ 경로에 AuthenticationAccessDeniedHandler 클래스를 생성한다. import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServ..
[Spring Security] AccessDeniedHandler 설정Spring Security 에서 권한에 따른 접근 불가한 url 에 대한 handler 설정이다. 본인은 권한 없는 사람의 접근에 따라 특정 화면으로 고정시킬 목적으로 handler 설정을 한다. 1. AccessDeniedHandler 발생 시 보여줄 View 화면 설정 본인은 아래와 같은 경로에 accessDenied.html 파일을 생성했다. 2. AccessDeniedHandler 설정 아래와 같이 security/handler/ 경로에 AuthenticationAccessDeniedHandler 클래스를 생성한다. import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServ..
2022.12.02 -
Spring Security 에서 로그아웃을 하기 위해선 2가지 방법이 있다. 다른방법이 있을지 모르겠지만본인이 사용했던 방법은 2가지다..logoutUrl("URL") 과 .logoutRequestMatcher() 방법이다. 처음 설정할땐 .logoutUrl 을 사용했었으나 csrf() 설정 여부에 따라 GET 방식, POST 방식 요청이 달라져logoutRequestMatcher() 로 설정했다. 기본적으로 logoutUrl 은 "/logout" 으로 설정되어 있다.아무 설정도 안했을 땐 /logout 으로 요청 시 로그아웃이 된다.여기서 달라지는건 CSRF 활성화 여부이다. 아래는 Spring Security 의 logoutUrl 메서드이다. 먼저 주석내용을 구글번역기에 돌려보면 아래와 같다...
[Spring Security] logout 설정 2가지Spring Security 에서 로그아웃을 하기 위해선 2가지 방법이 있다. 다른방법이 있을지 모르겠지만본인이 사용했던 방법은 2가지다..logoutUrl("URL") 과 .logoutRequestMatcher() 방법이다. 처음 설정할땐 .logoutUrl 을 사용했었으나 csrf() 설정 여부에 따라 GET 방식, POST 방식 요청이 달라져logoutRequestMatcher() 로 설정했다. 기본적으로 logoutUrl 은 "/logout" 으로 설정되어 있다.아무 설정도 안했을 땐 /logout 으로 요청 시 로그아웃이 된다.여기서 달라지는건 CSRF 활성화 여부이다. 아래는 Spring Security 의 logoutUrl 메서드이다. 먼저 주석내용을 구글번역기에 돌려보면 아래와 같다...
2022.11.29 -
출처 : https://12bme.tistory.com/555 출처 : https://roadofdevelopment.tistory.com/56 위 티스토리에 적어놓은 내용을 바탕으로 작성했으며, 좀 더 이해하기 위한 글을 작성합니다. 서블릿 컨테이너는 개발자가 웹서버와 통신하기 위한 복잡한 일들을 할 필요가 없게 해준다. 컨테이너는 Servlet의 생성부터 소멸까지의 일련의 과정을 관리한다. 서블릿 컨테이너는 요청이 들어올때 마다 자바 쓰레드를 생성하여 작업을 한다. 서블릿 컨테이너의 대표적인 예로는 흔히 사용하는 Tomcat 이 있다. 여기서 서블릿이란 동적인 웹페이지를 만들기 위해 사용되는 자바 기반의 웹 프로그래밍 기술이다. 클라이언트의 요청이 있고 요청에 대한 응답 결과를 반환해야 하는데 이러한..
서블릿, 서블릿 컨테이너(WAS)와 스프링 컨테이너출처 : https://12bme.tistory.com/555 출처 : https://roadofdevelopment.tistory.com/56 위 티스토리에 적어놓은 내용을 바탕으로 작성했으며, 좀 더 이해하기 위한 글을 작성합니다. 서블릿 컨테이너는 개발자가 웹서버와 통신하기 위한 복잡한 일들을 할 필요가 없게 해준다. 컨테이너는 Servlet의 생성부터 소멸까지의 일련의 과정을 관리한다. 서블릿 컨테이너는 요청이 들어올때 마다 자바 쓰레드를 생성하여 작업을 한다. 서블릿 컨테이너의 대표적인 예로는 흔히 사용하는 Tomcat 이 있다. 여기서 서블릿이란 동적인 웹페이지를 만들기 위해 사용되는 자바 기반의 웹 프로그래밍 기술이다. 클라이언트의 요청이 있고 요청에 대한 응답 결과를 반환해야 하는데 이러한..
2022.11.28 -
Spring Security 설정 시 Session 생성에 관해 궁금하여 작성하게 되었다. Spring Security는 csrf 가 기본적으로 enable() 설정되어 있다. 매번 csrf 설정을 disable() 설정 하다보니 자동으로 Session이 생성되어 있고 서버와 통신할 때 CSRF 토큰값을 확인하지 않아 특정 에러가 발생하는걸 발견하지 못했다. 하지만 csrf 설정을 하다가 에러를 발견했다. 본인은 특정 게시판을 만드는데 로그인을 하지 않았을땐 메인페이지가 떠야하나 위와 같은 에러가 발생했다. 모든 요청(ajax) 에 대해 csrf 값을 체크하는데 세션이 존재하지 않아 뜨는듯한 느낌이였다. 일단 Spring 에서의 HttpSession 은 누가 생성하는가 봤더니 서블릿 컨테이너가 생성한다고..
[Spring Security] Cannot create a session after the response has been committed (세션 에러)Spring Security 설정 시 Session 생성에 관해 궁금하여 작성하게 되었다. Spring Security는 csrf 가 기본적으로 enable() 설정되어 있다. 매번 csrf 설정을 disable() 설정 하다보니 자동으로 Session이 생성되어 있고 서버와 통신할 때 CSRF 토큰값을 확인하지 않아 특정 에러가 발생하는걸 발견하지 못했다. 하지만 csrf 설정을 하다가 에러를 발견했다. 본인은 특정 게시판을 만드는데 로그인을 하지 않았을땐 메인페이지가 떠야하나 위와 같은 에러가 발생했다. 모든 요청(ajax) 에 대해 csrf 값을 체크하는데 세션이 존재하지 않아 뜨는듯한 느낌이였다. 일단 Spring 에서의 HttpSession 은 누가 생성하는가 봤더니 서블릿 컨테이너가 생성한다고..
2022.11.28