목록웹 개발/Back-end (11)
개발 기록이
JPA(Java Persistence API)란?객체 지향 프로그래밍과 관계형 데이터베이스 간의 차이를 자동으로 연결해 주는 역할을 하며 다음과 같은 장점이 있다. 1. SQL 중심 -> 객체 중심 개발 JPA를 사용하지 않으면 JDBC API를 통해 직접 SQL 쿼리를 작성해야 하는데, 프로젝트가 커지면 쿼리가 복잡해지고 관리가 번거로워질 수 있다. JPA는 이러한 SQL 의존도를 줄여주며, 복잡한 프로젝트에서도 객체 중심의 개발을 통해 더 효율적으로 작업할 수 있게 한다. 2. 생산성 증대CRUD를 간단한 메서드를 통해 사용할 수 있다.저장: jpa.persist(member)조회: Member member = jpa.find(memberId)수정: member.setName("변경할 이름")삭제: ..
필터는 1개 이상이 존재할 수 있으며 각각의 필터는 맡은 작업을 수행하고 작업이 다음 필터에서 수행될 수 있도록 제어권을 넘겨주면서 최종적으로 서블릿까지 도달한다. FilterChain은 요청이 여러 필터를 거쳐 최종적으로 서블릿에 도달하도록 하는 구조.각 필터는 doFilter 메서드 내에서 chain.doFilter(request, response)를 호출하여 다음 필터 또는 서블릿으로 요청 전달.필터 체인의 각 필터는 요청과 응답을 처리할 수 있으며, 필터 체인이 완료되면 서블릿이 요청을 처리.출처 : https://realrain.net/posts/spring-security-filterOpenAI ChatGPT (https://openai.com)
Java로 난수를 생성하는 방법이 여럿 있는데 대표적인 3가지 방식을 정리해보려고 한다. 1. Math.random() 메서드 0.0 이상 1.0 미만의 난수가 생성된다. 그러나 Math.random()은 고정된 시드를 설정할 수 없어, 동일한 난수 시퀀스를 재현하기 어렵다는 단점이 있다. import java.util.*;class Main { public static void main(String[] args) { double num1 = Math.random(); int num2 = (int)(Math.random()*100); // 0 ~ 100 사이의 난수 생성 System.out.println(num1); System.out..
자바를 사용하여 원하는 URL로 이동할 수 있는 QR 코드 이미지를 다운로드하는 방법에 대해 알아보자.@RequestMapping("/qrDownload.do")public void qrDownload(HttpServletResponse response) throws WriterException { try { //QR코드 이미지 생성 QRCodeWriter qrCodeWriter = new QRCodeWriter(); Map hintMap = new HashMap(); hintMap.put(EncodeHintType.CHARACTER_SET, "UTF-8"); BitMatrix bitMatrix = qrCodeWriter.encode("..
프로젝트 내에 있는 특정 파일을 다운로드하는 url을 만들어보려고 한다.(다운로드할 파일의 경로 : http://localhost:8080/resources/file/sample.pdf)@RequestMapping("/downloadFile.do")public void downloadFile(HttpServletResponse response) { String fileUrl = "http://localhost:8080/resources/file/sample.pdf"; try { Path tempFilePath = Files.createTempFile("sample", ".pdf"); URL url = new URL(fileUrl); Files.c..
1. File 클래스File 클래스는 파일 및 디렉터리를 생성하고 존재 여부를 확인하는 기능을 제공한다.File file = new File("test.txt"); 대표적인 메서드를 살펴보자. 1) file.createNewFile() : 파일 생성2) file.mkdir() : 디렉터리 생성File dir = new File("testDir");if(dir.mkdir()) { System.out.println("디렉토리 생성");} 3) file.exists() : 파일 또는 디렉터리 존재 여부 확인4) file.getName() : 파일 이름5) file.getPath() : 파일 경로6) file.getAbsolutePath() : 파일 절대 경로7) file.length() : 파일 크기(b..
지난 포스팅에 이어서 업로드한 파일을 자바 서버단에서 처리하는 방법에 대해 알아보려고 한다.예전에는 주로 MultipartHttpServletRequest를 사용하여 멀티파트 요청을 처리했지만, Spring 3.1 이후부터는 MultipartFile이 도입되어 더 간편하고 효율적인 파일 업로드 처리를 할 수 있다고 한다. 각 방식을 통해 어떻게 파일을 저장하는지 알아보자! 📌 프론트단에서 파일 업로드하는 방법 확인하기 속성과 자바스크립트로 파일 정보 보내기" data-ke-align="alignCenter" data-og-description="파일 관련 기능 구현할 때 제대로 정리가 안 되는 것 같아서 클라이언트에서부터 서버에서 어떻게 file 값을 받고 처리하는지 정리를 해보려고 한다. 1. 속성..
Spring boot 프레임워크에서의 @Controller, @RestController과 URL 리다이렉트 하는 방법에 대해 알아보자. 1. @Controller 란?사용자가 특정한 URL로 요청을 보내면, 이 요청을 받아들이고 처리하는 역할을 하는 클래스가 필요하다. 이 클래스에는 해당 요청을 처리하는 메서드가 정의되어 있는데 이 메서드는 요청을 처리한 후 사용자에게 응답을 보내는 역할을 한다. @Controller 어노테이션이 붙은 클래스가 이러한 역할을 수행하는데 즉, @Controller 어노테이션이 붙은 클래스는 웹 애플리케이션에서 사용자의 요청을 받아들이고 처리하는 역할을 담당한다. 예를 들어, www.example.com/springtest로 접속하면 @Controller가 붙은 클래스는 ..
자바 스트림이란?java8에서 사용할 수 있는 스트림은 람다를 활용한 기술 중 하나이다.배열 또는 컬렉션에 여러 개의 함수를 조합하여 원하는 결과를 가공할 수 있다. 자바스트림 중 map, filter, sort을 사용하여 list 값을 가공해 보자. 1. map요소들을 특정 조건에 해당하는 값으로 변환해 준다.ArrayList list = new ArrayList("aaa", "bbbb", "c", "d");System.out.println(list.stream().map(el-> el.toUpperCase()).collect(Collectors.toList()));// List의 요소들을 대문자로 변경해줌// [AAA, BBBB, C, D]System.out.println(list.stream().m..
contains는 List 끼리 비교할 때 사용할 수 있다.→ 리스트 값 하나하나 비교 가능 그러나, List list = new ArrayList();와 같은 list에서 list.get(i)과 같이 리스트의 요소에 접근하는 순간, contains로 리스트 값들을 비교할 수는 없다!!→ 이럴 경우는 contains가 아니라 equals()로 비교해줘야 한다. + List 통째로 포함여부를 비교하기 위해서는 containsAll()을 사용하면 된다.package kr.co.test.main;import java.util.ArrayList;import java.util.List;public class MainClass { public static void main(String[] args) { // TO..