목록전체 글 (323)
삶 가운데 남긴 기록 AACII.TISTORY.COM
내장 객체 서블릿에서는 변수, 메소드, 객체를 선언하고 초기화 한 후에 사용하지만 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..
장거리 남만 교역하면서 공예로 관리기술 랭작(항해하면서 생산시 대성공) 하는 방법을 포스팅 해보겠습니다. 준비물: 공예3~12랭크, 다량의 행동력 회복 음식 or 헤파이토스 가호, 각종 발주서, 주조비법서(함부르크 도구점 주인), 장인의 교습서(간디아 투자보상), 숙련장인의 교습서(야파 투자보상), 석공에 관한책(상투메 투자보상), 공작실 달린 배있으면 좋고 없어도 그만 공예3(주조비법서): 건포도1(보르도 교역소 구입) -> 와인 생산(1~2) -> 일본 (관리기술 랭크가 낮을 때 강력 추천, 점점 와인 개수가 늘어나서 동아시아 가는 동안 적재를 와인으로 꽉 채울 수 있음) 공예5(장인의 교습서): 종이2(런던, 마르세유, 베이루트에서 구입) -> 서양서적 생산(1~2) -> 대만(관리기술 랭크가 낮을..
대항해시대 온라인의 생산 랭크 를 올리년 요령은 레시피에서 자신의 랭크에 맞는 생산품을 생산하는 것입니다. 유용한 생산품은 강조 처리 했습니다. 공예 부스터를 장착하시면 랭크를 빠르게 올리실 수 있습니다. 레시피: 조선공입문 공예편( 앤트워프, 그로닝겐, 포르투, 말라가 등에서 구입) 1랭크 : 통나무(아조레스, 라스팔마스) -> 갑판 청소용 브러쉬, 구명도구 레시피: 주조비법서(함부르크에서 구입) 2랭크: 밀(세비야, 낭트, 포르투, 엔트워프 등) -> 맥주 3랭크: 건포도(보르도,르아브르) -> 와인(일본에서 거래) 3랭크: 밀 -> 아콰비트 4랭크: 와인(보르도) -> 브랜디 5랭크: 밀 -> 위스키 레시피: 조미료 대전(팔마 도구점) 2랭크: 올리브(발렌시아, 팔마, 튀니스, 카사블랑카, 시라쿠사..
필터 필터는 서블릿 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..
web.xml 서블릿 실행에 관한 정보를 설정할 때는 web.xml의 태그로 설정합니다. web.xml은 WAS(톰캣)을 시작할 때 WAS가 읽어들이는 정보입니다. web.xml의 태그 안쪽에 아래의 태그와 태그의 내용을 추가합니다. initParam net.aacii.test.InitParamServlet id guest password 1234 1 initParam /initParamTest 태그는 설정하려는 서블릿을 지정해줍니다. 태그는 서블릿에 변수를 전달할 때 사용합니다. 서블릿에서 직접 변수를 입력할 수도 있지만 수정할 때 다시 컴파일 하고 다시 deploy 해야 하지만 web.xml에 변수를 설정해주면 WAS의 재시작 만으로 설정된 변수값들을 사용할 수 있습니다. 일반적으로 서블릿 객체가 메..
질의 문자열 질의 문자열은 브라우저 주소창에 서버로 전송할 parameter들을 문자열로 표현한 것입니다. 질의 문자열은 아래와 같은 규칙이 있습니다. 1. ?name=value 형식으로 전달하며 여러개를 전달할때는 &기호를 구분자로 사용합니다. 예) ?id=guest&name=BTS 2. 영문자 숫자 일부 특수문자는 그대로 전송되지만 한글등 나머지 문자는 %기호와 함께 16진수로 바뀌어 전달됩니다. 예)?id=guest&name=%C8%AB%FF%00 3. 공백 문자는 + 기호로 전달합니다. HTML 태그 태그는 서버로 전송할 질의 문자열을 입력할 수 있도록 할 수 있습니다. GET방식과 POST방식으로 질의 문자열 전송 방식(method)를 결정할 수 있습니다. GET방식은 255 바이트 미만의 데이..
자바 웹 어플리케이션은 브라우저에서 아래 처럼 접근 할 수 있습니다. 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..