Servlet-JSP 30

Model2 - MVC

모델 ? 어떤 일이든 주로 사용하는 방식이 있다. 그들만의 룰. 우리는 '표준'이라고 한다. 웹 개발도 마찬가지다. 꼭 그래야만 할 필요는 없지만 웬만하면 이런 구조로 만들자, 고 하는 '표준'이 있다. 이것을 모델이라고 한다. Model1 비즈니스 로직과 화면 처리를 하나의 JSP가 모두 처리하는 것이 모델1 방식이다. 그러니까 지금까지는 one.jsp는 브라우저의 요청을 받아서 비즈니스 로직을 수행한 뒤, 다시 화면까지 처리하는 구조였다. 모델1 방식의 장점이라면 구현이 쉽고 편하다는 것이다. 그러나 화면이 복잡해지면 화면 처리와 비즈니스 로직이 섞일 위험이 있다. 그럼 붕괴된 도로처럼 유지 보수하기가 힘들어진다. Model2 모델2 방식의 핵심은 클라이언트의 요청/응답 처리, 비즈니스 로직 처리를 ..

Servlet-JSP 2020.09.11

JSTL

JSTL(JSP Standard Tag Library) EL이나 액션 태그를 이용해도 여전히 자바 코드를 사용할 수밖에 없는 상황이 있다. 이를테면 반복문이나 조건문 같은 것을 쓸 때. 이것을 제거하기 위해 커스텀 태그가 등장했다. 커스텀 태그는 자바 코드를 대체하기 위해 만든 태그다. JSTL은 커스텀 태그의 한 종류다. JSTL 라이브러리 설정 우선 사용하기 위해서 라이브러리를 설치해야 한다. 링크 초록색 테두리 안에 네 개의 라이브러리를 받는다. WebContent - WEB-INF - lib 안에 다운 받은 라이브러리를 넣는다. 라고 고쳐써야 한다. JSTL의 태그 종류 라이브러리 세부 기능 접두어 관련 URL 코어 변수지원, 흐름제어, 반복문, URL처리 c http://java.sun.com/..

Servlet-JSP 2020.09.11

표현언어(EL, Expression Language)

표현언어 EL 액션태그에 이어서 JSP에서 자바 코드를 없애려는 노력은 계속되었다. EL은 좀 더 편리하게 자바 표현식을 다루기 위해 JSP2.0부터 도입되었다. 데이터를 출력하는 역할을 한다. 특징 기존 표현식보다 편리하게 값을 출력한다. 변수와 여러 연산자를 포함할 수 있다. JSP 내장 객체에 저장된 속성 및 자바 빈 속성도 출력할 수 있다. EL 자체 내장 객체를 제공한다. JSP 생성 시 기본 설정으로는 EL을 사용할 수 없다. 페이지 디렉티브 태그에서 반드시 isELIgnored=false로 설정해야 한다. 형식 ${표현식 또는 값} ${1+1 == 2 ? "hello" : "world"} ${number} EL의 자료형과 연산자 자료형 boolean 정수 실수 문자열('', "..

Servlet-JSP 2020.09.11

액션 태그

액션 태그 JSP는 비즈니스 로직과 화면 개발을 분리하려는 목적으로 개발되었다. 그러나 여전히 스크립트릿같은 녀석들이 HTML 영역을 침범했다. 방역하고 방역해도 죽지 않는 코로나처럼. 죽일 순 없으니 마스크라도 쓰자...는 마음으로 만들어진 것이 액션 태그다. 인클루드 액션 태그 jsp:include... 파라미터 인자로 받는 이미지 파일 이름을 읽어서 화면에 나타내는 jsp를 만든다. 1에서 만든 jsp를 다른 jsp들이 include 태그를 이용하여 재사용한다. 이런 방식의 장점은 자바 코드를 한 번만 쓰면, 남은 페이지에서 자바 코드를 쓸 일이 없다는 것이다. 1번 jsp 이름은 자바코드 없이 include태그로 1번을 재사용하는 jsp 폐허한 지구의 두 친구 폐허한 지구 만약 한글 이름을 전달하..

Servlet-JSP 2020.09.11

JSP😇

JSP? 먼 옛날. 서블릿 위에 html태그를 써서 화면으로 전달하던 시절. 디자이너와 개발자는 서로 얼굴 붉힐 일이 많았을 것이다. 이런 일이 있었다. 디자이너는 오늘 일찍 퇴근해서 애인과 종로에서 가장 오래된 레스토랑인 아지오에 갈 생각이다. 그런데 개발자라는 작자가 작업을 끝내지 못해서 오전 내 작업을 못하고 있다. 오후 세시께야 파일을 받았다. 디자이너는 세 시간 안에 작업을 끝내겠다는 생각으로 열의를 불태운다. 흠. 너무 과했던 모양이다. 실수로 자바 코드 몇 개를 건드렸는데...controll + z도 안 먹는다... 그렇게 디자이너와 개발자 사이는 비포장도로처럼 위태로워졌을 것이며 어쩌면 타이어에 펑크가 났을지도 모르는 일이다. 이런 배경에서 누군가. 그러니까 평화를 지향하던 인간 하나가 J..

Servlet-JSP 2020.09.11

서블릿 리스너

Servlet Listener API 서블릿에서 발생하는 이벤트를 처리할 수 있도록 제공하는 리스너 Listener의 메서드 서블릿 관련 Listener 추상 메서드 기능 ServletContextAttributeListener attributeAdded() attributeRemoved() attributeReplaced() Context객체에 속성 추가/제거/수정 이벤트 발생 시 처리 HttpSessionListener sessionCreated() sessionDestroyed() 세션 객체의 생성/소멸 이벤트 발생 시 처리 ServletRequestListener reqeustInitialized() requestDestroyed() 클라이언트의 요청 이벤트 발생 시 처리 ServletReques..

Servlet-JSP 2020.09.11

Servlet Filter

서블릿 필터 요청/응답과 관련된 작업을 미리 처리한다. 이를테면 setCharacterEncoding()같은 귀찮은 작업을 필터에 설정해두면 요청/응답할 때 알아서 한다. Request Filter - Response Filter 필터는 크게 요청 필터와 응답 필터로 나눌 수 있다. 요청 필터 사용자 인증 및 권한 검사 요청 시 요청 관련 로그 작업 인코딩 응답 필터 응답 결과에 대한 암호화 서비스 시간 측정 관련 API javax.servlet.Filter javax.servlet.FilterChain javax.servlet.FilterConfig Filter인터페이스의 메서드 Method 기능 destroy() 필터 소멸 시 컨테이너에 의해 호출되어 종료 작업 수행 doFilter() 요청/응답 시..

Servlet-JSP 2020.09.11

서블릿 스코프

Servlet Scope! 서블릿 속성attribute 세 가지 ServletContext HttpSession HttpServletRequest 각 속성을 setAttribute()로 바인딩하고 getAttribute()로 꺼내서 쓴다. 서블릿 스코프scope란, 서블릿 속성에 접근할 수 있는 범위를 말한다. servlet scope ! 스코프 종류 해당 서블릿API 속성의 스코프 애플리케이션 스코프 ServletContext 속성은 애플리케이션 전체에서 접근할 수 있다. 세션 스코프 HttpSession 속성은 브라우저에서만 접근할 수 있다. 리퀘스트 스코프 HttpServletRequest 속성은 해당 요청-응답 사이클 안에서만 접근할 수 있다. 스코프의 기능 로그인 상태 유지 장바구니 MVC - ..

Servlet-JSP 2020.09.11

세션 로그인 예제

서블릿과 DB를 연동해서 ID 체크를 하고, 로그인 상태를 유지하는 예제다. 순서는 이렇다. login.html에서 아이디와 비밀번호를 입력한다. LoginServlet은 입력 받은 ID로 DB에 조회한다. 없는 아이디라면 login.html로 돌려보낸다. 있는 아이디라면 /show로 이동하여 회원 정보를 확인할 수 있다. VO public class MemberVO { private String id; private String pwd; private String name; private String email; private Date regdate; //Getter Setter 생략... ... ... } DAO public class MemberDAO { private Connection con; ..

Servlet-JSP 2020.09.10

encodeURL()

쿠키를 사용하지 않겠다고 설정한 브라우저에서는 쿠키는 물론 세션도 사용할 수 없다. 이런 경우, encodeURL()로 직접 서버에서 브라우저로 응답을 보낸 후, URL Rewriting을 이용해 JSESSIONID를 서버로 전송하여 세션 기능을 사용할 수 있다. package pro09.sec04; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; impor..

Servlet-JSP 2020.09.10