본문 바로가기

Study/JSP

(14)
[JSP]서블릿(Servlet)과 EL표현식 서블릿(Servlet) 서블릿(Servlet)은 jsp파일이 실행되기 위해 java파일로 변환된 것을 말하며, jsp와 java 코드를 함께 수행 가능하다. 서블릿 응답 정보의 내용 형태는 html인데, java 페이지에서 직접 표현하려면 html 페이지를 java 코드 내에서 모두 작성해야 하기 때문에 번거롭고 복잡하다. 그래서 서블릿에서는 액션태그를 통한 페이지 이동, 즉 forward 방식으로 jsp 페이지를 보여주게 된다. 페이지를 이동할 때 주소줄에 jsp 페이지 주소가 그대로 노출되면 보안상의 위험이 있어, 서블릿에서 정해놓은 가상 주소를 대신 노출시키고 포워딩으로 화면만 이동하는 것이다. 정리하면 jsp는 정적/동적 데이터를 같이 처리하는 페이지고, 서블릿은 java 코드를 사용해서 jsp ..
[JSP]JSTL (core/formatting) JSTL(JSP Standard Tag Library)는 자주 사용되는 태그들의 모음이며, 태그 형태로 JSP 코드의 역할을 수행한다. JSP 코드가 없어도 반복문 등을 쓸 수 있게 해 주고, 여러 라이브러리를 포함하고 있다. 먼저 core 라이브러리는 변수 선언, 조건문, 반복문, 페이지 이동 등 기본적인 동작을 처리한다. Formatting 라이브러리는 데이터 국제화(다국어), 형식화(날짜, 숫자, 시간 등)를 처리하고, DB 라이브러리는 SQL구문(CRUD)을 처리한다. 그리고 XML 라이브러리는 xml 문서를 읽고 처리하는 동작을 수행한다. JSTL 다운로드 Apache Tomcat 홈페이지에서 Taglibs - Download를 들어간다. 그리고 Jar Files에서 Compat을 제외한 3가지..
[JSP]커넥션풀/JNDI - 이클립스와 MySQL 연결 페이지에서 DB를 연결해야 하는 작업 시, 페이지를 요청할 때마다 커넥션 객체를 생성하게 되면, 프로세스가 늘어나 메모리의 소모가 커진다. 그래서 커넥션 정보를 미리 풀 속에 저장했다가 요청한 페이지에 빌려주고, 끝나면 돌려받는 것이 커넥션 풀(Connection Pool)을 사용한 작업이다. 매번 커넥션 객체를 생성하지 않아도 되고 재사용도 가능하기 때문에 속도도 빠르며 부하를 줄일 수 있다. 커넥션 풀과 함께 JNDI(Java Naming and Directory Interface)라는 것이 필요하다. JNDI는 명명 서비스 및 디렉토리에 접근하기 위한 API로, 파일 외부에 존재하는 특정 자원을 가져와야 할 때 사용하며 따로 다운로드가 필요하기 때문에 가장 보편적인 Apache Commons의 JN..
[JSP]자바빈(JavaBean) - 이클립스와 MySQL 연결 자바빈(JavaBean) 자바빈(JavaBean)은 관련된 데이터들을 하나의 클래스에 설계하여 한번에 사용하게 해 주는 객체다. 한 소스코드에 html, css, jsp 등이 모두 같이 있으면 너무 복잡해지고, 웹 디자이너의 경우 jsp를 모를 수 있기 때문에 코드를 잘못 건드릴 위험이 생긴다. 그런 비즈니스 로직 부분과 디자인 부분을 분리하게 해 주는 것이 바로 자바빈이다. 자바빈은 클래스를 쓰기 때문에 java 페이지로 만든다. 자바빈을 사용할 때 지켜야 하는 설계 규약은 다음과 같다. 1. 기본 패키지(default)를 제외한 특정 패키지 내에 생성한다. 2. 기본 생성자가 있어야 한다. 3. 필드(멤버 변수)는 private로 생성한다. 4. 필드에 접근하기 위한 public getter/sett..
[JSP]JDBC - 이클립스와 MySQL 연결 JDBC(Java Database Connectivity)는 자바와 DBMS를 연결시켜주는 API다. DBMS의 종류와는 상관없이 독립적으로 사용할 수 있고, 별도로 설치해야 한다. 이 JDBC를 사용하여 이클립스에서 DB 테이블 데이터에 접근할 수 있다. JDBC 설치 방법은 매우 간단하다. JDBC / JDBC 드라이버 설치 먼저 MySQL 홈페이지 - DOWNLOADS - MySQL Community (GPL) Downloads 에서 Connector/J를 찾는다. 실행 시스템을 Platform Independent 로 선택하고 zip 파일을 설치하여 압축을 풀어준다. 마지막으로 폴더 내에 있는 jar 파일을 복사하여 이클립스 본인 프로젝트 WebContent 내 WEB-INF 의 lib 폴더에 붙..
[JSP]세션(Session)과 쿠키(Cookie) jsp에서 세션(session)과 쿠키(cookie)는 비슷하지만 다르다. 세션은 서버와 클라이언트가 연결되었을 때, 그 상태를 유지하기 위해서 서버 측이 관리하는 데이터다. 세션 객체는 브라우저마다 따로 생성(서버상)되며, 브라우저 내 여러 세션을 생성할 수는 있지만 세션이 늘수록 서버에 무리가 갈 수 있다. 또한 브라우저를 종료하면 사라지고 서버에서만 관리할 수 있어 보안의 이점이 있다. 쿠키는 반대로 클라이언트 측에서 관리되는 데이터이며, 브라우저가 종료된 후에도 특정 기간 동안은 사용 가능하다. 서버에만 존재하는 세션과 다르게 하드디스크 내에 저장되며, 그렇기 때문에 쿠키의 위치가 공개돼있어 보안에 취약하다. 대표적으로 로그인 창에서 '다음 로그인 시 아이디 저장' 이 쿠키를 사용한 예시다. 정리..
[JSP]내장객체, 액션태그, 영역객체(Scope) 내장객체 jsp의 내장객체란, jsp 페이지가 웹 컨테이너에 의해 서블릿으로 변환될 때 자동 생성되는 객체를 말하며, 클래스나 import 구문이 없어도 사용 가능하다. 변환 시 필수 내장객체가 9가지 있는데, javax.servlet 패키지 내의 8개와 java.lang 패키지의 exception 객체로 이루어져 있다. request 객체는 클라이언트의 HTTP 요청 정보를 저장하고, reponse 객체는 그 요청에 대한 응답 정보를 저장한다. session 객체는 클라이언트의 세션 정보를 저장, pageContext 객체는 실행에 필요한 프로젝트 정보를 저장하며, application 객체는 동일한 애플리케이션의 콘텍스트 정보를 저장한다. 그리고 config 객체는 페이지 설정값(서블릿 초기화 정보)..
[JSP]JSP와 폼 태그 JSP를 설명하기에 앞서 웹 프로그래밍이란, 웹상에서 사용자와 기업 또는 사용자들 간의 연결을 가능하게 하는 것을 말한다. 웹 프로그래밍 언어로는 CGI, ASP, PHP, JSP 등이 있는데, CGI는 거의 쓰지 않고 ASP는 윈도우 기반 서버에서만 사용하며, PHP는 배우기 쉽지만 인프라가 부족하다는 단점이 있다. 이 중 ASP의 장점을 수용하여 서블릿과 함께 동작하게 만든 언어가 현재 가장 많이 쓰이는 JSP다. 여기서 서블릿(Servlet)은 Server와 Applet을 합친 말로, java 웹 페이지를 서버에서 실행하게 해주는 동적 웹 구현 기술이다. 서블릿은 스레드(Thread) 기반의 요청 처리 방식을 기반으로 하여 프로세스(Process) 기반 방식보다 훨씬 빠르다. 프로세스란 주기억장치 ..