Dev.BackEnd
(15)
🔖
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/Mysql
📅
2023. 12. 5. 12:25
DBeaver에서 다른테이블은 F4(open Declaration)이 작동하는데 User테이블에서는 작동 안되는 이유
보통 회원은 user테이블 또는 member테이블로 테이블명을 짓습니다.저 또한 user, member를 사용하는데, 컴퓨터 환경에 따라 다를 수 있지만, user의 속성을 보고 싶어 단축키 f4 또는 마우스 오른쪽 버튼을 클릭한 뒤 open Declaration이 동작하지 않았습니다.가령 board나 file테이블은 f4로 한번에 속성을 볼 수 있는데 user테이블에서는 동작을 안했던 이유는 user나 member가 예약어이기 때문입니다.일단 색상부터 달랐는데, 별 생각없이 그냥 user는 안되나 보다 생각하고 넘어갔습니다.하지만 user는 너무 자주 사용하는 테이블이기 때문에 계속 신경을 거슬리게 했습니다. 원인 ❓ DBeaver에서 예약어는 "Open Declaration" 또는 "Go to De..

🔖
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/Jsp
📅
2023. 10. 13. 15:18
스프링부트 프로젝트 JSP 환경에서 백틱 ``으로 변수를 출력하지 못할 때
자바스크립트가 ES6인거 확인, JS환경에서 화살표함수도 사용가능확인 하지만 백틱이 사용되지 않았다. 정확히 백틱안에 변수를 출력하지 못했다. JSP 환경에서 사용하려면 \${} 형태로 변수를 넣어줘야 한다.
🔖
Dev.BackEnd/Spring & Spring Boot
📅
2023. 10. 7. 11:04
[스프링부트] 알림 기능(실시간 알림 받기) SSE사용 (feat lastEventId)
알림 기능을 추가하고자 한다.결론부터 얘기하면 알림은 많은 방법으로 알림을 구현할 수 있지만, SEE를 사용했다.단순 SSE를 통해 클라이언트가 서버에 구독하고,메세지를 받는건 쉽게 할 수 있었다.문제는, 이미 구독하여 알람을 받고있는 클라이언트가 네트워크 문제로 인해, 알림을 받아야 하는데 받지 못한 알림을 클라이언트가 네트워크가 원활히 되고 다시 새로운 페이지로 진입했을 때 받지 못한 알림을 전송하는데 있어 많은 시간이 소요되었고 완벽하지 않았다. 어떤 방법으로 테스트를 하고 경우의 수를 찾느라 많은 시간을 소비했다. 알림방식에는 여러개 있지만 Poling(일정주기로 호출), Long Poling(업데이트시에만)은 많이 사용하지 않는다. 웹소켓으로 실시간 알림을 구현해본적이 있는데 이버넹는 SSE를..

🔖
Dev.BackEnd/Jsp
📅
2023. 9. 25. 15:17
ajax를 사용하여 jstl을 사용하여 양방향 바인딩처럼 사용하고 싶을 때(vue처럼)
vue를 하다보면 axios를 사용하여 비동기로 데이터를 가져와서, 그 데이터를 v-model을 사용하여 table의 데이터를 비동기적으로 조작할 수 있었다. vue를 사용하지 않고 jsp에서 ajax로 데이터는 가져왔는데.. 이 데이터를 현재 for문을 사용하여 테이블에 데이터가 있는데 이걸 어떻게 조작할까? 결론부터 말하면 현재 페이지 이외의 다른 jsp파일을 생성하여 현재 페이지에서 그려주고 싶었던 테이블을 그대로 작성한 뒤 jsp페이지를 리턴으로 불러와 제이쿼리의 .html을 사용하여 내용을 바꾸는 것이다. 1. 컨트롤러 => 쿼리를 사용하여 데이터를 가져온 뒤 모델로 넘겨준다. 넘기는 page는 test페이지다. @RequestMapping(value = "/user/friendList{type..
🔖
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를..
