목록Development/Spring & SpringBoot (22)
컴공생의 다이어리
Spring Boot @Transactional(readOnly = true) 오류 스프링부트에서 @Transactional annotaion을 사용하면서 option으로 readOnly를 사용하려고 하니 cannot resolve method라는 오류가 나타났다. 이를 해결하기 위해서는 @Transactional을 사용하려고 import하는 과정에서 javax.transaction이 아닌 org.springframework.transaction.annotation을 선택해야 한다. https://byeongyeon.tistory.com/35 스프링 부트 Tranactional(readonly=true) 가 안되는 경우 || option이 안될 경우 >> @Transactional(readOnly = t..
MyBatis Like문 사용방법 MyBatis에서 조건절에 Like와 parameter를 아래와 같이 사용하니 오류가 발생했다. content LIKE '%#{search}%' MyBatis에서는 Like문에 파라미터를 사용하기 위해서는 문자열 합치기 함수를 사용하여 이용해야 한다. MySQL, Oracle, MSSQL에서 사용한다면 아래를 참고해서 사용하면 된다. # MySQL/MariaDB content like CONCAT('%',#{search},'%') # Oracle content like '%' || #{search} || '%' # MSSQL content like '%' + #{search} + '%' https://fruitdev.tistory.com/60 MyBatis Like 검색..
spring security 적용 후 Refused to display in a frame because it set 'X-Frame-Options' to 'DENY' 발생 spring 프로젝트에 naver smarteditor2를 적용하려고 하니 Refused to display "http://localhost:8080/~" in a frame because it set 'X-Frame-Options' to 'DENY'라는 오류가 발생해 제대로 적용되지 않았다. 이유를 찾아보니 spring security를 적용하면 기본적으로 X-Frame-Options Click jacking 공격 막기 설정이 되어있기 때문이었다. X-Frame-Options 종류로는 아래 3가지가 있는데 이번 오류는 SAMEORI..
Spring JDBC queryForObject의 결과가 없을 때(null) 혹은 2개 이상일 때 스프링 프로젝트에서 JDBC Template의 queryForObject 함수는 오직 하나의 행을 반환한다. 만약 쿼리문의 실행 결과로 행이 없거나 두 개 이상의 행이 있으면 IncorrectResultSizeDataAccessException이 발생한다. 이때, 만일 queryForObject 실행 결과로 행이 없거나 두 개 이상의 행이 있을 때에 대해 예외처리를 해주고 싶다면 아래와 같이 try catch 문을 사용해주면 된다. try { JdbcTemplate jdbcTemplate; String sql = "select user_id from User where name = ?"; return jdb..
Spring jsp파일에서 JSTL 사용하기 Spring 프로젝트를 진행하면서 jsp파일에서 JSTL을 사용하려면 먼저 build.gradle이나 pom.xml파일에 JSTL을 추가해줘야 한다. 자신의 build 툴에 맞게 아래 중 하나를 build.gradle이나 pom.xml파일에 추가해주면 된다. 게시물 기준 제일 최신 버전이긴 한데 나온지 꽤 오래된 것이라 그냥 아래 중 하나를 써도 크게 문제 없을 것 같다. # build.gradle implementation 'javax.servlet.jsp.jstl:jstl:1.2' javax.servlet jstl 1.2 그리고 나서 jsp 파일 안에 아래와 같이 talib 지시자로 라이브러리를 선언을 해서 JSTL을 사용해주면 된다. 라이브러리 주요 기능..
Spring root-context.xml에서 db 정보 properties 파일로 분리 스프링 프로젝트에서 root-context.xml에 있는 db정보를 properties 파일로 분리하는 방법에 대해 정리하고자 한다. 우선 properties 파일을 하나 생성해주는데 나는 src/main/resources/config 폴더 밑에 database.properties라는 이름으로 파일을 생성했다. 그리고 파일 안에 db 관련 정보를 넣어줬다. db.url=jdbc:mariadb://127.0.0.1:3306/test db.username=root db.password=0000 그리고 나서 root-context.xml 파일의 시작 태그 뒤에 바로 아래 코드를 삽입해주었다. 만일 위치나 파일 명이 다르면..
MyBatis CDATA 사용 마이바티스를 통해 쿼리문을 작성할 때 문자열 비교연산자나 부등호 처리할 때 등의 기호를 사용하는데 이때 >, < 이러한 기호를 태그(괄호)인지 비교연산자인지 구분할 수 없을 수 있다. 이렇게 구분을 하지 않으면 에러가 발생함으로 해당 기호가 쿼리에 필요하다는 것을 인식시켜줘야 하는데 이때 사용하는 것이 이다. 만일 board 테이블에서 idx가 8미만인 board 테이블의 정보를 가져와라라고 하면 아래와 같이 사용할 수 있다. https://epthffh.tistory.com/entry/Mybatis-%EC%97%90%EC%84%9C-CDATA-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0 Mybatis 에서 CDATA 사용하기 마이바티스에서는 CDATA..
Spring jsp에서 ajax로 PATCH, PUT, DELETE 요청시 파라미터 NULL 문제 Spring MVC 프로젝트에서 jsp 파일 안에 ajax로 PATCH 요청시 제대로 작업이 수행되지 않아 데이터를 출력해 보니 NULL값이었다. 이를 해결하기 위해서는 톰캣 서버의 server.xml 파일에서 Connector 태그에 parseBodyMethods="POST,PUT,DELETE,PATCH"를 추가해주면 된다. server.xml에 Connector 태그가 몇개 있을 텐데 아래 같이 port와 protocol 등 같은 정보를 넣은 Connector 태그에 추가해주면 된다. https://cchoimin.tistory.com/entry/Spring-REST-API-%EA%B0%9C%EB%B0%..
Spring Boot 윈도우(windows)에서 빌드(build)하고 실행 1. 스프링 부트 프로젝트가 있는 폴더에서 cmd 창 열기 (물론 cmd창을 열고 스프링 부트 프로젝트가 있는 경로로 이동해도 됨) 2. cmd창에 gradlew build 명령어 입력 gradlew build# 빌드 이때, 기존에 build했던 폴더를 삭제하고 싶다면 gradlew clean 명령어를 통해 삭제할 수 있다. gradlew clean# 빌드했던 폴더 삭제 추가로 한번에 기존에 build했던 폴더를 삭제함과 동시에 빌드하고 싶다면 gradlew clean build 명령어를 입력하면 된다. gradlew clean build# 빌드했던 폴더 삭제 & 빌드 3. 2번의 과정을 통해 build/libs 폴더 아래 jar..
Spring Boot AWS RDS MySQL 연동 AWS RDS MySQL을 스프링부트와 연결하려면 src/main/resources/application.properties에 들어가서 아래 내용을 넣어주면 된다. spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.url=jdbc:mysql://엔드포인트:3306/db이름 spring.datasource.username=root# 계정명 spring.datasource.password=0000# 비번