HTTP 요청 파라미터는 기본적으로 모두 String으로 전달되며,Spring이 자동으로 타입 변환(컨버전)해줍니다.반드시 int로만 받아야 할 특별한 상황이 아니라면,String으로 받고, 필요시 int 파싱 및 유효성 검사를 직접 해주는 것이 오류 없는 설계입니다. JSconst bbsNo = "23456"; // 숫자를 문자열 형태로const encoded = btoa(bbsNo); // Base64 인코딩: "MjM0NTY="location.href = "/search.do?bbsNo=" + encodeURIComponent(encoded);// 요청 URL: /search.do?bbsNo=MjM0NTY%3Dbtoa (binary-to-ascII)J..
Firebase Cloud Messaging(FCM) HTTPS v1 서비스를 Java에서 사용하려면 Firebase Admin SDK 방식과 REST 방식 중 하나를 선택하여 build.gradle이나 pom.xml에 Firebase Admin SDK , Google OAuth 라이브러리를 추가하면 됩니다. 성능상의 차이는 없으며 서비스 구현에 맞게 선택하면 됩니다. Firebase Admin SDK 방식과 REST 방식 두 가지특징Firebase Admin SDKGoogle OAuth REST 방식라이브러리 firebase-admin google-auth-library-oauth2-http레벨고수준 API저수준 API설정 및 초기화간단 (FirebaseOptions로 초기화)별도의 HTTP 요청 작..
차이점에 대해 알아보기 전 connection 비용에 대해 먼저 살펴보겠습니다.Connection 비용WAS와 데이터베이스 사이의 연결에는 많은 비용이 발생합니다.Mysql 8.0 기준 INSERT 문 수행할때 비용으로 괄호안 숫자가 비율을 의미합니다.1. Connecting (3) 2. Sending query to server (2)3. Parsing query (2)4. Inserting row (1)5. Inserting index(1)6. Closing (1)connection 가장 많은 비용이 발생하며 불필요한 연결에 의한 서버 자원의 낭비가 발생하므로이를 보완할 수 있는 방법이 Connection Pool.Connection poolDriverManager은 실제 자바프로그램과 데이터베이스..
Spring JDBC는 Spring Framework에서 제공하는 JDBC 모듈이다.Connection 연결 객체 생성 및 종료, Statement 준비/실행 및 종료,ResultSet 처리 및 종료, 예외 처리,트랙잭션 등의 반복되는 처리를 개발자가 직접하지 않고 Database에 대한 작업을 수행할 수있다. Spring JDBC의 주요기능 1. DataSource 설정Spring JDBC는 DataSource를 사용하여 데이터베이스와 연결한다.Spring JDBC는 JDBC 드라이버 클래스 데이터베이스URL,username, password 포함하는 DataSource를 만든다. 2. SQL 실행Spring JDBC는 JDBC 코드를 대체하여 데이터베이스와 상호작용한다.Spring JDBC를 사용하면..
MyBatis에서 바인드 변수 주입 방법 2가지#{}: Prepared Statement 바인딩 (파라미터 바인딩)#{}는 파라미터 바인딩을 통해 값이 안전하게 쿼리에 삽입됩니다.값은 쿼리에 그대로 포함되지 않고 SQL 쿼리 실행 시점에 바인드 변수로 전달됩니다.데이터베이스 엔진은 이 방식을 통해 SQL 인젝션 공격을 방지할 수 있습니다 SELECT * FROM users WHERE user_id = #{userId} userId에 값이 들어올 경우, 쿼리는 실제로 아래와 같이 실행됩니다.예1) user_id 값이 5인 경우 쿼리 실행SELECT * FROM users WHERE user_id = ?# ? 에 5 바인딩예2) user_id 값이 "5 or 1=1"인 경우 쿼리 실행SELECT * ..
Java 언어에서 JDBC를 통하여 DB상에서 DML을 실행하는 방법 3가지 Statement긴 Query를 편집하기에 굉장히 불편하고 무엇보다 SQL인젝션 공격에 대비하기 위해서 손이 많이 가기 때문이다. 모든 파라메터를 결국 String형태로 조립하는 방식인데 큰따옴표, 작은따옴표 그리고 + 기호까지 소스의 가독성이 떨어진다.PreparedStatement좀 더 세련된 방식으로 성능과 가독성이 Statement 보다 좋은 방식이다.iBatis는 이 PareparedStatement를 활용하여 자바 코드와 SQL문을 분리한 프레임웍이다.SQL문을 XML에 작성해 놓고 변수와 매핑될 부분을 표시한 다음 런타임에 PreparedStatement를 생성하고 Java에서 넘겨준 변수와 ?를 매핑하여 DB에 전..
환경JDK 11STS 3.9.18Spring-Webmvc 5.2.3MyBatis 3.5mybatis-spring 2.0Lombok 1.18.26Servlet API 3.1.0slf4j 1.6.6 Apache Tomcat 8.5Mysql 8.4Spring 프로젝트에 MySQL을 연동하기 위하여 아래 파일에 JDBC 연결 부분을 설정해 주었습니다. JDBC 연결 설정프로젝트 resource>jdbc.properties 파일 생성jdbc.driverClassName=com.mysql.cj.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/testdb?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Seoul..
Maven으로 WAR 파일 생성프로젝트 우클릭 > Run As > Maven clean 프로젝트 우클릭 > Run As > Maven install프로젝트 target경로에. war 파일이 만들어진 걸 확인할 수 있다. Tomcat 설치 경로에 WAR 파일 이동 추출한 war 파일을 tomcat 설치 폴더인 C:\apache-tomcat-8.5\webapps 경로에 넣어줍니다. 톰캣이 실행되면 war 파일을 풀어서 폴더를 생성하고 배포되는 방식입니다.파일 명을 ROOT.war 로 생성한 경우C:\apache-tomcat-8.5\webapps 경로에 있는 기존 ROOT파일의 이름을 다른 것으로 변경해 준 후 생성한 ROOT.war 파일을 넣어줍니다. tomcat은 자동으로 webapps 경로의 ROOT폴..
스프링에서 MVC 패턴을 사용해 웹 프로젝트를 만드는 방법 2가지 중 STS 에서 제공하는 Spring Legacy Project 를 이용해서 프로젝트 생성해 보았다.환경JDK 11 STS 3.9.18 Spring-Webmvc 5.2.3 MyBatis 3.5 mybatis-spring 2.0 Lombok 1.18.26 Servlet API 3.1.0 slf4j 1.6.6 Apache Tomcat 8.5 Mysql 8.4 프로젝트 생성sts3에서 Spring Legacy Project 안 보일 경우 해결 방법1.프로젝트 작업공간 \.metadata\.plugins\org.springsource.ide.eclipse.commons.content.core 경로에 https-content.xml 파일 추..