전체 글
- 240809 2024.08.09 2
- 240808 2024.08.08
- 240807 2024.08.07
- 240806 2024.08.06
- 240805 2024.08.05
- 240802 2024.08.02
- 240801 2024.08.01
- 240731 2024.07.31
- 240730 2024.07.30
- 240729 2024.07.29
- 240726 2024.07.26
- 240725 2024.07.25
- 240724 2024.07.24
- 240723 2024.07.23
- 240722 2024.07.22
- 240719 2024.07.19
- 240718 2024.07.18
- 240717 2024.07.17
- 240716 2024.07.16
- 240715 2024.07.15
240809
240808
1. webservlet 어노테이션
[Servlet] Servlet과 @WebServlet 어노테이션
📍 Servlet > - HttpServlet 클래스를 상속받은 클래스이다. 클라이언트의 요청을 처리하고, 동적으로 웹 페이지를 생성하거나 데이터를 처리하여 응답을 생성한다. 📍 web.xml 파일의 Servlet 매핑 코드
velog.io
@WebServlet 어노테이션
사용법 web.xml을 열어서 metadata-complete="true" metadata-complete="false" 위에 있는대로 true를 false로 바꾼다 그 뒤 java 소스에다가 @WebServlet("/test") 이런식으로 WebSublet annotation을 해주면 거기로 url매핑된다.
ryuuv.tistory.com
240807
1. session
https://opentutorials.org/module/3569/21212
세션(Session) - JSP/서블릿 흝어 보기
세션이란? 세션은 쿠키와 다르게 사용자의 정보가 서버에 저장된다. 세션을 클라이언트마다 개별적으로 유지하기 위해 HttpSession 객체가 생성될때 요청을 보내온 클라리언트 정보, 요청시간 정
opentutorials.org
2. servlet
https://mangkyu.tistory.com/14
[JSP] 서블릿(Servlet)이란?
1. Servlet(서블릿) 서블릿을 한 줄로 정의하자면 아래와 같습니다. 클라이언트의 요청을 처리하고, 그 결과를 반환하는 Servlet 클래스의 구현 규칙을 지킨 자바 웹 프로그래밍 기술 간단히 말해서,
mangkyu.tistory.com
3. getReqeustDispatcher, forward, include, redirect
https://dololak.tistory.com/502
[서블릿/JSP] RequestDispatcher란. RequestDispatcher로 forward() 하기
참고글 [서블릿/JSP] JSP 리다이렉트로 페이지 이동시키기 [서블릿/JSP] JSP 기본객체 종류 [HTTP] 리다이렉트(Redirect)란? RequestDispatcher란 RequestDispatcher는 클라이언트로부터 최초에 들어온 요청을 JSP/Ser
dololak.tistory.com
240806
240805
240802
1. MYSQL LAG, LEAD WINDOW FUNCTION
https://dev.mysql.com/doc/refman/8.4/en/window-function-descriptions.html#function_lag
2. MYSQL DATE_FORMAT FUNCTION
https://dev.mysql.com/doc/refman/8.4/en/date-and-time-functions.html#function_date-format
3. 정규화의 이상현상(Anomaly), 함수적 종속성(Functional dependency)
https://yaboong.github.io/database/2018/03/09/database-anomaly-and-functional-dependency/
데이터베이스 정규화 - 이상현상 & 함수적 종속성
개요 삽입이상 (Insertion Anomaly), 갱신이상 (Update Anomaly), 삭제이상 (Deletion Anomaly) 설명 함수적 종속성 (Functional Dependency) 에 대해 알아본다.
yaboong.github.io
4. 정규화(1NF, 2NF, 3NF, BCNF, 4NF, 5NF)
https://velog.io/@wisdom-one/%EC%A0%95%EA%B7%9C%ED%99%94Normalization
정규화 (1NF, 2NF, 3NF, BCNF, 4NF, 5NF)
1. 정의 Normalization 관계형 데이터 모델에서 데이터의 중복성을 제거하여 이상 현상(Anomaly)을 방지하고, 데이터의 일관성과 정확성을 유지하기 위해 무손실 분해하는 과정을 말한다. > #### 💡 이
velog.io
- 실무에서는 3NF, BCNF 선에서 정규화를 진행한다. (4NF, 5NF까지 만족시키는 경우는 드물다.)
- 두부이걸다줘?
- 도메인 원자값으로 분해, 부분 함수 종속성 제거, 이행적 함수 종속성 제거, 결정자이면서 후보키가 아닌 속성 제거, 다치 종속성 제거, 조인 종속성 제거
5. 반정규화(역정규화)
https://dataonair.or.kr/db-tech-reference/d-guide/sql/?mod=document&uid=333
반정규화와 성능
1. 반정규화를 통한 성능향상 전략 가. 반정규화의 정의 반정규화(=역정규화) 용어는 조금 다르게 표현되어도 그 의미는 동일하다. 여기에서 반정규화는 ‘반(Half)’의 의미가 아닌 한자로 반대
dataonair.or.kr
6. Subquery
https://dev.mysql.com/doc/refman/8.4/en/subqueries.html
- ANY, IN or SOME operator
https://dev.mysql.com/doc/refman/8.4/en/any-in-some-subqueries.html
- ALL operator
https://dev.mysql.com/doc/refman/8.4/en/all-subqueries.html
- EXISTS or NOT EXISTS operator
https://dev.mysql.com/doc/refman/8.4/en/exists-and-not-exists-subqueries.html
7. UNION clause
https://dev.mysql.com/doc/refman/8.4/en/union.html
[MySQL] UNION, UNION ALL 차이점 (Group by, Order by 활용)
아래 예제 쿼리는 UNION과 UNION ALL의 차이점에 대해 설명하고, 테이블을 생성해 Group by와 Order by를 활용해 데이터를 병합하고 결과를 출력하는 쿼리입니다. UNION과 UNION ALL은 두 개의 결과를 결합하
jh-tr.tistory.com
240801
1. java 클래스의 구성 요소
- 필드, 생성자, 메소드
2. java variable length parameter
https://velog.io/@balparang/Java-%EA%B0%80%EB%B3%80-%EA%B8%B8%EC%9D%B4-%EC%9D%B8%EC%9E%90-f5sc6nht
Java / 가변 길이 인자
메서드 오버로딩을 사용하지 않고, 인자의 개수를 다르게 하여 메서드를 호출할수 있도록 선언하는 방법.
velog.io
3. Spring MVC Pattern
4. request.setCharacterEncoding("UTF-8") 구문이 JSP에서는 예외처리없이 가능하고 JAVA Servlet에서는 불가능한 이유
JSP(JavaServer Pages)
- JSP는 내부적으로 예외 처리 메커니즘을 갖추고 있어 JSP 코드에서 request.setCharacterEncoding("UTF-8"); 호출 시 예외가 발생해도 JSP 엔진이 이를 적절히 처리할 수 있습니다.
<% request.setCharacterEncoding("UTF-8"); %>
/*
* 호출 시 UnsupportedEncodingException이 발생할 수 있으나
* JSP 엔진이 내부적으로 예외 처리를 한다.
*/
Java Servlet
- Java Servlet에서는 서블릿 컨테이너가 예외를 처리하지 않기 때문에 서블릿 코드에서 발생하는 모든 예외는 반드시 명시적으로 처리해야 합니다. 서블릿은 javax.servlet.http.HttpServlet 클래스를 확장하여 작성하며 request.setCharacterEncoding("UTF-8");을 호출할 때 UnsupportedEncodingException이 발생할 수 있는데
이 예외를 처리하지 않으면 컴파일 에러가 발생합니다.
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
request.setCharacterEncoding("UTF-8");
}
catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
/*
* 호출 시 UnsupportedEncodingException이 발생할 수 있으므로
* try-catch를 사용하여 예외를 처리하거나
* 메서드 선언에서 throws로 예외를 위임해야 합니다.
*/
240731
240730
240729
240726
1. 데이터베이스 논리적 설계
https://wonsjung.tistory.com/404
데이터베이스 설계 2 - 논리적 설계 / 물리적 설계와 구현
※ 논리적 설계 ▶ 설계 3단계 : 논리적 설계 목적 DBMS에 적합한 논리적 스키마 설계 개념적 스키마를 논리적 데이터 모델을 이용해 논리적 구조로 표현 -> 논리적 모델링 일반적으로 관계 데이터
wonsjung.tistory.com
2. Join clause
- INNER JOIN, LEFT OUTER JOIN, RIGHT OUTER JOIN, SELF JOIN, CROSS JOIN, NATURAL JOIN
240725
1. java formatter
https://docs.oracle.com/javase/8/docs/api/java/util/Formatter.html
Formatter (Java Platform SE 8 )
'e' '\u0065' Requires the output to be formatted using computerized scientific notation. The localization algorithm is applied. The formatting of the magnitude m depends upon its value. If m is NaN or infinite, the literal strings "NaN" or "Infinity", resp
docs.oracle.com
240724
1. SQLException
https://docs.oracle.com/javase/8/docs/api/java/sql/SQLException.html
SQLException (Java Platform SE 8 )
An exception that provides information on a database access error or other errors. Each SQLException provides several kinds of information: a string describing the error. This is used as the Java Exception message, available via the method getMesasge. a "S
docs.oracle.com
240723
240722
240719
1. mysql count가 null을 포함하는 경우, 포함하지 않는 경우
https://blog.naver.com/miniii_su/221868454546
[SQL] sql에서 count()에 null이 포함될까?
Question. sql에서 count()에 null이 포함될까? Answer. count(컬럼명) NULL값을 제외하고 count cou...
blog.naver.com
2. mysql window function
https://mizykk.tistory.com/121
[MySQL] 윈도우함수(Window Function)
윈도우함수는 Group By와 비슷하게 데이터를 그룹화하여 집계해준다. 하지만 Group By는 집계된 결과만 보여주는 반면, 윈도우함수는 기존 데이터에 집계된 값을 추가하여 나타낸다. 위와 같은 데이
mizykk.tistory.com
3. query 실행 순서
https://jaehoney.tistory.com/191
SQL - SELECT 쿼리 실행 순서 정리!
SELECT 쿼리문은 FROM, WHERE, GROUP BY, HAVING, SELECT, ORDER BY 총 6단계를 거친다. 아래는 각 단계의 동작을 정리한 것이다. FROM 절 (+ Join) 쿼리의 첫번째 실행 순서는 FROM절이다. FROM 절에서는 조회할 테이블
jaehoney.tistory.com
4. mysql 내장 함수
[MYSQL] 📚 내장함수 종류 정리
집계 함수 COUNT(필드명) --NULL 값이 아닌 레코드 수를 구한다. SUM(필드명) - 필드명의 합계를 구한다. AVG(필드명) - 각각의 그룹 안에서 필드명의 평균값을 구한다. MAX(필드명) - 최대값을 구한다. MIN
inpa.tistory.com
5. mysql 변수
https://algopoolja.tistory.com/101
MySQL 변수 종류
1. 사용자 지정변수 (@ 가 앞에 붙습니다.) 사용자 지정 변수(User-defined variables)는 선언하거나 초기화 하지 않고 접근할 수 있습니다. 만약 사용자 정의 변수가 초기화 되지 않았다면 string 타입의 N
algopoolja.tistory.com
240718
1. Math.random()은 진짜 랜덤일까?
Math.random()은 진짜 랜덤일까?
왜 이런 의문을 갖게 되었냐 하면.. 프로젝트 패키지를 설치하던 도중 여러 warning message 중에 내 눈을 사로 잡는 게 있었다.Math.random()은 0 이상 1 미만의 부동 소수점 난수를 생성하는 함수이다.7
velog.io
Math.random()의 return value는 컴퓨터 프로그램이 시드(seed)를 사용하여 만든 의사난수(pseudo ramdom number)다.
240717
240716
1. cookie, session
https://nesoy.github.io/articles/2017-03/Session-Cookie
쿠키(Cookie) 그리고 세션(Session)
nesoy.github.io
2. session
https://m.blog.naver.com/hj_kim97/222574518040
[JSP]세션(Session) 사용하기
JSP 세션(Session) 사용하기 - 세션(Session)이란 무엇인가? - 세션(Session)의 특징 - 세션(Sessio...
blog.naver.com
3. response
https://crazycat-liebling.tistory.com/22
JSP의 request와 response
○ request 내장 객체 사용자 요청과 관련된 기능을 제공하는 내장 객체로 클라이언트에서 서버로 전달되는 정보를 처리하기 위해서 사용한다 웹 브라우저를 통해 서버에 어떤 정보를 요청하며,
crazycat-liebling.tistory.com
4. 9개의 기본 내장 객체
https://chillin-dev.tistory.com/25
[JSP&Servlet] JSP : 내장 객체 "response" 정리하기.
[JSP&Servlet] JSP : 내장 객체 "response" 정리하기. - request 객체가 하는 역할을 어느 정도 이해했다면 그와 반대의 개념인 response 객체를 공부해보자. request객체가 웹 브라우저에서 서버로 전송된 요청
chillin-dev.tistory.com
5. JDBC(java database connectivity)
https://ittrue.tistory.com/250
[Java] JDBC란 무엇인가? - Java Database Connectivity
JDBC란? JDBC(Java Database Connectivity)는 Java 기반 애플리케이션의 데이터를 데이터베이스에 저장 및 업데이트하거나, 데이터베이스에 저장된 데이터를 Java에서 사용할 수 있도록 하는 자바 API이다. JDB
ittrue.tistory.com
JDBC 7
1. DB 드라이버 로딩
2. DB 연결 (Connection 객체) (ip, port, id, pw, dbname(sid, service name) 필요)
3. Query 실행 준비 (statement or preparedStatement 객체)
4. Query 실행
5. Query 실행 결과 사용
6. Query 실행 종료 (close()) (statement or preparedStatement 객체 종료)
7. DB 연결 종료(close()) (Connection 객체 종료)
6. excute, excuteQuery, excuteUpdate
https://kang-james.tistory.com/entry/executeQuery-%EC%99%80-executeUpdate
executeQuery 와 executeUpdate
Statement Statement 객체는 SQL문을 데이터베이스로 전송하는데 사용 세 종류의 Statement 객체 SQL문을 실행하기 위한 컨테이너들로써 동작 Statement PreparedStatement (Statement로부터 상속) CallableStatement (Prepar
kang-james.tistory.com
7. statement, preparedStatement
https://velog.io/@dondonee/JDBC-Statement-vs.-PreparedStatement
[JDBC] Statement vs. PreparedStatement
`Statement`는 DB에 쿼리를 보내 실행시키는 객체이다. `PreparedStatement`는 `Statement`를 상속받은 객체로, 확장된 기능을 가지고 있어 더 자주 사용되지만 `Statement`를 완전히 대체할 수 있는 것은 아니다
velog.io
240715
1. post방식과 get
form.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<form action="<%= request.getContextPath() %>/action.jsp" method="post">
아이디 : <input type="text" name="userId"> <br/>
비밀번호 : <input type="password" name="userPw"> <br/>
이름 : <input type="text" name="userName"> <br/>
권한 : <input type="text" name="userLevel"> <br/>
이메일 : <input type="email" name="userEmail"> <br/>
<input type="submit" value="회원가입버튼">
</form>
action.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<%
request.setCharacterEncoding("EUC-KR");
String userId = request.getParameter("userId");
String userPw = request.getParameter("userPw");
String userName = request.getParameter("userName");
String userLevel = request.getParameter("userLevel");
String userEmail = request.getParameter("userEmail");
out.println(userId + "<- userId <br/>");
out.println(userPw + "<- userPw <br/>");
out.println(userName + "<- userName <br/>");
out.println(userLevel + "<- userLevel <br/>");
out.println(userEmail + "<- userEmail <br/>");
%>
<a href="<%= request.getContextPath() %>/getAction.jsp?userId=<%= userId %>&userPw=<%= userPw %>&userName=<%= userName %>&userLevel=<%= userLevel %>&userEmail=<%= userEmail %>">get방식 버튼</a>
getAction.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<%
String userId = request.getParameter("userId");
String userPw = request.getParameter("userPw");
String userName = request.getParameter("userName");
String userLevel = request.getParameter("userLevel");
String userEmail = request.getParameter("userEmail");
out.println(userId + "<- userId <br/>");
out.println(userPw + "<- userPw <br/>");
out.println(userName + "<- userName <br/>");
out.println(userLevel + "<- userLevel <br/>");
out.println(userEmail + "<- userEmail <br/>");
%>
// get방식 한글 처리
Servers > Tomcat v9.0 Server at localhost-config > server.xml > source > line 63 > URIEncoding="EUC-KR" attr. 삽입
2. 트러블 슈팅: CSS 변경 사항이 Chrome에 반영이 안 될 경우
Chrome 인터넷 사용 기록을 삭제하면 정상적으로 반영이 된다.
3. jsp include
https://velog.io/@ung6860/include-%EC%9D%B4%EC%9A%A9
[JSP]Include에 대해 알아보자.
웹 어플리케이션 프로그래밍 시 중복 또는 반복되는 소스를 최소화하고, 유지보수성를 간편화 시키며, 협업 시 공통된 틀을 준수 할 수 있도록 도와주는 기능에 대해서 알아보자.
velog.io