본문 바로가기

분류 전체보기

(25)
하루종일 화가났던 Querydsl gradle 설정 오류에 대하여.. JPA 공부를 하던 중 동적 쿼리를 처리하기 위해 Querydsl 을 사용 해보려 했다. 가장 먼저 gradle 설정을 하고 comopileJava를 실행하여 QBaseEntity와 QBoard가 생성되는지 확인하려 했다. 그런데 안된다. 책을 보고 공부하던 중이라 책에 적힌대로 build.gradle을 작성했었다.buildscript{ ext { queryDslVersion = "5.0.0" }}plugins { id 'java' id 'org.springframework.boot' version '3.3.1' id 'io.spring.dependency-management' version '1.1.5'}group = 'org.zerock'version = '0...
(spring)Assert Class 4. Spring Assert class이번에는 Spring Framework 에서 제공하는 Assert 클래스이다. 아래 문서를 참고 하였다.[springframework Assert class](https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/util/Assert.html)패키지 위치는 org.springframework.util.Assert `public abstract class Assert extends Object`public 접근 제어자에 java.lang.Object를 상속하는 추상 클래스라고 한다.지금까지 포스팅 했던junit의 Assert 클래스는 public class,Asserti..
(Junit5)Assertions Class 3. Junit5 Assertions Class아래 문서를 참고하였다. Assertions ClassJunit5의 Assertions 클래스도 Assert 클래스와 크게 다르진 않지만 약간의 차이가 있었다.우선 해당 클래스의 설명이다.안정 버전이며, 5.0부터 지원한다.public final class Assertions extends Object이 부분이 차이가 있는데 Assert 클래스는 `public class Assert extends Object` 였다. Assertions 클래스에는 final이 생긴것이다. Assert 클래스는 final이 없고 생성자가 protected라 Assert클래스를 상속하는 커스텀 클래스를 만들수 있었다.(권장하는 방법은 아닌것같다.) 그런데 Assertions 는..
(Junit4)Assert Class 2. Junit4 Assert Class아래의 문서를 참고하여 작성하였다.Assert Class저번에 포스팅 했던 java의 assert는 예약어였는데 Junit의 Assert는 클래스 였다.org.junit.Assert 경로의 public 클래스이며 Object클래스를 상속받는다.처음부터 거의 모든 설명이 한줄로 나오는데 테스트를 작성할때 유용하고, 실패할때만 기록되며 직접 사용할수 있지만, 정적 가져오기로 참조하면 더 좋다.다음으로 생성자 설명이 나온다protected Assert() | 정적 전용 클래스이기 때문에 생성자를 보호해라우선 생성자의 접근 제어자가 protected 라서 같은 패키지의 상속받은 클래스에서만 접근이 가능하다 -> 외부에서 직접적으로 호출이 불가능하다 -> 인스턴스화 하지 ..
(Java)assert 최근 아주 간단한 기본중에 기본만 구현하는 스프링 레거시 프로젝트를 개발일지에 남기면서, 유효성 검사를 하는 부분이 참 생각할게 많았다. 특히나 객체가 Null인지, 문자열이 공백인지 공백만 있는 문자열인지 등 간단한 기능이고 내가 완벽하게 구현하는게 아님에도 불구하고 시간이 걸리는 부분이 꽤 있었다.자주 사용되는 (java)assert, (junit)Assert, (Spring)Assert, (junit)Assertions 는 assert의 주장하다 라는 뜻을 따라 유효성검사를 할때 자주 사용하는 것으로 알고 있는데, 내가 글을 작성 하는 이유는 저 네가지가 너무 헷갈리기 때문이다.전부 비슷한 역할을 수행하는데 다 다른 애들이다...대충의 사용법은 비슷하지만, 정확히 알고 제때 사용하기 위해 무엇이 다..
2024-06-26 검색어 공백제한5 현재 문제점sql injection검색어 중간에 공백이 있는 경우 검색결과가 예상과 다름 예) 제목이 java joa인 게시물이 있을때 javajoa로 검색하면 검색 결과가 없다고 나온다.예) 제목이 java와 java joa인 게시물이 있을때 java(공백)으로 검색하면 java joa만 나온다.현재 검색어 중간 또는 앞 뒤에 공백이 포함되어 있을 경우 검색결과의 일관성이 없다.사용자마다 검색 습관이 다를수 있어서 이 문제를 꼭 해결해보고 넘어가야겠다고 생각했다.db에는 공백이 포함된 데이터가 저장되어 있고 현재 검색을 할때title like concat('%', #{keyword}, '%')로 검색을 수행한다. MyBatis에서 #{}을 사용하면 ""을 붙여 바인딩 하기 때문에 검색어가 java라면t..
2024-06-23 검색어 공백제한 4(이게 진짜 4번째) 저번 일지 제목을 4라고 썼는데 이게 진짜 4번째다. 저번 포스팅을 수정하려고 했으나 서식이 바뀌는 문제가 있어서 수정 안하는걸로..현재 문제점1. 공백 검색 및 sql 인젝션에 취약함모든 유효성 검사를 서버측에서 하는것이 아닌 클라이언트와 분배하기로 했으므로 클라이언트 측에서 types와 keyword를 검사하기로 했다. 제목 검색 내용 검색 검색어 : Search 스크립트를 통해 form 태그의 submit ㅈ이벤트가 발생하면 input id="keyword"의 값을 앞뒤 공백을 제거하여 let keyword에 대입한다.input id="title"의 checked 여부를 let title에 대입한다.input id="content"의 checked 여부를 let..
2024-06-21 검색어 공백제한4 현재 문제점1. 공백 검색 및 sql 인젝션에 취약함해결해보기서버측에서 유효성 검사를 하기로 결정했으므로 이제 어떻게 할것인가를 고민해야 한다.아래는 현재 상황이다.@NotBlank로 검색어를 값으로 가지는 SearchDTO의 변수 keyword의 유효성을 검사하려 함notes table의 전체 데이터 확인 가능한 getList() 있음(getSearchList()로 인해 지금은 사용 안함)SearchDTO(검색 조건, 검색어)를 매개변수로 받는 getSearchList() 있음mybatis로 구현 를 사용해서 SearchDTO의 types에 값이 없으면 전체 조회를 함@NotBlank 어노테이션을 SearchDTO 의 keyword 변수에 적용하는 순간 keyword에 값이 없거나 공백만 있다면 아래와..