전체 글 391

Model1 -> Model2 -> SpringMVC

1. JSP Model1특징Model1은 초창기 JSP 기반 웹 애플리케이션에서 사용된 구조입니다.구조: JSP 파일 하나가 요청을 처리하고 결과를 렌더링합니다.처리 방식: 클라이언트의 요청을 JSP에서 직접 처리하며 비즈니스 로직과 화면 로직이 모두 JSP에 포함됩니다.장점:간단하고 빠르게 개발 가능작은 프로젝트에 적합단점:유지보수의 어려움: JSP에 모든 로직을 구현하기 때문에 코드가 길고 복잡해집니다.비효율적인 협업: 프론트엔드와 백엔드 로직이 섞여 있어 역할 분리가 어렵습니다.ex) Hello, User! Welcome, " + rs.getString("name") + "!"); } } catch (Exception e) { out.p..

SpringBoot 2024.11.22

RSA 암호화

웹 서비스는 데이터를 손실 없이 정확한 순서로 전달하기 위해 연결 지향적인 TCP 프로토콜을 사용합니다. 이로써 통신의 신뢰성을 확보할 수 있으며, **CIA 보안 원칙(기밀성, 무결성, 가용성)**을 달성하기 위한 다양한 암호화 기법들이 사용됩니다. 그중 대표적인 것이 RSA 알고리즘으로, 이는 데이터를 안전하게 주고받기 위해 비대칭 암호화 방식을 채택하고 있습니다.비대칭 암호화에서는 공개키와 개인키라는 두 가지 키를 사용합니다:공개키는 누구에게나 공개할 수 있는 키로, 데이터를 암호화하는 용도로 사용됩니다.개인키는 소유자만 알고 있는 비밀 키로, 암호화된 데이터를 복호화하는 데 사용됩니다.이 방식으로 양방향 보안을 확립하여 기밀성과 무결성을 동시에 보장할 수 있습니다.암호화와 인증 절차1. 기밀성 유..

CS 2024.11.05

IP / TCP / UDP / 패킷 / URL

인터넷 통신이란?클라이언트와 서버가 직접 통신하지 않고 인터넷을 통해서 통신하는 것  IP (Internet Protocol)란?복잡한 인터넷 망에서  통신을 위해 요청을 주고받을 떄 규칙 보통 클라이언트 IP 주소에서 서버 IP 주소로 데이터를 보낼때 패킷 통신 단위로 전달하게 된다.*패킷 (package + bucket) : 데이터 덩어리를 넣은 박스 인터넷에서는 수많은 노드들이 있는데, 원하는 목적지까지 여러개의 노드를 타면서 목적지에 도착하게 된다.IP 패킷에는 출발지 IP 주소, 목적지 IP 주소, 전송 데이터 총 3가지의 정보를 가지고 있다.   IP의 한계점1. 비연결성패킷을 받을 대상이 없거나 서버가 꺼져있을때 무조건 전송함2. 비신뢰성패킷이 중간에 유실되어도 어떤 패킷이 유실되었는지, 순..

CS 2024.09.04

WAS란?

Web Server Apache, nginx웹 브라우저로부터 HTTP 요청을 받아들이고 처리한 결과를 웹 브라우저에게 전달하는 역할주로 HTML, CSS JavaScript, 이미지 파일등 정적인 컨텐츠를 제공할떄 사용  정적인 모든 파일을 저장하고 클라이언트 요청이 생길때마다 서버에 저장된 파일을 내려주기 때문에한계가 생기고 리소스를 많이 차지하는 단점이 있다   주요 기능1. 정적 컨텐츠 제공   2. HTTP 요청 처리   3. 로드 밸런싱*로드밸런싱- 한 서버가 일을 다 처리하는 것은 부담이니 여러 서버가 일을 나누어 처리4. .SSL/TLS 처리 (암호화 기반 인터넷 보안 프로토콜)  5. 캐싱    WAS (Web Application Server) 웹서버 + 웹 컨테이너컨테이너가 요청 정보를..

SpringBoot 2024.09.03

SQL Mapper - Mybatis

팀 프로젝트가 끝나고 혼자 프로젝트 리뷰를 하다가 우리나라조차 점점 트렌드인 JPA가 Mybatis의점유율을 이기는 판국에왜 Mybatis를 배우고 사용하게 되었는지에 대해 의문이 들었다.(사실 JPA 아직 찍먹만해봄🤪)  먼저영속성부터 찾아봤다.  영속성(persistence)데이터를 생성한 프로그램의 실행이 종료되어도 사라지지 않는 데이터 특성을 말한다.  우리는  그래서 애플리케이션을 실행했을때영속성을 위해DB에 알맞게 관리한다.  그래서 Java Database Connectivity JDBC API를 제공한다.  하지만 순수 JDBC는 어마어마하게작성하는 부분과 중복되는 부분이 많다. //순수 JDBC 를 이용하여 회원 등록 코드public Member save(Member member) { ..

SpringBoot 2024.09.02

[프로그래머스] 전화번호 목록 (Java)

https://school.programmers.co.kr/learn/courses/30/lessons/42577 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 1,5, 13, 14 실패- contains 메서드는 접두사에 올바른 결과를 줄 수 없음// 1,5, 13, 14 실패import java.util.*;class Solution { public boolean solution(String[] phone_book) { for (var a: phone_book) for (var b: phone_book) if ..

JAVA 2024.07.15

[프로그래머스] K번째수 (Java)

https://school.programmers.co.kr/learn/courses/30/lessons/42748?language=java 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr import java.util.*;class Solution { public int[] solution(int[] array, int[][] commands) { int[] answer = new int[commands.length]; for (int i = 0; i list = new ArrayList(); ..

JAVA 2024.07.08

[Spring Boot] JPA를 왜 써야할까??

자바에서는 데이터의 영속성(프로그램이 종료되어도 사라지지 않고 어떤곳에 저장되는 것)을 위하여 JDBC를 지원해줌  JDBC에서 DB에 접근하여 SQL을 수행하고 결과를 다시 데이터타입으로 매핑시켜주는 작업을 개발자가 일일히 수행해야한다..../*참고) JDBC이용 영화관람 과제코드....*/Connection conn = null;try { // JDBC 드라이버 등록 Class.forName("oracle.jdbc.OracleDriver"); // 데이터베이스에 연결하기 conn = DriverManager.getConnection( "jdbc:oracle:thin:@localhost:1521/xe", // 데이터베이스 URL "bituser", // 계..

SpringBoot 2024.06.27

[SpringBoot] Gradle 이란? (Build Tool)

빌드의존성 라이브러리 다운컴파일 (소스코드 -> 바이너리코드로 변경)바이너리코드 패키징테스트 실행운영시스템 배포  빌드 도구(Build Tool)소스 코드를 실행가능한 Application으로 자동으로 생성하는 프로그램즉 소스 코드를 컴파일하고 연결하고 패키징하여 실행가능한 상태로 가공 Java에서 주로 사용하는 빌드도구는 Gradle, Maven, Ant등이 있다  Gradle이란?- 유연함과 성능에 초점을 둔 오픈소스 빌드도구- Wrapper 지원(빌드 도구를 실행할 수 있는 jar 파일과 이를 실행하는 스크립트를 함께 등록하여 관리하는 방식)- Maven의 POM개념을 활용* POM (xml형식의 프로젝트 객체 모델)- build.gradle 파일에서 Maven 중앙 저장소를 설정하고, Maven ..

SpringBoot 2024.06.26

[프로그래머스] 카드뭉치 (Java)

https://school.programmers.co.kr/learn/courses/30/lessons/159994?language=java 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.krclass Solution { public String solution(String[] cards1, String[] cards2, String[] goal) { int card1Index = 0; int card2Index = 0; for (var word: goal){ if ((ca..

JAVA 2024.05.08