노드객체를 사용할 수 있는 능력 브라우즈가 제공하는 객체 -window -window.document --node object 얻기 / 속성 / 스타일 / 조작하는 -window.XmlHttpRequest : Ajax -- 원격으로 데이터를 요청해서 그 결과로 화면(노드 객체)를 조작하는 기술
[자바스크립트 (X) ] ------------------------ [ 자바 on Tomcat ] (동적)문서를 제공
[자바스크립 on Browser] <----- XmlHttpRequest-------> [자바 on Tomcat] Servlet/JSP 데이터 "요청" 데이터를 제공(XML/CVS) 노드 조작
Ajax - > web version2 :비동기적으로 데이터를 요청해서 화면을 갱신하는 기술의 집합
Frontend 기술의 가장 꽃
주요 API :
XmlHttpRequest
-open() / send()
비동기로 처리할때 사용하는이벤트
onreadystatechange
onload
onerror
onabort
onloadend
동기적 : 페이지자체를 새로고침, 데이터가 바뀔때마다 업로드를 해야한다.(다른것들이 가동불가)
LPAD(char1,n,char2): char1의 왼쪽부터 char2를 채운다. n은 연산후 총 문자열 자릿수를 의미한다.
RPAD(char1,n,char2) : LPAD와 비슷 , 오른쪽부터 진행
REPLACE(char1,char2,char3): char1에서 char2를 찾아 char3을 반환한다. LTRIM과 달리 여러번 진행한다.
LENGTH(char): char의 길이
DECODE(input1, search1 , result1, search2, .. ,default): input1을 search1과 비교하여 같은 값이면 result1을 반환하고, 같지 않을 경우 search2를 비교하는 방식을 반복한다. 최종적으로 같은 값이 없으면 default를 반환한다.
날짜함수
SYSDATE: 현재 시스템 일자 반환
ADD_MONTHS(date,int): date에 int 수 만큼 월을 더한 날짜 반환
MONTHS_BETWEEN(date1,date2): date1을 기준으로 두 날짜 사이의 개월 수 반환
TO_CHAR(char or date , format) : 숫자나 날짜를 format에 맞는 문자로 변환 ex)to_char(sysdate , 'YYYY/MM/DD'),to_char(12345, 'L9,999.99')
TO_NUMBER(char,format): data를 format에 맞는 숫자로 변환
TO_DATE(char, format): char를 format에 맞는 날짜로 변환
TO_TIMESTAMP(char,format): char을 format에 맞는 타임스탬프로 변환
NULL 관련 함수
NVL(input1,input2): input1이 null이면 input2를 반환
LNNVL(조건식): 조건식의 결과가 false이거나 unknown이면 true를 , true이면 false를 반환한다.
NULLIF(input1, input2): input1과 input2가 동일한 값이면 null을 아니면 input1을 반환한다.
SELECT * FROM NOTICE WHERE ROWNUM BETWEEN 1 AND 5;
SELECT SUBSTR ('HELLO',1,3) FROM DUAL;--인덱스는0부터,3개 HEL
SELECT SUBSTR ('HELLO',3) FROM DUAL; --3부터 나머지 LLO
SELECT * FROM MEMBER ORDER BY NAME DESC;--이름을 기준으로 역순으로 정렬해서조회
SELECT * FROM MEMBER WHERE NAME LIKE '박%' ORDER BY NAME;--회원중에서 박씨성을 가진 회원을 조회하시오, 오름차순으로정렬(ASC생략가능)
--이름이 같을경우 닉네임으로 정렬하자 2차정렬이필요할때
SELECT * FROM MEMBER ORDER BY NAME ASC, NICNAME DESC;--이름오름차순, 이름이같다면 닉네임으로 내림차순정렬
--일별,월별조회수,회원수집계 등 ->집계함수,분석
SELECT COUNT(*) FROM NOTICE; --게시글의 전체수조회. NULL이들어간건 제외된다.되도록 식별자를넣기
SELECT COUNT(ID) FROM NOTICE;
SELECT COUNT(ID),WRITER_ID FROM NOTICE GROUP BY WRITER_ID;--작성자별 게시글 수 조회
SELECT COUNT(ID),WRITER_ID FROM NOTICE GROUP BY WRITER_ID ORDER BY COUNT(ID) DESC, writer_id ASC;
UPDATE MEMBER SET GENDER = '여성' WHERE ID =21;
COMMIT;
SELECT COUNT(ID),GENDER FROM MEMBER GROUP BY GENDER;--ID를 통해서 개수를 구한다.성별기반. 성별로 카운트조회
UPDATE MEMBER SET BIRTHDAY = 19881215 WHERE ID = 21;
COMMIT;
--생년월일에서 년도만잘라내서 YEAR이라는 컬럼을만들고 년생을 오름차순으로정렬
SELECT COUNT(ID),SUBSTR(BIRTHDAY, 1, 4) YEAR
FROM MEMBER
GROUP BY SUBSTR(BIRTHDAY, 1,4)
ORDER BY YEAR ASC;
--회원별 게시글수를 조회(단,게시글 수가 2미만 레코드만출력) 집계함수조건 HAVING
SELECT COUNT(ID),WRITER_ID FROM NOTICE GROUP BY WRITER_ID HAVING COUNT(ID) < 2;
--최신등록순으로 정렬한 결과에서 상위 열명을 원하는 경우조회
SELECT*FROM ( SELECT*FROM MEMBER ORDER BY REGDATE DESC) WHERE ROWNUM BETWEEN 1 AND 10;
--나이가 30이상인 회원목록조회(순서를 바꾸거나 먼저계산해서 실행)
SELECT*FROM MEMBER WHERE AGE > = (SELECT AVG(AGE) FROM MEMBER);
--보조쿼리,서브쿼리 먼저실행 안쪽에별칭만들어 쓰기
SELECT * FROM (SELECT ROWNUM NUM, NOTICE.* FROM NOTICE)
WHERE NUM BETWEEN 6 AND 10;
--등록일자를 기준으로 역정렬, N:결과집합이름, TITLE에 A가들어간것
SELECT * FROM (
SELECT ROWNUM NUM, N.*
FROM (
SELECT *
FROM NOTICE
WHERE TITLE LIKE '%a%'
ORDER BY REGDATE DESC
) N
)
WHERE NUM BETWEEN 1 AND 5;
--where title like'%a%'
======================== 사용자 입력 =========================
GET 요청에 쿼리스트링을 전달하는 예제 검색 : -f / q -> 전달 -> request.getParameter("f");
NoticeService -getList(){ return getList("title", "");} -getList(f,q){f와 q를 이용한 검색 쿼리를 작성하는 문제0}
ORACLE 2Step 연산자(산술,비교,관계)와 패턴연산자, 정렬, 집계
-산술연산 -- +, -, *, / - ||
- 비교연산 -관계연산 -패턴연산
다르다 : !=, ^=, <>
UPDATE NOTICE SET HIT = 10 WHERE ID = 21;--조회수업데이트
COMMIT;
UPDATE NOTICE SET WRITER_ID ='김영화' WHERE WRITER_ID ='TUE';--사용자ID명을 이름으로바꿈
SELECT 3 || 10 FROM DUAL;--310
SELECT NAME || ID FROM MEMBER;--김영화21
SELECT NAME || '(' || ID || ')' AS NAME FROM MEMBER;--별칭으로조회
SELECT * FROM MEMBER ORDER BY ID;--ID로 정렬하기
--SELECT ID AS MEMBER_ID, NAME, PWD AS PASSWORD FROM MEMBER;--원하는 컬럼을 원하는 별칭으로조회
--SELECT ID "USER ID", NAME, PWD PASSWORD FROM MEMBER;--AS생략가능, 빈공간""로 묶기
SELECT * FROM NOTICE WHERE WRITER_ID = 'newlec';--''안에 대소문자구분
SELECT * FROM MEMBER;
SELECT * FROM NOTICE;
SELECT * FROM NOTICE WHERE HIT > 3;
SELECT * FROM NOTICE WHERE CONTENT IS NULL;--NULL인것조회
SELECT * FROM NOTICE WHERE CONTENT IS NOT NULL;
SELECT * FROM NOTICE WHERE HIT = 0 OR HIT = 1 OR HIT = 2;
SELECT * FROM NOTICE WHERE 0 <= HIT AND HIT <= 2;--조회수 1~2까지
SELECT * FROM NOTICE WHERE HIT BETWEEN 0 AND 2;--조회수 1~2, 암기할것
SELECT * FROM NOTICE WHERE HIT IN (0,2,7);--조회수 0,2,7결과조회
SELECT * FROM NOTICE WHERE HIT NOT IN (0,2,7);--반대,여집합조회 0,2,7이 아닌것찾아라
--패턴연산자
SELECT * FROM MEMBER WHERE name LIKE '박%';--회원중에서 박씨성을 조회,(사용x->NAME = '박%'; 정확한 박%를찾는다.)
SELECT * FROM MEMBER WHERE NAME LIKE '박_';--언더바는 길이제한, 박씨이고 이름이외자인 회원조회
SELECT * FROM NOTICE WHERE TITLE LIKE '%i%';--i가들어간 제목조회, '%I' 로 끝나는
웹 플랫폼 -서블릿 -- HttpServlet을 상속 받아서 service 함수를 구현하는 것이 전부 -- 추가적인 도구로써 입/출력 도구 : request, response -- 상태저장의 필요성 때문에 준비된 도구 : 상태저장이 안되는 이유는 서블릿간의 생명주기 문제로 ... 상태저장 도구 : application/session/request/pageContext/queryString -서블릿의 문제점 --서블릿은 doGet/doPost를 주로 서비스 하는 프로그램인데 대부분은 GET 요청을 처리하는 서비스이다. --그래서 주로 출력하는 코드가 HTML을 출력하는 코드가 대부분이다. 이런 문제로 단순반복적인 코드가 많아지게 되어서... 그것을 도와주는 도움자가 필요하게 되었다. -JSP
코드블럭
-기본블럭 <% 자바문법 %>
-정의블럭 <%! %>
-출력블럭 <%= %>
-사전지시자블럭 <%@ %>
오라클
오라클이란 ? DBMS 제품 중하나
DBMS 는 ?
DB?
DDL/ DML / DCL
DML 명령어 :INSERT/SELECT/UPDATE/DELETE
JDBC
-Native Library ->JDBC
-JDBC의 구성
-connection / statement/resultSet
-Driver 로드하는 방식도..
-데이터 쿼리하는 코드
-데이터 쿼리하는 코드를 재사용하기 위해 클래스로 분리
-MemberService구현
-getList()메소드를 구현
WEB(JSP)에서 JDBC 라이브러리 사용하여 DB연동하기
엔티티만들기
1. entity 패키지에 Notice클래스를 만든다
2. service패키지에 NoticeService클래스를 만든다
3. Notice클래스에 변수를 먼저 넣어준후, 마우스오른쪽-source->기본생성자,매개변수사용하는 생성자, toString메소드, getter and setter를 만든다.
서비스구현시 : 서버가 동시에 여러명접속하게하는데 한계가있다. 동시접속자를 늘리려면 요청-연결-종료해줘야한다.
자동으로 끊기긴하지만 연결종료, statement와 resultSet을 닫아준다.
마지막엔 연결종료를한다. 기억하기.
사용자가입력한 값을 서버에 출력해보자.
사용자에의해 검색값이 눌려지면 get요청이된다
action =""을 생략하면 자기자신에게 요청할것으로 정함
public List<Notice> getList() throws ClassNotFoundException, SQLException{
return getList("title","");//기본값 }
public List<Notice> getList(String field,String query)
두개의 컬럼을 하나로 합칠수있어야한다
오라클연산자
UPDATE NOTICE SET NAME ='김영화' WHERE NICNAME ='TUE';
COMMIT;
SELECT * FROM MEMBER;
SELECT HIT + 1 FROM NOTICE;
SELECT 1 + 1 FROM DUAL;--2
SELECT '1' + 1 FROM DUAL;--2
SELECT 'A' + 1 FROM DUAL;--수치가 부적합합니다,A는 숫자변환불가
SELECT '1' + 1 FROM DUAL;--2
SELECT '1' + 1 HIT FROM DUAL;--별칭생성
SELECT 3 || 10 FROM DUAL;
특정 앨리먼트만 readonly attribute Element parentElementNode; readonly attribute Element firstElementChild; readonly attribute Element lastElementChild; readonly attribute Element previousElementSibling; readonly attribute Element nextElementSibling; readonly attribute List<Element> children;
Node와ElementNode는 태그노드와 텍스트노드전체를 가리키고,Element는 텍스트노드를 제외하고, 흔히 생각하는 태그(<a>같은)만 가리킵니다. 따라서 태그만 검색하고 싶을 때는Element가 붙은 메소드를 선택해야합니다.