반응형 전체 글219 PHP trim(), preg_replace() 문자열 공백 제거 trim(): 문자열 앞 뒤 공백 제거 preg_replace(): 정규식으로 모든 공백 제거 가능 \s : space 를 표현하며 공백 문자를 의미한다. 2023. 2. 28. [Spring Boot] 스프링 부트 시작 - 프로젝트 만들기 1. 스프링 부트 스타터 사이트로 프로젝트 생성 https://start.spring.io/ 2. 프로젝트 선택 Spring Boot 버전은 SNAPSHOT 이 아닌 정식 릴리즈된 버전을 선택 압축을 풀고 intelliJ에서 open 기본 설정은 끝 2023. 2. 19. ModelAndView에서 Thymeleaf 사용하기 컨트롤러에서 창을 제어하기 위해 ModelAndView를 사용하였다 1. data 전달 - controller @PostMapping("/model") fun modelTest():ModelAndView{ val modelAndView = ModelAndView() modelAndView.viewName = "board" modelAndView.addObject("data","12345") return modelAndView } templates에 board.html을 작성하여 페이지를 구성한다 - board.html bord.html에서는 data를 전달 받아 사용 2. 현재 열려있는 창을 닫는 기능도 구현 가능하다 - controller @PostMapping("/model") fun modelTes.. 2022. 12. 14. QueryDSL select절에 subQuery 조회 join 하고 중복된 데이터를 제거하기 위해 select절에 서브 쿼리를 작성한다 fun findWithdrawMember(): List { return queryFactory.select( QWithdrawMemberList( member.id, JPAExpressions.select(memberToken.ipAddress).from(memberToken).where(memberToken.id.eq(member.id)).orderBy( memberToken.id.desc()).limit(1), member.createdAt.stringValue(), member.updatedAt.stringValue() ) ).distinct().from(member).leftJoin(memberToken).disti.. 2022. 12. 13. [QueryDSL] 동적 쿼리 작성하기/BooleanBuilder, BooleanExpression 조건에 따라 쿼리문을 다르게 작성하고 싶을 때 쓰는 방법 - BooleanBuilder fun findDynamicQuery(name: String?, age: String?, phoneNumber: String?):List{ val builder = BooleanBuilder() if (!StringUtils.isNullOrEmpty(name)) builder.and(member.name.eq(name)) if (!StringUtils.isNullOrEmpty(age)) builder.and(member.age.eq(age)) if (!StringUtils.isNullOrEmpty(phoneNumber)) builder.and(member.phoneNumber.eq(phoneNumber)) return.. 2022. 12. 7. Spring Boot REST API Key 만들어서 적용하기 특정 인증키를 사용하여 접근을 하도록 구현 APIKeyAuthFilter import org.springframework.security.web.authentication.preauth.AbstractPreAuthenticatedProcessingFilter import javax.servlet.http.HttpServletRequest class APIKeyAuthFilter(private val principalRequestHeader: String) : AbstractPreAuthenticatedProcessingFilter() { override fun getPreAuthenticatedPrincipal(request: HttpServletRequest): Any { return request.g.. 2022. 11. 15. [Spring Boot] Interceptor로 토큰 검증 적용 중복된 토큰검증코드를 한 번에 검증하기 위해 Interceptor를 사용하였다 Interceptor는 컨트롤러에 들어오는 요청 HttpRequest와 컨트롤러가 응답하는 HttpResponse를 가로채는 역할을 한다 preHandle을 사용하여 컨트롤러가 호출되기 전에 토큰 검증을 하도록 구현하였다 HandlerInterceptor를 상속받는 AuthInterceptor를 구현한다. @NoArgsConstructor class AuthInterceptor :HandlerInterceptor { @Autowired lateinit var memberService: MemberService @Throws(Exception::class) override fun preHandle(request: HttpServ.. 2022. 11. 10. [Spring Boot] AOP 적용하기 Gradle dependency 추가 implementation("org.springframework.boot:spring-boot-starter-aop") AOP를 활성하는 어노테이션 추가 Application 클래스에 추가해준다 @EnableAspectJAutoProxy @SpringBootApplication(exclude = [SecurityAutoConfiguration::class]) class Application fun main(args: Array) { runApplication(*args) } AOP를 처리하기 위한 어노테이션 import java.lang.annotation.ElementType import java.lang.annotation.RetentionPolicy @Targe.. 2022. 11. 1. [Kotlin]CrossOrigin Annotation 여러 origin 사용 CrossOrigin 어노테이션을 사용하다가 한 개의 url이 아닌 여러 개의 url을 사용하는 일이 생겨서 찾아봄 한 개만 사용할 경우 @CrossOrigin("http://localhost:8080") 여러 개 사용할 경우 @CrossOrigin(value = ["http://localhost:8080","http://localhost:8000", "http://localhost:3000"]) 2022. 10. 31. 이전 1 2 3 4 5 6 ··· 25 다음 반응형