라이브러리 사용해도 충분히 만들 수 있고 더 간편하지만.. 기획과 설계가 쪽대본처럼 진행되는 내 경력사상 초유의 프로젝트에서.. 개발이 끝난다고 해도 어떤 요상한(-_-) 추가 요구사항이 들어올지 모르는 뭐같은 환경에서는 쌩으로 만드는 것이 추후 정신 건강에 좋을 수도 있다. 라이브러리는 갖다 쓰기는 편해도 입맛에 맞게 고치기 힘드니까 말이다. 혹시라도 나처럼 쌩으로 만들어야 하는 사람들을 위해 위의 이미지 같이 구현되는 소스를 공유한다. ▽ page.jsp 멀티플 셀렉트 체크박스 선택하시오. 저장 자동검색완성 해보자. ▽ page.js document.addEventListener("DOMContentLoaded", function(event) { // 멀티플 셀렉트박스 영역을 클릭했을 때 동작 Set..
Restful API서버라면 이런 처리를 할 필요가 없겠지만, 앞뒤(frontend/backend)가 붙어있는 프로젝트라면 CSRF 공격 방지는 해놓는 게 좋다. 1. 디펜던시 추가 - Gradle 기준 implementation 'org.springframework.boot:spring-boot-starter-web' // Spring Security implementation group: 'org.springframework.boot', name: 'spring-boot-starter-security', version: '2.6.1' 2. Configuration 설정 import java.io.IOException; import javax.servlet.ServletException; import ..
백엔드/프론트엔드 구분해서 개발하는 추세라 리액트나 vue 사용하면 쌩으로 페이징을 개발해서 쓸 것 같진 않은데, 그래도 정리차 올려놓는다. 참고로 pagingUtils쪽 로직은 내가 개발한 부분은 아니고, 먼저 이전 분이 개발해놓으신 거다. 퍼블리싱은 알아서... ▽ paging.js /** * 페이징 처리 JS */ var pagingUtil = { pagingView: function (currentPageNo, pageSize, totalCount, targetFunction) { var pageNo = parseInt(currentPageNo); // 현재 페이지 번호 var countPage = 10; // 한 화면에 출력될 페이징 개수. var finalPageNo = parseInt(tot..
import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.net.URLEncoder; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class DownloadFile { /** * 파일 다운로드 * * @param filePath: 파일명.ext을 포함한 전체 경로 * @param fileName: 파일명.ext * @param reque..
예전에 Spring에서 파일 업로드 하는 방법을 올린 적이 있었는데([Spring] Spring으로 파일 업로드하기.), 이번엔 조금 더 간편한 방법으로 올린다. import java.io.File; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; import org.apache.commons.io.FileUtils; import org.springframework.web.multipart.MultipartFile; public class FileUtils { // 파일업로드 public static void upload(List multipartFileList) throws Exception { try { ..
1. fetch를 사용한 이유 jquery ajax를 사용하지 않고(바닐라 자바스크립트 지향) 비동기 호출을 할 수 있는 방법을 찾던 중, 원시적인 XMLHttpRequest를 사용하는 방법과 fetch API를 사용하는 방법 대략 두 가지가 있음을 알게 되었다. XMLHttpRequest의 경우 브라우저별로 객체 생성을 달리해야 하는 번거로움이 있다. 그래서 나온 게 ajax. 그러나 난 jquery를 기반으로 하는 ajax를 쓰고 싶지 않다! 고로 XMLHttpRequest에 비해 브라우저 호환성 걱정할 필요없고 사용법도 간단한 fetch를 선택했다. 아래는 실제 프로젝트에 사용한 예제다. 2. 예제 /** * 비동기 호출 함수 (POST-일반) * @param {string} url 비동기 호출할 ..