코드와이
[웹] JSP, 기타 본문
jsp 는 servlet 보다 최초 한번 느리다
- servlet java 파일로 변환
- servlet class compile
- servlet class를 메모리에 적재
jsp 스크립팅 요소
- 선언
<%! String name; public void init(){ name = “코드와이”;} %> - 스크립트릿
클라이언트 요청 시 매번 호출되는 영역 : service
<% %> - 표현식
안녕 <%= name %>!!!
세미클론 쓰면 안됌! - 주석
<%— 주석 —%>
jsp 지시자
- page directive
현재 JSP 페이지를 어떻게 처리할 것인가
<%@ page attr1=“val1” … %>- contentType, pageEncoding 은 utf-8로
- errorPage : 에러가 발생할 때에 대신 처리될 페이지 설정
- isErrorPage : 에러를 핸들링하는 페이지인지 설정(boolean)
- include directive
특정 jsp 파일을 페이지에 포함
<%@ include file=“/template.jsp”%> - taglib directive
jstl 또는 사용자에 의해서 만든 커스텀 태그
<%@ taglib prefix=“” uri=“” %>
jsp 기본객체
- request
- 사용자 입력정보를 읽어올 때
- response
- 사용자 요청에 대한 응답
- pageContext
- 각종 기본객체를 얻을 때 사용
- session
- 하나의 웹 브라우저와 관련된 영역
- 같은 웹브라우저 내에서 요청되는 페이지들은 같은 session을 공유
- application
- 웹 어플리케이션에서 모든 페이지가 공유할 수 있다.
EL
페이지에 전달된 객체를 ${} 형식으로 사용할 수 있다. Dto에 getter 함수가 있다면 ${객체.변수} 같은 형식으로 사용할 수 있다.
forward vs sendRedirect
forward
- path ( 내 project 안의 경로로만 이동, 프로젝트 밖으론 이동 불가)
- 기존 url 유지
- 비교적 빠름
- request의 setattribute로 데이터 전달
sendRedirect
- url ( 외부 url 로 이동 가능 ex. www.naver.com)
- 단순 페이지 이동
- request 로는 데이터 전달 불가능, session, cookie 사용해야됨
session 동작 순서
- 클라이언트가 페이지를 요청
- 서버는 접근한 클라이언트의 request-header 필드인 cookie를 확인하고 클라이언트가 해당 session-id 를 보냈는지 확인
- session-id가 존재하지 않는다면, 서버는 session-id를 생성해 클라이언트에게 보내준다.
- 서버에서 클라이언트로 돌려준 session-id를 쿠키를 사용해 저장
- 클라이언트는 재 접속 시, 이 쿠키를 사용해서 session-id 값을 서버에 저장
model1, model2(MVC)
model 1
- jsp가 client의 요청에 대한 logic 처리와 response page에 대한 처리를 모두 하냐
- view 와 login을 jsp 한 페이지에서 처리
model 2(MVC : Model, View, Controller)
- response view 에 대한 처리만 하냐
- service, dao, dto => model
- service : 로직을 수행하나 db 관련 로직은 dao에 전달
- dao : db 관련 작업 수행, xml 파싱도 가능
- dto : 데이터 객체
- jsp => view
- servlet => controller
- controller : service에 일을 시키고 결과를 다음 페이지로 forward / redirect
오류 종류
200 오류 없이 성공
400 문법 상 오류
404 not found
405 method not allowed, 메소드 허용 안됨
415 지원되지 않는 형식으로 클라이언트가 요청(contentType, Content Encoding 다시 살펴볼 것)
500 서버 내부 오류
JDBC API를 이용하여 DB를 연동순서
- JDBC Driver 로딩
- DB Connection 생성
- Statement 생성
- Query 실행
- 결과처리
- 자원 반납
[ DB - SQL Tip]
- rollback : 트랜잭션 작업을 되돌리는 명령어
- in : 다중 행을 리턴하는 서브쿼리에서 =any와 동일한 것
- executeUpdate() 메소드는 select에 적당하지 않다. executeUpdate(String query) 는 update 된 갯수를 알려준다.
- HIREDATE => date 타입
- substr은 1부터 시작한다. (ex. substr(ename,1,3))
- where 절에서 column 에 null 조건을 줄 때 ‘is null’ or ‘is not null’
Thread & Process
thread란?
- 명령 처리 흐름의 단위
프로세스란?
- 프로그램의 실행 단위
- 최소 하나의 스레드를 가진다.(Main Thread)
- 이 스레드는 자고 있을수도 있다. = 처리할 명령이 없어서 가만히 있는 것.
실행되고 있는 프로그램 = 메모리를 사용하고 있는 프로그램
thread.sleep(1/1000초);
0.1초 중지하려면 thread.sleep(100);
'웹' 카테고리의 다른 글
[웹] Vue.js (0) | 2021.05.10 |
---|---|
[웹] Rest API (0) | 2021.05.09 |
[웹] MyBatis (0) | 2021.05.01 |
[웹] Spring(2) (0) | 2021.04.27 |
[웹] Spring (0) | 2021.04.27 |