- [ Study/Spring ][Spring] CustomExceptionController2024-11-29 21:54:51@GetMapping("/read-md") public String readMarkdown(@RequestParam Map requestMap, Model model) throws NotFoundException, AccessDeniedException { Map boardSelect = service.boardSelect(requestMap); if(boardSelect == null) { throw new NotFoundException(); } // 중략 if((secYn.equals("Y") || code.equals(CategoryCode.DATA.code)) && role.equals(Const.ROLE_A..
- [ Study/Spring ][Spring] 검색 결과 미리보기2024-11-17 21:14:11이전 방법제목이 ‘일상, 토요일, 주말 …’ 이런 식이여서 검색 시 제목으로 검색했었다. 변경 내용제목을 일월시로 통일 시켜놔서 검색 시 게시글 내용으로 검색한다. 그래서 검색하면 네이버 카페처럼 내용이 조금 보여졌으면 싶었고 웹에디터 라이브러리(CKEditor5) 사용 중이라 게시글 내용이 html 코드로 파싱된다는 점을 인지했다.(막상 지금 들어가서 검색하니 안보이는데.. 전에 보였던건 다른 웹페이지에서 보였던 것 같다) html 코드를 제거하고 문자열만 추출하는 방법은 크게 2가지로 나뉘는데 첫번째 방법은 정규식으로 제거하기 또 하나는 html 파서 라이브러리를 사용해 html 코드를 제거하는 것이였다. 정규식으로 html 코드를 추출하는 것 보다 라이브러리를 사용해서 제거하는 방법이 훨씬 더 수월..
- [ Study/Spring ][Spring] 공개/비공개글2024-11-03 17:37:40게시판에 글 등록할 때 ‘비밀글 여부’에 체크박스 활성화를 시킨 경우 Spring Security에서 ROLE 확인 후 서버 내부에서 해당 게시글 표출 안되게 끔 하는 작업이다. 아무래도 페이지네이션이랑 같이 작업해야하는 부분이다보니 처음에 화면 단에서 Spring Security 써서 비밀 글 표출 안되게 하는 방법을 적용해봤는데 그럼 화면 단에서 페이지네이션도 해당 부분을 처리해야하는거라 그럴바엔 서버에서 처리하자.. 이렇게 생각하게 되었다. 사실 삽질을 좀 하긴 했는데(;;) 다시 한번 리마인드 해보니 굉장히 쉬운 작업이였다.. 일단 Controller 단에서 아래 부분을 호출해서 로그를 찍어보자. Authentication authentication = SecurityContex..
- [ Study/SSR ][SSR] Thymeleaf에서 Spring Security 사용하기(thymeleaf-extras-springsecurity6)2024-10-01 16:55:02만들고 싶은 거 있을 때 마다 적용할테니 짤막하게 사용 방법만.. 사용 전 build.gradle에 thymeleaf-extras-springsecurity6 라이브러리를 추가해줘야 한다. 나는 start.spring.io에서 처음에 프로젝트 생성 시 Spring Security를 선택해놔서 있긴한데 없으면 추가하자. dependencies { implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity6'} html에서 사용할 때는 아래와 같이 xmlns:sec="http://www.thymeleaf.org/extras/spring-security" 부분이 있어야 한다. 내가 자주 사용하는 속성은 아래 3개이다. ..
- [ Study/Spring ][Spring] RSS(XML) Parsing2024-09-21 14:32:43개인 홈페이지 배포하고 공부한 내용들을 올리려는데 블로그에 올린 내용이랑 겹치다보니 번거롭다는 생각이 들었다. 티스토리에서 RSS 지원하는 걸 알고 있어서 이 김에 RSS 파싱에 대해 다뤄봤다. 생각을 여러 개 좀 했었는데 뭐냐면.. DB를 다뤄야 하나.. 최신 글만 필요한걸까.. 내가 나중에 갖고오고 싶은 글을 가져오려나 생각 했었는데 아직은 그렇게까지는 할 생각이 없어서 DB에 값 안넣고 RSS 연동해서 최신 글만 가져오는 걸로 결정했다. 일단 RSS을 파싱할 파일 혹은 URL이 있어야 한다. 나는 내 티스토리 블로그의 RSS 주소를 application.yaml에 저장해놨다. rss: url: https://mytilblog.tistory.com/rss 이건 내 티스토리 블로그의 RSS 구성인데 참..
- [ Study/STS4 ][STS4] Gradle Project Import2024-09-20 23:32:34원래는 구글링하면 나오는 File - Import - Gradle - Existing Gradle Project … 이 방법으로 진행했었는데 이렇게 하면 에러도 중간에 많이 뜨고 무엇보다 작업하고 Commit 할 때 충돌이 계속 일어나서 못하겠더라.. 그래서 어떤 방법으로 할까 혼자 만져보다가 이 방법이 제일 나은 것 같아서 기록용으로 작성한다. STS4 실행Window - Show View - Other - Git - Git Repositories 클릭 후 Open 클릭Clone a Git Repository… 클릭URI는 Github Repository의 URI를 입력한다. Port 제외한 모든 정보 입력 후 Finish 클릭아래와 같이 나와있으면 반은 성공했다.프로젝트 우클릭 - Import Pro..
- [ Study/SSR ][SSR] SimpleMDE 적용하기2024-09-18 20:36:10이전에 마크다운 라이브러리를 2번 정도 사용했었는데 2번 다 방법이 달랐다. 첫번째는 수작업으로 textarea에 마크다운 문법만 붙여넣으면 오른쪽에 만들어둔 div에 marked 라이브러리 붙여서 실시간으로 마크다운 파싱해서 보여줬었고.. 두번째는 Toast UI Editor를 적용시켰는데 커스터마이징 할 수 있는 기능들은 SSR에서는 지원이 안되길래 이번에 SimpleMDE로 갈아탔다.1. SimpleMDE CDN 어디다 적용시켜야 하는지 모른다면 검색해보자.. 나는 thymeleaf에서 제공하는 layout 라이브러리로 공동 레이아웃을 따로 관리하고 있기 때문에 head.html에 적용시켜놨다.2. PrismJS CDN얘는 소스코드를 꾸며주는 역할을 한다. 보통 티스토리 블로그에서 문법 강조시키는...
- [ Study/Troubleshooting ][Troubleshooting] SSL 인증서 및 도메인 발급 이후 HTTP 기본 페이지로 나오는 문제2024-09-14 00:45:51공인 IP:포트로 접근했을 때는 잘 됐었다. 그러나 SSL 인증서 발급하고나서부터 기본 페이지가 나오는 게 아닌가.. 처음엔 설정 파일에서 documentRoot 경로를 dockerfile에서 작성했던 경로로 똑같이 바꾸는 바보 짓도 했었는데.. 생각해보니 공인 IP:Port로는 잘나오고 SSL 인증서 발급하자마자 안됐다? 프록시 쪽 문제라는 생각이 들었고 이 전에 Rocky Linux에서 SSL 인증서 발급받을 때 어떻게 했는지 찾아보니 아래 문구가 더 적혀져 있었다. ProxyPreserveHost OnProxyPass / ${라즈베리파이 IP 주소 }:${컨테이너 포트 }/ProxyPassReverse / ${라즈베리파이 IP 주소 }:${컨테이너 포트 }/ 이 부분을 추가하자. 파일은 /etc/a..
- [ Study/Troubleshooting ][Troubleshooting] 주소 [localhost]와(과) 포트 [8005]에, 서버 셧다운 소켓을 생성하지 못했습니다. (base 포트 [8005], offset [0])java.net.BindException: Address already in use: JVM_Bind2024-08-08 09:50:46이슈 발생 상황은 Windows에서 Tomcat을 돌릴 때(startup.bat을 실행했을 때) cmd 창이 바로 꺼지며 실행되지 않는 상황이였다. 에러 로그는 아래와 같다.08-Aug-2024 09:33:10.755 심각 [main] org.apache.catalina.core.StandardServer.await 주소 [localhost]와(과) 포트 [8005]에, 서버 셧다운 소켓을 생성하지 못했습니다. (base 포트 [8005], offset [0]) java.net.BindException: Address already in use: JVM_Bind at java.net.DualStackPlainSocketImpl.bind0(Native Method) at ja..
- [ Study/Troubleshooting ][Troubleshooting] the password has expired2024-07-11 00:01:40sql developer에서 패스워드 만료됐다고 접속이 안됐다.windows 기준으로 cmd에서 아래와 같이 작업해주면 된다. C:\Users\PC>sqlplus conn as sysdbaSQL*Plus: Release 11.2.0.1.0 Production on 화 7월 9 16:49:06 2024Copyright (c) 1982, 2010, Oracle. All rights reserved.비밀번호 입력:다음에 접속됨:Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit ProductionWith the Partitioning, OLAP, Data Mining and Real Application Testing optionsSQL> a..
- [ Study/Troubleshooting ][Troubleshooting] Spring war 배포 후 관련 이슈 모음2024-06-22 17:07:001. Access denied for user ‘root’@’localhost’ (using password: YES)데이터베이스 연동이 안된다? 대체 왜 안될까하다가 내 프로젝트에 데이터베이스 연동해놓은 부분을 찾아봤다. url 주소가 127.0.0.1로 되어있는데 이게 localhost니까 리눅스에서는 호스트 네트워크로 포트 포워딩한 192.168.56.103이라는 IP 주소로 접속하려고 시도하려나? 싶어서 127.0.0.1을 지우고 cmd에서 ifconfig하면 나오는 사설 IP 주소로 변경했고 이후 접속이 잘됐다.2. Host ‘IP Address’ is not allowed to connect to this MariaDB serverUSE mysql;SELECT HOST, USER, PLUGIN..
- [ Study/전자정부프레임워크 ][전자정부프레임워크] globals.properties 적용하기2024-06-22 11:40:35사진 게시판에 사진 등록하는 로직에서 개발 환경이랑 배포 환경의 디렉토리 구조가 달라 사진이 화면에 출력안되는 이슈가 있었다. 로그를 확인해보지 않아도 학원에서 리액트 반이랑 협업할 때 자연스레 알게된 점이긴 했지만.. 여튼 spring boot는 profile을 적용하면 됐었는데 전자정부프레임워크는 globals.properties를 적용한다고 한다! 환경에 따라 보다 효율적으로 관리하기 위해 globals.properties를 적용시켜보았다.1. classpath에 globals.properties 추가 dev - windowsprod - linux(rocky linux) 나는 resources 내에 생성했으며 globals.properties는 파일 내에 active=dev 혹은 active=pro..