TroubleShooting (5) 썸네일형 리스트형 Form 전송 시 JSON타입 파라미터 매핑 최근 엑셀 다운로드 기능을 추가하는 업무를 수행하던 도중 맞닥뜨린 문제이다.검색폼을 통해 설정된 조건으로 조회한 데이터를 엑셀로 다운로드 할 수 있도록 기능을 제공하는 업무였는데,form의 action 시에 검색조건 파라미터 값들이 전부 null로 들어가서 제대로 된 데이터를 추출할 수가 없었다.JSP 파일에서 작업이 이루어졌고, JSP의 기본 form 제출 방식은 application/x-www-form-urlencoded형식이기 때문에 JSON타입의 파라미터를 받기 위해서는 form 태그의 데이터를 JavaScript를 통해 JSON 형식으로 변환하고 AJAX 요청을 사용하여 서버로 전송해야했다.나의 경우는 위의 JavaScript를 통해 JSON 형식으로 form 데이터를 변환하는 방식으로 해결을 .. Java Excel 업로드 오류해결 Java 엑셀 업로드 기능을 구현하던 중 에러를 맞이하게 되었다. pacjage should contain a content type [M1.13] 엑셀 형식이 다르거나 파일이 손상된 경우파일이 보안이 걸려있을 때 발생하는 에러였다. 코드상에서 XSSFWorkbook을 사용하는데 엑셀파일의 확장자가 xls인 경우에 발생하기도 한다. 이럴 때에는 xlsx 확장자만 처리할 수 있으니 확장자를 변경해보자. 필자의 경우는 파일에 보안이 걸려있어서 해당 에러가 발생하였고, 잠금을 해제한 후 다시 시도해보니 정상적으로 기능하였다. 엑셀파일을 읽을 수 없는 경우에 발생하는 경우가 많으니 엑셀 업로드 기능을 구현할 때 확인해보자. [Trouble Shooting] Ajax 공통화 작업 현재 운영 중인 서비스의 Front는 JSP 파일로 되어있다.$.ajax를 통해 API 통신을 하고 있는데.. 외부 API 통신 중 시간이 오래 걸리는 항목들이 있어서 사용자 편의성을 위해 로딩바를 추가하기로 결정하였다. Ajax의 옵션인 beforeSend, complete 콜백을 활용해서 로딩바를 보여주고, 숨기는 방식으로 구현하려고 했다. 이 부분에서 이제 의문점이 생겼다. 이렇게 작업하면 앞으로 로딩바를 추가하고 싶은 모든 API호출 함수에 beforeSend, complete 콜백을 활용해야 하는 것 아닌가?? 이를 간편하게 해결하는 방법이 없을까 고민하다가 Ajax 호출 함수를 커스터마이징 해서 로딩바를 기본적으로 노출하고 선택적으로 로딩바를 숨기는 방식으로 변경하는 방법을 사용해 보기.. [톰캣] WAR 파일 배포 문제 해결 요새는 Jenkins, GitLab CI/CD, Travis, Azure 등을 활용하여 배포하는 경우가 많은데 아직 관련된 배포라인을 구성해 놓지 않은 상태에서 원격서버에 WAR 파일을 수동배포해야 하는 상황이 닥쳤다...! 열심히 구글링을 하여 관련된 자료들을 검색했고 순서를 정리해 보았다. 1. 배포할 WAR파일 준비 IntelliJ를 사용한다면 상단 메뉴의 Build -> Build Artifacts... -> Build 를 통해 손쉽게 WAR파일을 만들 수 있다.2. Tomcat 배포 디렉토리에 WAR파일 복사 일반적으로 Tomcat 디렉토리의 webapps 폴더에 war파일을 복사하여 배포한다.3. Tomcat 재시작 (선택사항)톰캣은 기본적으로 webapps 폴더에 새로운 war파일이 복사되면.. [SpringBoot] SecurityConfig 설정에 따른 인증오류.. !!!! 문제 상황 진행 중인 프로젝트에서 이미지 파일을 AWS 서버에 업로드하는 방식으로 바꾸게 되었다. SpringBoot 프로젝트는 현재 관리자 페이지 API와 Client-API가 분리되어 있지 않고 프로젝트 내에 패키지만 별도로 구성되어 있다. Client-API 패키지에 작업을 한 이미지 업로드 API를 관리자 페이지에서 사용하려고 하니.. 401 인증오류가 나는 것이었다!! 아니 대체 무엇 때문에...? ***문제 해결 방법우선.. 로컬환경에서 테스트 하는 도중 jwt 토큰 관련한 에러가 발생했다. 아니 토큰 값이 안들어갔다고?! 개발자 도구를 켜서 확인해보니 토큰정보가 Header에 들어가 있다.. 디버그 모드 실행 후 doFilter() 메서드를 확인해 보았다. 다른 API를 호출할 때는.. 이전 1 다음