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. build.gradle compile "org.springframework.data:spring-data-redis:1.8.23.RELEASE" compile "redis.clients:jedis:2.9.3" 2. 빈 설정 추가 3. Controller.java 사용 예제 import org.springframework.data.redis.core.RedisTemplate; @Autowired private RedisTemplate redisTemplate; // 데이터 저장 HashMap dateMap = new HashMap(); dateMap.put("email", "aaa@abc.co.kr"); dateMap.put("mobile", "12341234"); redisTemplate.opsFo..
일하면서 사용한 java stream 몇 가지 예제들을 기록해둔다. import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import java.util.function.Function; import java.util.function.Predicate; import java.util.stream.Collectors; import java.util.stream.Stream; public class StreamFilter01 { public static void..
동적으로 다른 클래스의 메서드와 필드값을 불러와서 사용해야 하는 경우, Java Reflection을 활용하면 가능하다. // 메서드------------------------------------------------------------------------- Method getSomethingMethod = ClassName.getClass().getDeclaredMethod("getSomething", String.class); getSomethingMethod.setAccessible(true); // private 함수 접근 허용. String someString = (String) getSomethingMethod.invoke("something"); // 불러올 메서드가 static일 때...