목록Java (81)
삶 가운데 남긴 기록 AACII.TISTORY.COM
Properties 파일 웹 어플리케이션에서 다국어 지원을 위해 Properties 파일을 이용하는 경우가 많습니다. net.aacii.bundle 패키지를 생성해서 msg_ko.properties와 msg_en.properties 파일을 생성합니다. 이 properties 파일들은 한글의 경우 이클립스에서 자동으로 유니코드로 변환해주는데, 이 properties 파일들을 우클릭 후 open with를 선택 후 텍스트에디터로 열게 되면 한글이 유니코드로 변환되어 있는 것을 확인할 수 있습니다. 만약 자동으로 유니코드로 변환이 되지 않는다면, 이클립스 플러그인 중에 Properties Editor를 설치하시면 됩니다. 이 플러그인 설치 방법은 여기에서 다루지 않겠습니다. msg_ko.properties 을..
JSTL(Java Server Pages Standard Tag Library) 개요 자주 사용하는 기능은 커스텀 태그로 구현 한다음 재사용하면 편리합니다. 그러나 커스텀 태그는 직접 만드려면 많은 수고가 필요하게 됩니다. 그래서 표준 태그 라이브러리가 존재하는데 이것이 JSTL 입니다. JSTL 1.0은 Servlet 2.3과 JSP1.2와 호환 JSTL 1.1은 Servlet 2.4와 JSP2.0과 호환 JSTL 1.2은 Servlet 2.5와 JSP2.1과 호환 core는 기본 기능이 포함되어 있으며 formatting은 날짜 시간에 관한 기능, sql은 데이터베이스 작업기능 xml은 xml을 지원하는 기능 functions은 여러 함수 기능이 구현되어 있습니다. core: formatting: s..
태그 기반 커스텀 태그는 클래스 기반 커스텀 태그를 선행으로 학습해야 이해하기 쉽습니다. jsp파일에 커스텀 태그 기능을 구현한 다음, 확장자를 tag로 지정하면 하나의 커스텀 태그가 작성된 것입니다. 이 .tag파일이 태그 핸들러 클래스 파일(.class)로 변환되어 동작합니다. 커스텀 태그와 .tag 파일이 하나씩 일대일로 매핑되는것입니다. 또한 .tag파일의 파일명이 jsp페이지에서 사용하는 커스텀 태그의 이름이됩니다. 태그 기반 커스텀 태그는 아래와 같은 절차로 사용합니다. 1. tag 파일을 작성합니다. 저장 위치는 /WEB-INF/tags 폴더 혹은 그 하위 폴더만 가능합니다. 2. jsp 페이지에서 커스텀 태그를 사용하기 위한 taglib 지시자를 선언합니다. 3. 태그 파일을 커스텀 태그로..
커스텀 태그 JSP1.2 버전과의 차이점은 아래와 같습니다. SimpleTag 인터페이스 추가 SimpleTagSupport 클래스 제공 doTag() 메소드로 태그 관련 메소드 통일 JspFragment를 이용한 body 전달 동적 Attribute 추가 방법 제공 기본 예제 net.aacii.customTag 패키지에 MyCustomTag2.java 파일을 생서합니다. package net.aacii.customTag; import java.io.IOException; import javax.servlet.jsp.JspException; import javax.servlet.jsp.tagext.SimpleTagSupport; public class MyCustomTag2 extends SimpleTa..
커스텀 태그 태그의 기능을 자바 클래스에서 구현한 다음 jsp 태그와 연결하여 사용할 수 있습니다. 클래스 기반 커스텀 태그를 사용하려면 아래와 같은 요소들이 필요합니다. 1. 태그 핸들러 클래스: 태그가 수행해야 하는 실행문을 구현한 클래스 2. 태그 라이브러리 디스크립터(TLD): xml파일로 확장자를 .tld 하여 클래스 파일과 커스텀 태그를 매칭 3. TLD파일 등록: jsp 컨테이너가 인식 할 수 있도록 web.xml이나 WEB-INF 폴더에 .tld 파일을 등록 4. taglib 지시자: jsp 페이지에서 커스텀 태그를 사용하기 위해서 taglib 지시자를 선언한 후 사용 태그 핸들러 클래스 javax.servlet.jsp.tagext 패키지에 태그 핸들러 클래스를 작성하기 위한 내용들이 있습..
EL 구문 ${ } 내에 표현식으로 작성합니다. JSP 2.0 부터 사용가능합니다. boolean변수, 숫자, 문자열, null 데이터 타입을 사용할 수 있습니다. JSP태그로 작업하는 기능은 EL구문으로 표현할 수 있습니다. ex18.jsp 문자: ${"Literals"} bool: ${5>3} 객체: ${header["host"]} EL 연산자 산술 연산자: + , - , * , / , %, mod 논리 연산자: &&, ||, !, and, or, not 비교 연산자: ==, !=, , =, eq, ne, lt, get, le, ge empty 연산자: 값이 null 이나 공백 문자인지 편단하는 연산자 ${empty "" } 혹은 ${empty null} EL 내장객체 jsp 내장 객체 처럼 선언하지..
서버 설치 및 세팅 CentOS 7 설치 CentOS 설치 vmware 가상 머신 생성 CentOS 소개 실무에서 많이 쓰는 리눅스 중에서 red hat 리눅스가 있습니다. 그 red hat 리눅스와 사실상 동일하다고 할수 있는 CentOS 운영체제라는 것이 있습니다. 그런데 red hat에 blog.aacii.net SSH 포트 변경 리눅스 SSH 포트 변경 보안을 위해 SSH 포트를 변경 할 수 있습니다. 1. 먼저 vi 에디터로 설정 파일을 편집합니다. #vi /etc/ssh/sshd_config 2. 주석제거 및 포트 변경 #Port 22 으로 되어 있는 부분을 주석 # 기호를 제거 한 후에 blog.aacii.net RSA 공개키/개인키로 Putty를 이용한 SSH 접속 RSA 공개키/개인키로 ..
jsp에서 커스텀 태그를 사용할 수도 있지만 표준 액션 태그는 jsp 컨테이너에서 기본적으로 제공하는 태그입니다. 서블릿의 RequestDispatcher 객체의 forward() 기능을 수행하는 태그입니다. example14.jsp request parameter인 ?p=example2.jsp 을 받아 example14.jps에서 example2.jsp으로 forward 합니다. ?p=test.jsp 으로 실행하면 test.jsp로 forward 하게 됩니다. 서블릿에서 RequestDispatcher 객체의 include() 메소드 기능을 실행합니다. 지시자 태그와 다른점은 지시자 태그는 컴파일 시 같이 포함되어 컴파일 되는 반면에 표준 액션태그인 는 실행시 포함되므로 동적으로 include 시킬 수..
내장 객체 서블릿에서는 변수, 메소드, 객체를 선언하고 초기화 한 후에 사용하지만 jsp에서는 내장되어 있는 객체들이 있어서 선언 및 초기화를 하지 않고 바로 사용할 수 있는 내장 객체들이 있습니다. 내장 객체들과 같은 이름으로 객체를 선언하려고 하면 오류가 발생합니다. request : HttpServletRequest 객체 response : HttpServletResponse 객체 session : HttpSession 객체 application : ServletContext 객체 config : ServletConfig 객체 out : JspWriter 객체(출력 처리) pageContext : PageContext 객체(jsp 페이지 처리 객체) request, response 객체 logInO..
JSP jsp는 템플릿코드(html 태그 등)와 서블릿 코드를 섞어서 같이 작성할 수있습니다. 컨테이너는 jsp를 해석해서 서블릿으로 변환 후 소스를 컴파일 합니다. 이러한 변환 작업은 최초 요청시 변환되고 이후 요청은 변환없이 이미 변환된 서블릿을 통해 수행됩니다. 예제 WebContent 경로에 우클릭 후 new->JSP file을 선택 후 example1.jsp로 생성합니다. Hello 태그는 지시자이며 page, include, taglib가 있고 페이지에 대한 정보를 설정합니다. 태그는 멤버 변수 혹은 메소드를 선언합니다. 태그는 서블릿(자바)으로 변환되어 서버측에서 수행됩니다. 태그는 out.print() 으로 변환되어 서블릿의 변수 값이 클라이언트(HTML)으로 전송되어 표기됩니다. 는 JS..
서블릿 오류 처리 오류를 처리할 페이지를 web.xml에 지정하면 오류가 발생하면 해당 페이지로 이동시킵니다. try-catch와 중복으로 설정한다면 try-catch문이 우선 처리 됩니다. try-catch문은 해당 블록만 오류를 처리하는 반면 web.xml은 웹 어플리케이션 전체에 대해 처리할 수 있습니다. web.xml에 태그가 설정되어 있을 때 나 에 지정한 오류가 발생하면 태그에 지정된 오류 페이지가 실행됩니다. web.xml에 다음과 같은 태그를 추가합니다. 404 /errorHandle java.lang.NullPointerException /errorHandle 이어서 오류를 처리할 errorHandle을 위해 ErrorHandleServlet.java를 작성합니다. package net...
리스너 리스너는 특정 이벤트가 발생했을 때 수행되는 메소드를 제공하는 객체입니다. 웹에서는 ServletContext와 HttpSession, HttpServletRequest 가 이벤트가 발생하는 곳입니다. 그래서 각각 이벤트를 처리할 수 있는 이벤트 리스너를 제공합니다. ServletContext는 서버 시작 시점, HttpSession은 클라이언트 접속시, 그리고 HttpServletRequest는 클라이언트가 서비스를 요청시를 의미합니다. 특정 이벤트가 발생했을 때 실행되기 원하는 내용을 해당 이벤트 핸들러 객체를 상속받아 구현한다음, 개발된 리스너를 WAS(컨테이너)가 인식 하도록 web.xml에 등록해주어야 합니다. HttpServletRequest 객체 생성/삭제 이벤트 리스너 구현 예제 T..
필터 필터는 서블릿 2.3부터 추가되었습니다. 서블릿이 실행되기 전과 후에 필터링 기능 및 추가 기능을 수행할 수 있습니다. 예를 들어 로그 기록이나 한글 처리 같은 기능을 추가 할 수 있습니다. 기존 예제에서는 일일이 서블릿에서 한글 처리를 지정해줬지만 필터에서 일괄적으로 설정할 수 있습니다. 또한 하나의 서블릿에 필터를 여러개 지정해줄 수 있습니다. 필터는 javax.servlet.Filter를 상속 받아서 구현합니다. init()는 필터 객체가 생성될 때 한 번 만 호출되는 메소드입니다. destroy()는 필터 객체가 제거될 때 한 번 만 호출되는 메소드입니다. doFilter()메소드는 필터의 내용을 구현하는 메소드로 web.xml에 필터링 설정한 서블릿이 실행될 때마다 호출됩니다. 예제로 Fl..
Redirect sendRedirect(String location) 메소드를 이용하여 새로운 location으로 request를 재지정 할 수 있습니다. WebContent 경로 아래에 site.html 파일을 작성합니다. 네이버 다음 줌 구글 작업중인 패키지 경로에 새 서블릿 SendRedirectTest.java를 생성합니다. package net.aacii.test; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServlet..
로그인 html 프로젝트의 WebContent 폴더 아래에 새 html 파일을 생성하고 이름을 login.html 으로 설정합니다. ID: PW: 로그아웃 로그인/로그아웃 서블릿 작업중인 패키지 경로에 새 서블릿 LoginOut.java 를 생성합니다. package net.aacii.test; 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; import j..