목록Java (90)
삶 가운데 남긴 기록 AACII.TISTORY.COM
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 공개키/개인키로 ..
자바 빈즈(JavaBeans)자바에서 "Bean"이라고 하면 주로 JavaBeans 스펙을 준수하는 클래스를 가리킵니다.이 스펙 규약을 따르는 클래스는 재사용 가능한 소프트웨어 컴포넌트로 간주될 수 있습니다.주로 데이터를 담는 목적(DTO/VO)이나 UI 컴포넌트를 생성할 때 사용되었습니다.JavaBeans의 주요 규약:직렬화 가능: java.io.Serializable 인터페이스를 구현해야 합니다.기본 생성자: 인자 없는(기본) 생성자를 가지고 있어야 합니다.프로퍼티 접근(Getter/Setter):멤버 변수(프로퍼티)는 보통 private으로 선언합니다.프로퍼티 값을 읽기 위해서는 get[PropertyName]() 또는 is[PropertyName]()(boolean 타입의 경우) 메서드를 사용합니..
내장 객체 서블릿에서는 변수, 메소드, 객체를 선언하고 초기화 한 후에 사용하지만 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..
세션은 클라이언트 마다 개별적으로 생성되어 클라이언트의 브라우저를 종료할 때까지 서버쪽에서 그 객체(정보)를 유지합니다. HttpSession 생성 HttpSession객체는 개발자가 수동으로 생성하는게 아니라 HttpServletRequest의 getSession() 메서드를 이용해서 객체를 획득합니다. 새 서블릿 SessionTest.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.HttpSe..
쿠키(Cookie) 클라이언트 단위로 상태정보를 유지해야 할 때 쿠키를 사용합니다. 예를들어 로그인 후 로그아웃 할 때까지 인증 상태를 유지 한다던지, 쇼핑몰 장바구니에 선택한 상품 정보들을 유지 한다던지 같은 유지 정보들을 관리합니다. 쿠키는 텍스트로 name=value 형태로 저장하며 만료 일자나 시간을 지정할 수 있습니다. 쿠키 저장(전송) 작업중인 패키지에 클래스 CookieTest.java를 생성합니다. package net.aacii.test; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; im..
ServletContext 서블릿 컨텍스트는 서버 쪽에서 웹 어플리케이션 단위로 값(정보)를 유지하는 방법입니다. 서블릿 컨테이너가 시작될 때 ServletContext 객체가 자동으로 생성되어 웹 어플리케이션이 종료될 때까지 계속 유지 합니다. init() 메소드를 재정의하여 추출 작업중인 패키지에서 class 파일을 하나 생성하고 이름을 ServletContextTest.java로 만들고 아래처럼 작성합니다. package net.aacii.test; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletConfig; import javax.servlet.ServletContext; import javax..
자바 웹 어플리케이션은 브라우저에서 아래 처럼 접근 할 수 있습니다. http://서버주소:포트번호/웹어플리케이션이름/서블릿orJSP 서블릿 경로(build path) 프로젝트 이름을 우클릭하고 Build Path -> Configure Build Path 를 선택합니다. 여기 source 탭에 아래 부분에 Default output folder: 항목에 Browse... 버튼을 클릭합니다. 폴더 목록에서 jsp> WebContent > WEB-INF 폴더를 선택한 후 Create New Folder를 선택합니다. 그러면 자바 소스 파일들이 컴파일 후에 방금 지정한 WEB-INF/classes 에 생성되는 것입니다. 서블릿 작성(package 경로: net.aacii.test) src 경로에 net.aa..
REST Client REST API를 이용하여 서버가 리소스를 제공하는 경우 클라이언트 측에서 리소스를 받기 위해 REST Client API가 필요합니다. 그중 하나인 OkHttp 라이브러리를 이용해 JAVA용 REST Client를 구현하는 예제를 소개합니다. OkHttp OkHttp는 Square 에서 만든 간편하게 REST API나 http기반의 요청 응답을 처리할 수 있는 라이브러리입니다. 오픈소스로 공개된 소프트웨어입니다. https://github.com/square/okhttp GitHub - square/okhttp: Square’s meticulous HTTP client for the JVM, Android, and GraalVM. Square’s meticulous HTTP cli..