Dev.BackEnd/Spring & Spring Boot
(10)
🔖
Dev.BackEnd/Spring & Spring Boot
📅
2024. 12. 24. 16:55
[스프링부트] 클라이언트와 서버와의 통신(@RequestBody, @ResponseBody, Jackson라이브러리)
클라이언트와 서버간의 어떻게 통신할까?http를 통해 통신이 된다클라이언트는 http를 통해 서버로 데이터를 보내는데 json문자열로 보내야만 한다.http로 요청할 때 body부분에서는 문자열로만 전송할 수 있기 때문이다. 즉 json.stringfy()를 이용해 json객체를 문자열로 만들어 보내야한다. 그럼 서버는? 서버에서 보통 게시판을 예로 들어 VO 객체를 return으로 응답을 하는데, 여기서 spring이 vo객체를 json문자열 형식으로 변환하여 응답한다. 이 때 스프링에서 사용되는것이 jackson 라이브러리이다. 그리고 http응답에 포함시켜 클라이언트에 요청을 보낼 때는 반드시 @Responsebody를 해줘야 http응답에 포함이 된다. 그렇지 않을 경우 jsp페이지, 템플릿을..

🔖
Dev.BackEnd/Spring & Spring Boot
📅
2023. 11. 16. 22:08
http를 https로 변경할 수 있도록 무료 ssl 인증서 발급 (certbot설치)
목차Certbot이란?Certbot은 Let's encrypt를 이용해서 ssl인증서를 발급, 갱신할 수 있게 도와주는 무료, 오픈소스 툴이다. 1. 설치하기nginx는 설치했다고 가정한다. 1-1.apt updatesudo apt-get update 1-2. NGINX HTTP에 대한 방화벽을 해제sudo ufw allow 'Nginx HTTP' 1-3. nginx 설정파일의 server_name을 도메인으로 변경한다.server { # 80번 포트로 서버 오픈 (ipv4) listen 80; server_name domain_name.com www.domain_name.com; # 엑세스 로그, 오류 로그를 남길 파일 경로 # 로그를 남기지 않을경우, ..

🔖
Dev.BackEnd/Spring & Spring Boot
📅
2023. 11. 7. 15:24
[springboot,mysql] mysql 5.xx버전에서 8.xx버전으로 바꿔 driver가 spring에 붙지 않을 때
로컬에서 mysql5.7버전을 사용하다, 개발서버에 mysql 8.0버전을 설치하여 개발서버의 mysql에 접근을 하려했다. 2023-11-07 09:36:54 [ERROR] [http-nio-8080-exec-1] [o.s.s.w.a.UsernamePasswordAuthenticationFilter] - An internal error occurred while trying to authenticate the user. org.springframework.security.authentication.InternalAuthenticationServiceException: nested exception is org.apache.ibatis.exceptions.PersistenceException: ### ..

🔖
Dev.BackEnd/Spring & Spring Boot
📅
2023. 10. 17. 10:55
[spring boot] multipart타입으로 파일업로드를 할 때 파일사이즈로 인한 오류 해결방법
content-type을 multipart로 파일업로드를 구현하고 파일업로드에 문제가 없었는데 어늘 갑자기 에러가 발생했다. "org.springframework.web.multipart.MaxUploadSizeExceededException: Maximum upload size exceeded; nested exception is java.lang.IllegalStateException: org.apache.tomcat.util.http.fileupload.impl.FileSizeLimitExceededException: The field file exceeds its maximum permitted size of 1048576 bytes.\r\n\tat org.springframework.web.mu..

🔖
Dev.BackEnd/Spring & Spring Boot
📅
2023. 10. 7. 11:04
[스프링부트] 알림 기능(실시간 알림 받기) SSE사용 (feat lastEventId)
알림 기능을 추가하고자 한다.결론부터 얘기하면 알림은 많은 방법으로 알림을 구현할 수 있지만, SEE를 사용했다.단순 SSE를 통해 클라이언트가 서버에 구독하고,메세지를 받는건 쉽게 할 수 있었다.문제는, 이미 구독하여 알람을 받고있는 클라이언트가 네트워크 문제로 인해, 알림을 받아야 하는데 받지 못한 알림을 클라이언트가 네트워크가 원활히 되고 다시 새로운 페이지로 진입했을 때 받지 못한 알림을 전송하는데 있어 많은 시간이 소요되었고 완벽하지 않았다. 어떤 방법으로 테스트를 하고 경우의 수를 찾느라 많은 시간을 소비했다. 알림방식에는 여러개 있지만 Poling(일정주기로 호출), Long Poling(업데이트시에만)은 많이 사용하지 않는다. 웹소켓으로 실시간 알림을 구현해본적이 있는데 이버넹는 SSE를..

🔖
Dev.BackEnd/Spring & Spring Boot
📅
2023. 9. 20. 18:52
SpringBoot: @RequestParam vs @RequestBody이해하기
requestparam▶form으로 데이터 넘길 때:requestparam은 url 상에서 데이터를 찾는다.결론: form형식일 경우 reqeustparam이용(이름이 같아야함) ex: 검색api할 때 사용 ※ form에서 input안에 value가 제이슨데이터를 가지고 있는 객체일경우.이걸 폼으로 전송하려 할 때 그 input안의 value를 json stringfy로 바꿔서 보내야 requestparams으로 받을 수 있다.※ form안에 있는 모든input값들을 ajax로 보내고 싶을 땐 form의 id값을 serialzeObject로 해서 ajax로 보내야한다. ▶ajax로 넘길 때ajax로 마찬가지다.json객체도 map으로 받는거 가능 map.get('key')json객체의 name을 하나하나..

🔖
Dev.BackEnd/Spring & Spring Boot
📅
2023. 8. 25. 18:49
[스프링부트] Scheduled을 이용해 일정시간 또는 특정시간에 코드가 실행되게 해보자
개발을 하면서 매일 특정 코드가 동작해야 하는 경우가 있다.가령 자정에 쇼핑몰 이벤트를 사용자에게 보여주기 위해 이벤트 여부가 N이었던걸 Y가 되게끔 하던가, 또는 특정 회원의 상태 변경이 자정이 되었을 때, 특정시간이 되었을 때 변경을 해야할 때 @Scheduled을 이용하면 된다. 사용방법:1. @EnableScheduling는 작업 스케쥴러를 활성화한다. @SpringBootApplication이 선언된 곳에 @EnableScheduling 어노테이션을 추가해 스프링 스케줄링 기능을 활성화를 시키면 된다.하지만 나는 package로 core라는 파일을 만들고, 그 안에 scheduleConfiguration.java 클래스 파일을 생성해 빈으로 등록하였다.그리고 ExecutorFactoryBean를..

🔖
Dev.BackEnd/Spring & Spring Boot
📅
2023. 8. 24. 21:08
[Spring boot] 웹페이지 tiles를 사용해서 간편하게 레이아웃 설정하기
tiles: 개발할 때 공통으로 사용되는 상위에 배치된 네비게이션바, 메뉴, 그리고 하단의 회사정보 같은 header, footer를 각 jsp 페이지마다 입력해야하는 번거로움을 한꺼번에 처리할 수 있게 해주는 아파치 라이브러리이다. 1. pom.xml에 추가해준다. org.apache.tiles tiles-jsp 3.0.5 2. mvcconfiguration에 코드작성 /** * Tiles View * * @return */ @Bean public UrlBasedViewResolver tilesViewResolver() { UrlBasedViewResolver ..

🔖
Dev.BackEnd/Spring & Spring Boot
📅
2023. 8. 19. 16:13
파일업로드 이후 파일이미지 조정을 위한 섬네일 만들기
파일업로드를 한 뒤, 외부파일에 저장된 파일을 불러오긴 했지만, 서로 다른 사진사이즈이다 보니, 부트스크랩에 적용시킨 CSS를 건들 수는 없어서, 사진을 등록할 때 여러 사이즈를 등록하기로 했다.그래서 이용할 건 thumbnailator 라이브러를 이용하려 한다.이걸 사용해 파일 한개를 등록했을 때 원본파일, 200x200사이즈(S), 400x400사이즈(M) 총 3개를 등록하게 하려한다. 1. pom.xml dependency추가 net.coobird thumbnailator 0.4.8 2. vo추가 imageName: 섬네일로 복제된 파일이름flag: 사이즈 S, MimageList: 저장하려는 파일, S, M 총 3개를 list에 넣어 포문을 돌릴 예정public class FileInfo { ..

🔖
Dev.BackEnd/Spring & Spring Boot
📅
2023. 8. 17. 23:55
Spring Boot 프로젝트 외부 경로 파일 접근하기
항상 다른 사람이 세팅해준것만 사용하다보니, 파일업로드한 이미지도 불러오는 것에 너무 애를 먹었다.그래서 파일업로드를 한 뒤, 스프링MVC 설정을 통해 화면에서 보여주는 과정을 정리해보려 한다. 1. 정적 리소스 SpringMvcConfiguration.java를 만들어 준 뒤, WebMvcConfigurer 를 implements해준 뒤, addResourceHandlers method를 오버 라이딩하고 리소스 등록 및 핸들러를 관리하는 객체인 ResourceHandlerRegistry를 통해 리소스의 위치와 리소스와 매칭 될 url을 설정을 설정 한다. /** * static resources */ @Override public void addResourceHandl..
