본문 바로가기

분류 전체보기

(105)
[TensorFlow] 워드 임베딩 텍스트 벡터화 기계 학습 모델은 벡터(숫자 배열)를 입력으로 사용한다. 텍스트로 작업할 때 가장 먼저 문자열을 숫자로 변환하는 벡터화 작업이 필요하다. 1. One-hot encodings 설명 단어를 이진 벡터로 표현하는 방법이다. 각 단어는 고유한 인덱스에 해당하는 위치에 1을 가지고, 나머지는 0으로 채워진 벡터로 변환된다. 장점 단어의 존재 여부를 표현하는 간단하면서도 효과적이다. 단점 단어 간의 의미적 관계나 유사성을 반영하지 못하며 벡터의 차원이 매우 크고 희소한 문제가 있다. 2. 각 단어를 고유 번호로 인코딩 설명 각 단어에 고유한 정수 인덱스를 할당하여 단어를 숫자로 표현하는 방식이다. 장점 단어를 효과적으로 컴퓨터가 처리할 수 있는 형태로 반환할 수 있다. 단점 단어 간의 의미적 관꼐나..
[TensorFlow] 기본 텍스트 분류 기본 텍스트 분류 🔎 개요 텍스트 분류(Text Classification)은 주어진 텍스트를 특정 카테고리들 중 하나로 분류하는 자연어 처리(NLP 분야의) 작업이다. TensorFlow는 텍스트 분류를 위한 다양한 기능과 도구를 제공한다. 📌 주제 영화 리뷰를 사용한 텍스트 분류 IMDB 데이터셋에 대한 감정 분석을 수행하도록 이진 분류기 훈련 📝 과정 ① 데이터셋 다운로드 및 탐색 ② 데이터셋 로드 ③ 훈련을 위한 데이터셋 구성 ④ 성능을 높이도록 데이터셋 구성 ⑤ 모델 생성 ⑥ 손실 함수와 옵티마이저 ⑦ 모델 훈련 ⑧ 모델 평가 ⑨ 정확도와 손실 그래프 그리기 ⑩ 모델 내보내기(새로운 데이터로 추론) 💻 개발환경 구글 코랩(Colab) : 클라우드 기반의 무료 Jupyter 노트북 개발 환경 Te..
[TensorFlow] 기본 이미지 분류 기본 이미지 분류 🔎 개요 이미지 분류(Image Classification)는 컴퓨터가 일련의 이미지를 분석하고 해당 이미지가 어떤 범주에 속하는지 판단하게 만드는 것을 말한다. TensorFlow를 사용하면 간단하게 이미지 분류를 시작할 수 있으며 커스텀 모델을 구현하여 더 복잡하고 구체적인 문제를 해결할 수 있다. 📌 주제 패션 MNIST 데이터셋을 사용하여 운동화나 셔츠 같은 옷 이미지를 분류하는 신경망 모델 훈련 📝 과정 ① 패션 MNIST 데이터셋 임포트 ② 데이터 탐색 ③ 데이터 전처리 ④ 모델 구성(층 설정, 모델 컴파일) ⑤ 모델 훈련(모델 맞추기, 정확도 평가, 예측) ⑥ 훈련된 모델 사용 💻 개발환경 구글 코랩(Colab) : 클라우드 기반의 무료 Jupyter 노트북 개발 환경 Te..
[TensorFlow] 텐서플로 2.0 시작하기 TensorFlow 1. TensorFlow 구글에서 개발한 오픈소스 딥러닝 프레임워크이다. 기계 학습 및 딥러닝 모델을 구축하고 실행하는데 사용된다. 딥러닝 모델을 만들기 위한 도구와 기능을 제공하여 개발자들이 모델을 훈련시키고 예측을 수행하는 과정을 쉽게 할 수 있도록 도와준다. 텐서플로는 이미지 인식, 반복신경망 구성, 기계 번역, 필기 숫자 판별 등 다양한 신경망 학습 작업에 사용된다. 이를 통해 이미지나 텍스트 등 다양한 데이터에서 패턴을 인식하고 예측하는데 활용된다. 텐서플로는 사용자에게 유연성과 성능을 제공하며, 대규모 데이터셋에서도 효율적으로 작동할 수 있다. 2. Tensor 텐서플로의 핵심 개념은 텐서(Tensor)이다. 텐서는 다차원 배열로, 숫자 데이터를 표현하는데 사용된다. 스칼라..
[개인프로젝트] 이미지 파일 관리 시스템 프로젝트 소개 📅 진행기간 2023.06.01 ~ 2023.06.23 👩🏻‍💻 팀구성 개인프로젝트 🔎 개요 - 이미지 파일 관리 시스템 💻 개발환경 - 프로젝트 도구 : IntelliJ, VSCode - 기술 스택 : Spring WebFlux, Vue.js, MongoDB 📚 요구사항 (1) Spring WebFlux로 웹 백엔드 API 서버 구축 - 비동기 논블로킹 방식으로 이미지를 업로드하는 API 구현 - 이미지 업로드시 이미지 서버 저장과 함께 이미지에 대한 메타 데이터가 데이터베이스(MongoDB)에 함께 저장 - 조회시 이미지와 함께 메타데이터도 확인가능 - 필수 API 명세 Method URI Request Param Request Body Description GET /images 자유롭..
[NoSQL] MongoDB 설치(Windows/Linux) NoSQL NoSQL은 "Not Only SQL"의 약어로, 관계형 데이터베이스가 아닌 다른 유형의 데이터베이스를 지칭하는 용어이다. NoSQL 데이터베이스는 기존의 관계형 데이터베이스 시스템과는 다른 데이터 모델과 저장 방식을 사용한다. NoSQL 데이터베이스는 다음과 같은 특징을 가지고 있다. (1) 유연한 데이터 모델 NoSQL 데이터베이스는 관계형 데이터베이스처럼 정해진 스키마를 갖지 않고, 유연한 데이터 모델을 사용하여 비정형 데이터나 다양한 데이터 형식을 저장할 수 있다. 이는 데이터의 구조가 자주 변경되는 경우나 대량의 복잡한 데이터를 다루는 경우에 유용하다. (2) 분산 데이터베이스 NoSQL 데이터베이스는 대부분 분산 환경에서 동작하도록 설계되었다. 데이터를 여러 서버에 분산하여 저장하고..
[SQL] 뷰(VIEW) 뷰(VIEW) 데이터베이스 객체란 테이블이나 인덱스 등 데이터베이스 안에 정의하는 모든 것을 말한다. 뷰 역시 데이터베이스 객체 중 하나이다. 반면 SELECT 명령은 객체가 아니다. SELECT 명령에 이름을 지정할 수도 없고 데이터베이스에 등록되지도 않기 때문이다. 이처럼 본래 데이터베이스 객체로 등록할 수 없는 SELECT 명령을, 객체로서 이름을 붙여 관리할 수 있도록 한 것이 뷰이다. SELECT 명령은 실행했을 때 테이블에 저장된 데이터를 결괏값으로 반환한다. 따라서 뷰를 참조하면 그에 정의된 SELECT 명령의 실행결과를 테이블처럼 사용할 수 있다. 뷰를 작성하는 것으로 복잡한 SELECT 명령을 간략하게 표현할 수 있다. 뷰는 테이블처럼 취급할 수 있지만 '실체가 존재하지 않는다'라는 의미..
[SQL] 인덱스 인덱스 인덱스는 테이블에 붙여진 색인이라 할 수 있으며, 검색속도의 향상을 위해 사용된다. 여기서 '검색'이란 SELECT 명령에 WHERE 구로 조건을 지정하고 그에 일치하는 행을 찾는 일련의 과정을 말한다. 검색은 탐색이라고도 불린다. 테이블에 인덱스가 지정되어 있으면 효율적으로 검색할 수 있으므로 WHERE로 조건이 지정된 SELECT 명령의 처리 속도가 향상된다. 인덱스의 구조도 목차나 색인과 비슷하다. 목차나 색인에 제목/키워드별 페이지 번호가 적혀있듯, 데이터베이스의 인덱스에는 검색 시에 쓰이는 키워드와 대응하는 데이터 행의 장소가 저장되어 있다. 인덱스는 테이블과는 별개로 독립된 데이터베이스 객체로 작성된다. 인덱스는 테이블에 의존하는 객체라 할 수 있다. 대부분의 데이터베이스에서는 테이블을..
[SQL] 제약조건 테이블 작성시 제약 정의 CREATE TABLE로 테이블을 작성할 때 제약을 같이 정의한다. 물론 ALTER TABLE로 제약을 지정하거나 변경할 수 있다. 이때 NOT NULL 제약 등 하나의 열에 대해 설정하는 제약은 열을 정의할 때 지정한다. -- 테이블 열에 제약 정의하기 CREATE TABLE sample1 ( a INTEGER NOT NULL, b INTEGER NOT NULL UNIQUE, c VARCHAR(30) ); 이처럼 열에 대해 정의하는 제약을 '열 제약'이라 부른다. '복수열에 의한 기본키 제약'처럼 한 개의 제약으로 복수의 열에 제약을 설명하는 경우를 '테이블 제약'이라 부른다. -- 테이블에 '테이블 제약' 정의하기 CREATE TABLE sample1 ( no INTEGER ..
[SQL] 테이블 작성/삭제/변경 테이블 작성 CREATE TABLE로 테이블을 작성할 수 있다. -- 형식 CREATE TABLE 테이블명( 열 정의1, 열 정의2, ... ) -- 예시 CREATE TABLE sample1 ( no INTEGER NOT NULL, a VARCHAR(30), b DATE); 테이블 삭제 DROP TABLE 명령을 사용하여 필요 없는 테이블을 삭제한다. DROP TABLE 테이블명 테이블 정의는 그대로 둔 채 테이블의 모든 행을 삭제해야 할 때 TRUNCATE TABLE 명령을 사용한다. TRUNCATE TABLE 테이블명 테이블 변경 테이블을 작성해버린 뒤에도 열 구성을 변경할 수 있다. 이때 테이블 변경은 ALTER TABLE 명령을 통해 이루어진다. ALTER TABLE 테이블명 변경명령 ALTER..
[SQL] 상관 서브쿼리 EXISTS 서브쿼리를 사용해 검색할 때 '데이터가 존재하는지 아닌지' 판별하기 위해 조건을 지정할 수도 있다. 이런 경우 EXISTS 술어를 사용해 조사할 수 있다. -- EXISTS를 사용해 '있음'으로 갱신하기 UPDATE sample1 SET a = '있음' WHERE EXISTS (SELECT * FROM sample2 WHERE no2 = no); NOT EXISTS '없음'의 경우, 행이 존재하지 않는 상태가 참이 되므로 이때는 NOT EXISTS를 사용한다. NOT을 붙이는 것으로 값을 부정할 수 있다. -- NOT EXISTS를 사용해 '없음'으로 갱신하기 UPDATE sample1 SET a = '없음' WHERE NOT EXISTS (SELECT * FROM sample2 WHERE ..
[SQL] 서브쿼리 서브쿼리 서브쿼리는 SELECT 명령에 의한 데이터 질의로, 상부가 아닌 하부의 부수적인 질의를 의미한다. 상위 쿼리의 결과에 영향을 주지 않으면서 상세한 정보를 얻기 위해 사용됩니다. 쉽게 말하면, 한 쿼리 안에서 다른 쿼리를 실행하여 더 자세한 결과를 얻는 방식이라고 할 수 있습니다. 서브쿼리는 SQL 명령의 WHERE 구에서 주로 사용된다. WHERE 구는 SELECT, DELETE, UPDATE 구에서 사용할 수 있는데 이들 중 어떤 명령에서든 서브쿼리를 사용할 수 있다. 스칼라 값 서브쿼리를 사용할 때는 SELECT 명령이 어떤 값을 반환하는지 주의할 필요가 있다. 여러 가지 패턴 중에서도 다음과 같은 네 가지가 일반적인 서브쿼리 패턴이다. -- 1. 하나의 값을 반환하는 패턴 SELECT MI..
[SQL] GROUP BY GROUP BY *형식 SELECT * FROM 테이블명 GROUP BY 열1, 열2, ... *예시 [sample1] no name quantity 1 A 1 2 A 2 3 B 10 4 C 3 5 NULL NULL -- GROUP BY 구에 name 열을 지정해 그룹화하기 SELECT name FROM sample1 GROUP BY name; name A B C NULL DISTINCT를 지정했을 때와 같은 결과가 나왔다. GROUP BY 구에 열을 지정하여 그룹화하면 지정된 열의 값이 같은 행이 하나의 그룹으로 묶인다. GROUP BY 구를 지정하는 경우에 집계함수와 사용하면 GROUP BY 구로 그룹화된 각각의 그룹이 하나의 집합으로서 집계함수의 인수로 넘겨진다. -- GROUP BY 구와 집계함수..
[SQL] 집계함수 집계함수 집계란 집합으로 부터 하나의 값을 계산하는 것이다. SQL은 집합을 다루는 집계함수를 제공한다. 대표적인 집계함수는 COUNT, SUM, AVG, MIN, MAX 가 있다. 일반적인 함수는 인수로 하나의 값을 지정하는데 비해 집계함수는 인수로 집합을 지정한다. 이 때문에 집합함수라고도 불린다. 즉, 집합을 특정 방법으로 계산하여 그 결과를 반환한다. 집계함수는 집합 안에 NULL 값이 있을 경우 이를 제외하고 처리한다. COUNT로 행 개수 구하기 COUNT 집계함수로 행 개수를 구할 수 있다. -- 형식 COUNT(집합) -- 예시 SELECT COUNT(*) FROM sample1; -- 5 SELECT COUNT(*) FROM sample1 WHERE name = 'A'; -- 2 SELE..
[SQL] CASE 문 CASE 문 RDBMS에 준비된 함수를 사용해 데이터를 특정 형태로 변환하는 경우도 있지만, 임의의 조건에 따라 독자적으로 변환 처리를 지정해 데이터를 변환하고 싶은 경우도 있다. 이때 CASE 문을 이용할 수 있다. *형식 CASE WHEN 조건식1 THEN 식1 WHEN 조건식2 THEN 식2 ELSE 식3 END *예시 -- CASE로 NULL 값을 0으로 변환하기 SELECT a, CASE WHEN a IS NULL THEN 0 ELSE a END "a(null=0)" FROM sample1; COALESCE NULL 값을 변환하는 경우라면 COALESCE 함수를 사용하는 편이 더 간단하다. SELECT a, COALESCE(a, 0) FROM sample1; COALESCE 함수는 여러 개의 인..
[SQL] 날짜 연산 SQL 날짜 날짜나 시간 데이터는 수치 데이터와 같이 사칙 연산을 할 수 있다. 날짜시간 데이터를 연산하면 결괏값으로 동일한 날짜시간 유형의 데이터를 반환하는 경우도 있으며 기간(간격)의 차를 나타내는 기간형(interval) 데이터를 반환하는 경우도 있다. 기간형은 '10일간', '2시간10분'과 같이 시간의 간격을 표현할 수 있다. 1. 시스템 날짜 시스템 날짜란 하드웨어 상의 시계로부터 실시간으로 얻을 수 있는 일시적인 데이터를 말한다. RDBMS에서도 시스템 날짜와 시간을 확인하는 함수를 제공한다. 표준 SQL에서는 'CURRENT_TIMESTAMP'라는 함수로 실행했을 때를 기준으로 시간을 표시한다. CURRENTA_TIMESTAMP는 일반적인 함수와는 달리 인수를 지정할 필요가 없으므로 괄호를..
[SQL] 문자열 연산 문자열 결합 문자열 결합이란 다음과 같이 문자열 데이터를 결합하는 연산이다. -- 문자열 결합 'ABC' || '1234' -- 'ABC1234' 문자열을 결합하는 연산자에는 데이터베이스 제품마다 방언이 있으며 다음과 같은 차이를 가진다. 연산자/함수 연산 데이터베이스 + 문자열 결합 SQL Server || 문자열 결합 Oracle, DB2, PostgreSQL CONCAT 문자열 결합 MySQL SELECT quantity + unit FROM sample1; SELECT quantity || unit FROM sample1; SELECT CONCAT(quantity, unit) FROM sample1; SUBSTRING 함수 SUBSTRING 함수는 문자열의 일부분을 계산해서 반환해주는 함수이다. ..
[SQL] 결과 행 제한 행수 제한 LIMIT 구는 표준 SQL은 아니다. MySQL과 PostgreSQL에서 사용할 수 있는 문법이다. LIMIT 구는 SELECT 명령의 마지막에 지정하는 것으로 WHERE 구나 ORDER BY 구의 뒤에 지정한다. LIMIT로 지정하는 것은 '최대 행수'이다. 만약 테이블에 하나의 행만 있다면 LIMIT 3으로 지정해도 1개의 행이 반환된다. -- 형식 SELECT 열명 FROM 테이블명 WHERE 조건식 ORDER BY 열명 LIMIT 행수 -- 예시 SELECT * FROM sample1 LIMIT 3; SELECT * FROM sample1 ORDERY BY no DESC LIMIT 3; LIMIT를 사용할 수 없는 데이터베이스에서의 행 제한하려면 ROWNUM이라는 열을 사용해 WHER..
[SQL] 패턴 매칭 패턴 매칭 = 연산자로 검색하는 경우는 셀의 데이터 값이 완전히 동일한지를 비교한다. 하지만 특정 문자나 문자열이 포함되어 있는지를 검색하고 싶은 경우에 '패턴 매칭' 을 사용한다. LIKE 술어를 사용하여 패턴 매칭으로 검색할 수 있다. 패턴을 정의할 때 사용할 수 있는 메타문자로는 %와 _이 있다. %는 임의의 문자열과 매치하며, 빈 문자열에도 매치한다. -- 형식 열명 LIKE '패턴' -- 예시 SELECT * FROM sample1 WHERE text LIKE 'SQL%'; SELECT * FROM sample1 WHERE text LIKE '%SQL%';
[SQL] 데이터베이스와 SQL SQL DBMS는 데이터베이스를 관리하는 소프트웨어이다. DBMS를 이용하면 간접적으로 데이터베이스를 참조할 수 있고, 혹은 데이터를 추가하거나 삭제, 갱신할 수도 있다. 이 같은 DBMS와의 대화에 필요한 것이 SQL이다. SQL은 그중 '관계형 데이터베이스 관리 시스템(RDBMS: Relational Database Management System)'을 조작할 때 사용한다. *SQL 명령의 종류 DML(Data Manipulation Language) 데이터베에스에 새롭게 데이터를 추가하거나 삭제하거나 내용을 갱신하는 등, 데이터를 조작할 때 사용한다. SQL의 가장 기본이 되는 명령셋(set)이다. DDL(Data Definition Language) 데이터를 정의하는 명령어. 데이터베이스는 '데이..
[SQL] INNER JOIN, OUTER JOIN JOIN JOIN은 두 개 이상의 테이블에서 데이터를 가져와서 연결하는 것을 의미한다. 이를 통해 테이블 간의 관계를 이해하고 복잡한 데이터를 쉽게 처리할 수 있다. JOIN을 사용하는 방법은 크게 두 가지로, INNER JOIN 과 OUTER JOIN이 있다. INNER JOIN과 OUTER JOIN은 JOIN(조인)하는 대상 테이블 간에 일치하는 데이터를 가져오는 방식에서 차이가 있다. INNER JOIN은 두 테이블 간에 일치하는 데이터만 가져온다. 즉, JOIN하려는 두 테이블에서 모두 데이터가 존재하는 경우에만 결과로 나타난다. 반면, OUTER JOIN은 JOIN하려는 두 테이블 중 하나에 데이터가 있어도 결과를 가져오는 것이다. INNER JOIN(내부 조인) INNER JOIN은 조인 중 ..
[SQL] INSERT, SELECT, UPDATE, DELETE CRUD 기본적인 데이터 처리 기능인 Create(생성), Read(읽기), Update(갱신), Delete(삭제)를 묶어서 일컫는 말이다. Create 새로운 데이터를 추가할 때 사용한다. -- 형식 INSERT INTO table_name (column1, column2, ..) VALUES (value1, value2, ..); -- 예시 INSERT INTO students (name, age, gender) VALUES ('John', 20, 'M'); Read 데이터를 조회할 때 사용한다. -- 형식 SELECT column1, column2, ... FROM table_name WHERE condition; -- 예시 SELECT name, gender FROM students WHERE ..
[팀프로젝트] Oh!GYM(매칭서비스) 프로젝트 소개 📅 진행기간 2023.03 ~ 2023.04(~진행중) 👩🏻‍💻 팀구성 그린컴퓨터아카데미(5인) 🔎 개요 - 헬스 PT(퍼스널트레이닝) 매칭 웹 플랫폼 서비스 : 헬스장이나 운동 센터를 방문하지 않고도 온라인으로 트레이너와 상담하며 가격 정보를 제공받아, 편리하게 선택할 수 있도록 도와주는 웹서비스 📌 목적 - 현대 사회에서 건강한 삶에 대한 관심과 헬스 관련 산업의 성장, 그리고 바쁜 일상으로 인해 헬스장이나 운동 센터에 가는 것이 부담스러운 현대인들을 대상으로한 편리하고 접근성 높은 서비스를 제공할 수 있는 웹 플랫폼을 개발하고자 함 💻 개발환경 - 프로젝트 도구 : Eclipse, VSCode, MySQL, Github - 사용 언어 : Java, SQL, Html/Css, JavaS..
[팀프로젝트] 마음을 JAVA라(Quiz Game) 프로젝트 소개 📅 진행기간 2023.01 ~ 2023.01(약 1주) 👩🏻‍💻 팀구성 그린컴퓨터아카데미(5인) 🔎 개요 - 친구와 서로를 얼마나 잘 알고 있는지를 알아갈 수 있는 QnA 게임 : 회원가입시 자신의 성향에 대한 간단한 질문에 답을 작성하여 데이터 구축 게임에서는 친구의 성향을 유추하여, 이를 토대로 점수 및 랭킹 확인 📌 목적 - 사회에서 개인주의적인 경향이 강해지고 있기 때문에, 이 프로젝트를 통해 친구들끼리 서로를 더욱 잘 알아가고, 더욱 깊은 대화를 나눌 수 있도록 돕고자 함 💻 개발환경 - 프로젝트 도구 : Eclipse, Github - 사용 언어 : Java, SQL 📝 학습목표 - RDBMS의 이해 및 활용 - CRUD 기능 구현 및 SQL 문법 이해 - 사용자 입력값 유효성 ..
[팀프로젝트] Lotto 프로그램 프로젝트 소개 📅 진행기간 2022.12 ~ 2022.12(약 1주) 👩🏻‍💻 팀구성 그린컴퓨터아카데미(4인) 🔎 개요 - 가상 Lotto 번호 추첨 및 확인 Windows 환경 GUI 프로그램 : 수동, 반자동, 자동 중 원하는 방법으로 로또 번호를 선택한 후, 당첨 번호와 비교하여 결과 확인. 게임 회차별 전적 보기 기능. 💻 개발환경 - 프로젝트 도구 : Eclipse - 사용 언어 : Java 📝 학습목표 - JAVA Swing을 이용한 GUI에 대한 이해 - 배열과 컬렉션을 포함한 자료구조에 대한 이해 - 이벤트 처리 방법에 대한 이해 상세 내용 📊 기능 - 수동, 반자동, 자동 중 원하는 방법으로 로또 번호를 선택 - 당첨 번호와 비교하여 결과 확인 - 지난 회차 당첨 번호 보기 기능 - 게임..
[팀프로젝트] 호텔 객실 예약 프로그램 프로그램 소개 📅 진행기간 2022.11 ~ 2022.11(약 1주) 👩🏻‍💻 팀구성 그린컴퓨터아카데미(4인) 🔎 개요 - 호텔 객실 예약 및 관리 콘솔 입출력 프로그램 💻 개발환경 - 프로젝트 도구 : Eclipse - 사용 언어 : Java 📝 학습목표 - 자바 언어의 기본 구조와 문법, 데이터 타입, 제어문, 연산에 대한 이해 - 객체지향 프로그래밍의 개념과 특징을 이해 상세 내용 📊 다이어그램 https://ej-development-note.tistory.com/36 [JAVA 웹 개발 공부] 국비지원 20, 21일차 - 팀프로젝트 주제 호텔의 데스크 직원이 사용할 수 있는 호텔 객실 관리프로그램 만들기 1. 객실 정보 객실은 2층부터 5층까지 각 층마다 20개씩 있다. 방 번호는 3자리 정수이..
[JSP] Cookie, Session Cookie(쿠키) 1. 쿠키 Connectionless로 인해 서버는 클라이언트를 식별할 수가 없는데, 이를 Stateless라고 합니다. 서버가 클라이언트를 기억해야 할 경우, 브라우저 단에서 쿠키라는 것을 저장하여 서버가 클라이언트를 식별할 수 있도록 한다. 쿠키 동작 방식 쿠키 생성 → 쿠키 저장 → 쿠키 전송 쿠기의 구성 이름, 값, 유효시간, 도메인, 경로 쿠키의 장점 다시 서버에 request할 필요가 없기 때문에 속도가 빠르다. 쿠키의 단점 로그인 정보 등 사용자의 정보가 저장되는 경우가 많아 보안에 취약하다. 쿠키 사용 예시 팝업 보지 않기, 사용자 이전 스크롤링이나 뷰 설정 값 등 2. 쿠키 생성 // 쿠키 생성 Cookie cookie = new Cookie("username", "사..
[JSP] Forward, Redirect Forwarding(요청 전달 처리) - 요청을 구분하여 처리할 서블릿을 결정하는 경우 - 처리를 여러 단계의 서블릿으로 구분하여 필요한 단계로 바로 이동하는 경우 - 브라우저에 표시되는 경로를 숨기고 싶은 경우 - 요청시 생성된 request, response 객체의 값이 유지 request.setAttribute("키값", 데이터); request.getAttribute("키값"); request.getRequestDispatcher("이동할 URL").forward(request, response); Redirecting(다시 요청) - 요청을 검증하여 알맞은 페이지로 요청을 하도록 처리하려는 경우 - 에러 또는 예외 처리에 대한 결과 페이지를 처리하려는 경우 - 브라우저에 주소 창에 경로가 표시됨..
[JSP] DTO, 자바빈즈, DAO DTO 데이터 전송 객체(Data Transfer Object, DTO)란 주로 데이터를 저장하거나 전송하는데 쓰이는 객체이다. 별다른 로직 없이 속성(멤버 변수)과 그 속성에 접근하기 위한 게터/세터 메서드만 갖춘 게 특징이다. 데이터만 가지고 있는 객체라 하여 값 객체(Value Object, VO) 라고도 한다. DTO는 자바빈즈 규약에 따라 작성한다. 자바빈즈 자바빈즈란 자바로 작성한 소프트웨어 컴포넌트로, 다음의 규약을 따르는 자바 클래스를 말한다. - 기본 패키지 이외의 패키지에 속해야 한다. - 멤버 변수 접근 지정자는 private으로 선언한다. - 기본 생성자 있어야한다. - 게터/세터 메서드가 있어야 한다. - 게터/세터 메서드는 public으로 선언한다. DAO DAO(Data Tra..
[JSP] 내장 객체 내장 객체 클라이언트가 서버로 요청을 보내면, 서버는 그에 맞는 결과를 응답으로 돌려주는 형태로 동작한다. 이 때 JSP의 내장 객체는 요청과 응답 혹은 HTTP 헤더 등의 정보를 쉽게 다룰 수 있도록 해준다. 내장 객체는 JSP 페이지가 실행될 때 컨테이너가 자동으로 생성해주며, 별도로 선언하거나 객체로 생성하지 않아도 즉시 사용할 수 있다. *내장 객체의 종류 내장 객체 설명 request 클라이언트의 요청을 받거나 웹 브라우저에 대한 정보 혹은 요청 헤더에 대한 정보를 읽을 때 사용한다. response 요청에 대한 응답을 웹 브라우저로 보낼 때 사용한다. 페이지 이동이나 응답 헤더를 추가할 때도 사용한다. out 변수 등의 값을 웹 브라우저에 출력할 때 주로 사용한다. session 웹 브라우저 ..