공부기록/Servlet JSP

    MVC패턴

    모델1 - JSP파일에서 요청을 처리하고 해당 응답을 전송 비지니스 로직과 뷰 코드가 섞임 모델2 - 웹요청을 Servlet이 받아 처리 --> 알맞게 처리후 JSP페이지로 포워딩 MVC(model view controller) 모델 - 비지니스 영역의 로직을 처리(로직 처리클래스, 자바빈) 뷰 - 화면 출력(JSP) 컨트롤러 - 입력처리와 흐름제어(Servlet) 서블릿 - doGet(), doPost() 메서드를 호출 -> 요청 기능에 맞게 수행 -> 결과를 request, session에 저장하여 JSP로 전송 - 요청기능 분석 과정에서 커맨드 패턴코드 사용 url을 보면 ?type=post&page=3 과 같은 형태로 전송 이러한 것은 url을 사용자에게 노출시킴 --> 막기위해서 uri자체를 명..

    filter

    filter - http요청과 응뎁을 변경할 수 있는 재사용 가능한 클래스(ex character Encoding방식 지정) 여러개의 filter를 chain으로 연결해서 순차적으로 필터링 가능 client요청, 응답filterjsp, servlet filter interface - init - 초기화시 호출, dofilter - 필터링& chain을 이용해 다음 filter로 이동, destroy-filter가 웹 컨테이너에서 삭제될때 web.xml에서 을 통해 filtering대상 지정가능 - url-mapping : 해당 형식의 url을 가진 것은 모두 대상 - servlet-name : 특정 servlet을 대상

    JSTL2

    국제화태그 로케일지정 --> request.setCharacterEncoding("") 메시지처리 - 태그 몸체에서 사용할 리소스 번들 지정 경로 - resource.message와 같이 지정 setBundle과 차이점 - setBundle은 어디서나 변수로 접근 가능 bundle은 태그 내에서만 사용가능 --> 번들에서 {0} {1} 과 같이 값이 변경 가능 한 것에 지정, 배열 순서와 같음 숫자 및 날짜 포맷팅 책참고 필요할때 찾아보면 될듯

    JSTL1

    0{ for(int i=0; i 데이터가 없습니다. ${data.title} 데이터가 없습니다. 사용이유 - 스크립트 코드 사용줄이면서 가독성 높이기 위해 태그종류 - 코어(변수지원 흐름제어 url처리), 국제화(지역, 메시지형식, 숫자및 날짜형식), 함수(컬렉션처리 string처리) xml(xml코어 흐름제어 xml변환), 데이터베이스(sql) --> 주로 사용안함 코어태그 변수지원 scope - 변수를 저장할 영역, page, request, session, application --> url로 넘겨줄 값 지정 *절대주소 - https://www. naver. com 과 같은 완전한 url 상대주소 - /view/list.jsp와 같은 것 request.sendRedirect와 같은 역할 기타 esc..

    EL

    JSP의 스크립트 요소를 보안하는 역할 ${'expr'} 형태로 작성 boolean, Long, Double, String, Null type 저장 된 값에 접근 하기 위해서 . 혹은 [] 두개를 사용 연산 - 계산, 비교, 논리, empty, 삼항연산 가능 문자열 연결 위해 + 사용 List map 과같은 자바 컬렉션사용가능 람다식, 스트림 사용가능 * ${a : b} --> a의 값은 출력 되지 않고 b만 출력 됨 특수문자 - \사용 jsp파일에서 import를 시켜 java파일에 있는 메서드 사용 가능 정적 메서드를 사용하기 위해서 TLD파일을 작성을 해 주었지만 3.0에서는 바로 import를 통해 사용가능 EL을 비활성화 시키는 것도 가능

    자바빈

    자바빈 - 데이터 변경 이벤트 객체직렬화를 위한 표준 property - 쉽게 getter setter를 생각하면 됨 - jsp페이지에서 사용할 자바빈 객체를 지정할때 사용 * scope = 객체를 저장할 영역 (page(default) request session application) class에서 id로 객체를 만들어서 scope에 저장해서 사용 setProperty를 사용할때 property의 값을 *로 지정할 경우 모든 값을 저장

    페이지 모듈화

    - 페이지 내에서 상단메뉴, 좌측메뉴 등과 같은 동일한 것을 모듈화를 시켜 중복 제거 flush가 false면 출력하지 않음 main페이지에서 include태그가 실행되면 병렬적으로 실행 되는 것이아니라 먼저 page를 include시키고 다음 문장 출력 - 포함시킬 페이지에 argument로 보내주기 위해서 사용 받은 쪽에서는 request.getParameter("name")을 통해서 받아옴 request.setCharacterEncoding()을 통해서 인코딩을 하지 않으면 올바른 값 전달 안될 수 있음 - 페이지를 redirect하지 않고 해당 페이지의 내용을 전부 제거하고(출력버퍼에서) 새로 출력

    에러처리

    에러페이지 지정 - 에러페이지 작성 - 응답 상태별로 에러페이지 지정 - web.xml파일에 에러코드와 페이지경로를 지정 아래 코드를 에러 코드번호(200, 307, 400, 401, 404, 500, 503) 별로 지정을 별도로 하면됨 코드번호 에러페이지 경로 익셉션 별로 에러페이지 지정 - 위 코드에서 error-code를 excption-type으로 변경 ex) java.lang.NullPointerException

    JSP기본객체

    request - 웹 브라우저의 오청정보를 제공 하는 것 웹 관련된 정보, 서버 관련된 정보, 클라이언트가 전송한 요청 파라미터 읽기 요청 헤더 읽기, 전송한 쿠키 읽기 get - 파라미터를 url에 붙혀서 전송, 값의 길이에 제한이 있을 수 있음 post - 데이터 영역을 이용해서 파라미터 전송, 길이 제한 없음 response - 헤더정보 입력, 리다이렉트(페이지 이동) 리다이렉트 - response.sedRedirect(String location) out - jsp페이지 내에서 사용하는 html코드와 텍스트를 그대로 전달하여 출력 out을 사용하여 출력하는 경우는 많지 않음 주로 출력 코드가 복잡해 질 경우 사용 10){ %> 10){ out.println(gradeA) }else{ out.pri..

    JSP시작

    jsp - 디렉티브, 스크립트, 표현언어, 기본객체, 정적인 데이터, 표준액션태그, 커스텀태그 디렉티브 - page(주로 사용) taglib include 스크립트 - 표현식: 값을 출력 스크립트릿: 자바 코드실행 선언부: 자바 메소드 생성 - html 태그 전에 선언해서 사용 스크립트릿 표현식 선언부 표현언어 - 스크립트 요소를 자바 코드로만 작성시 복잡해지기에 이를 대체하기 위해 사용 기본객체 - request, response, session, application request - 웹 브라우저의 오청정보를 제공 하는 것 웹 관련된 정보, 서버 관련된 정보, 클라이언트가 전송한 요청 파라미터 읽기 요청 헤더 읽기, 전송한 쿠키 읽기 get - 파라미터를 url에 붙혀서 전송, 값의 길이에 제한이 있..