728x90
반응형

전체 글 882

스트럿츠를 사용하여 List 출력하기

이번에는 스트럿츠를 사용하여 List를 출력해 보자. 일단 Action 파일과 result 파일 정의를 struts.xml에 정의하면 다음과 같다. /chapter2/printStringList.jsp 위에서 정의한 대로 PrintStringListAction.java 파일을 example.chapter2 패키지에 만든다. package example.chapter2; import java.util.ArrayList; import java.util.List; public class PrintStringListAction { private List listString; public String execute() throws Exception { listString = new ArrayList(); list..

Java/Struts2 2009.05.06

스트럿츠2 설정하기

스트럿츠를 사용하기 위해 스트럿츠 환경을 구축할 필요가 있다. 우선은 이클립스에서 다음과 같이 'Dynamic Web Project'를 하나 생성한다. 그런 다음 위에서 볼 수 있는 것처럼 몇가지 내용을 추가해야 한다. 우선은 필요한 라이브러리를 추가해 보자. http://struts.apache.org/에서 해당 버전을 다운받는다. 현재 시점에서 가장 최신 버젼은 2.1.6이다.(http://struts.apache.org/download.cgi#struts216) 다운 받은 파일의 압축을 풀면 lib 디렉토리에 jar 파일들이 있는데, 그 중에서 필요한 jar 파일들을 추가한다. 추가해야 할 파일 목록은 다음과 같다. antlr-2.7.2.jar commons-beanutils-1.7.0.jar co..

Java/Struts2 2009.04.28

필터 - RESPONSE

필터를 통해 서블릿이 실행되기 전에 특정 액션을 하게 만들 수 있다고 했다. 그런데 서블릿이 실행되고 나서 특정 액션을 하게 만들려면 어떻게 해야 할까? 간단하게 생각해 보면 필터의 doFilter()메소드 안에 있는 chain.doFilter(request, response) 를 마치고 나서 작업하면 될 것 같다. 하지만, 서블릿에 넘겨주는 response 객체를 서블릿이 사용하게 되면, 필터를 거치지 않고 바로 클라이언트로 response 하게 된다. 따라서 doFilter를 통해 response를 넘길 때 새로운 응답 객체(HttpServletResponse를 구현한 객체)를 만들어 넘기는 방법을 써야 한다. 하지만, HttpServletResponse는 간단한 클래스가 아니므로, 썬에서 구현해 둔..

Java/Servlet & JSP 2009.04.28

필터 - REQUEST

모든 서블릿 앞단에서 공통적으로 처리해야 할 내용이 있을 경우 필터를 사용해서 해당 내용을 처리할 수 있다. 필터는 자신만의 고유 API가 있으며, 컨테이너가 이 API를 알고 호출해 준다. 해당 API는 init(), destroy(), doFilter()이다. 그리고 호출해야 할 필터는 DD(web.xml)에서 설정하게 된다. 하나의 예제로 필터를 만들어 보면 다음과 같이 할 수 있다.(Head & First 예제) BeerRequestFilter.java package com.example.web; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.F..

Java/Servlet & JSP 2009.04.16

슈퍼카들의 드래그 레이싱

슈퍼카들의 드래그 레이싱이라고 하네요. 나온 차종으로는 Audi R8, Ferrari F430, Lamborghini Gallardo LP560-4, Maserati GranTurismo, Mercedes-Benz SLR McLaren 총 5대 입니다. 뭐 결론은 Mercedes-Benz SLR McLaren이 1등을 합니다. 그냥 슈퍼카들의 드래그 레이싱이기 때문에 흥미가 있긴 하지만, 비교 자체가 약간은 잘못 된 듯 해서 조금 무의미 한것 같네요. 제원상으로만 살펴봐도 Mercedes-Benz SLR McLaren이 가장 앞섭니다. 네이버 자동차(http://auto.naver.com)에 나오는 기준으로 살펴보면 각 차량의 제원은 아래와 같습니다. Audi R8 - 420 hp, 43.9 kg.m F..

웹 애플리케이션 보안

보안을 위해서는 인증(Authentication), 인가(Authorization), 데이터 무결성(Data Integrity), 기밀성(Confidentiality)이 보장 되어야 한다. 인증이란 쉽게 말해 로그인을 통해 누구인지 서버(컨테이너)가 알 수 있도록 체크하는 단계이다. 인가는 인증된 사용자의 권한 레벨을 확인할 수 있도록 체크하는 단계이다. 데이터 무결성이란 클라이언트가 서버에 보낸 정보가 변경되지 않도록 하는 것이며, 기밀성이란 중간에 해당 데이터를 엿보지 못하도록 하는 것이다. 인증 및 인가 작업은 php에서도 많이 하는 작업이므로 그 의미에 대해서 별 다른 설명은 필요해 보이지 않는다. 자세한 설정 방법 및 사용 법은 아래 예제들을 통해 알 수 있다. 우선은 서버 자체에서 지원하는 인..

Java/Servlet & JSP 2009.04.10

썬 개발자 뉴스레터(SDN) 메일에 블로그 글이 실렸었네요.

그냥 정기적으로 보내주는 형식의 메일을 잘 확인 안해보는 습관이 있어서, 썬에서 보내주는 메일도 확인도 안해보고 넘기다가 오늘 우연치 않게 지메일을 확인하다 아래 내용을 발견 했네요. 별볼일 없는, 그냥 Head & First 책에 나오는 내용을 정리한 포스팅인데, 그 내용이 뉴스레터에 실리다니... 참으로 창피하네요 ^^;; 내용도 기초적인 내용이고 ㅎㅎ 이메일에 실린 포스트는 http://www.4te.co.kr/566 입니다. 나중에 고수가 된다면, 기초적인 내용이 아닌 정말로 유익한 정보를 블로그에 포스팅을 쓸수 있겠죠 ㅎ 하지만 이 놈의 귀차니즘 때문에 진도가 느려서 탈입니다. ㅎㅎ

MySQL Erro Code 28이 리턴되는 경우

작업 서버에서 잘 되던 쿼리가 에러가 떨어졌다. 에러 코드 내용... ERROR 1030 (HY000): Got error 28 from storage engine 1030 에러코드를 메뉴얼로 찾아보니 별다른 내용도 없고, 위 메시지랑 같은 이야기만... ^^;; Error: 1030 SQLSTATE: HY000 (ER_GET_ERRNO) Message: Got error %d from storage engine 그래서 사내 DBA분에게 물어보고 확인해 본 결과 28 에러코드는 다음과 같은 방법으로 찾는 것이라고 한다. [xxxxxx bin]# ./perror 28 OS error code 28: No space left on device mysql이 설치된 디렉토리의 bin 디렉토리에서 perror라는..

Server/DB 2009.04.08

푸조 207RC

몇 일전 출근하다가 푸조 207RC 모델을 봤는데, 참 보기 힘든 모델 보게 됬다란 생각을 가지게 되었습니다. 스키드 러쉬에서 주력 차종으로 쓰고 있는 모델인데... 차량 이미지는 아래처럼 생겼습니다. 3door 모델이고, 수동 기어만 수입되며, 달리기 성능이 207GT에 비해 뛰어나다는 정도는 이미 알고 있었고, 그래서 좀 덜 팔린 모델로서 레어 아이템이구나 란 생각은 하고 봤었습니다. 그런데 오늘 아방가르드님의 블로그를 통해서 207RC 모델이 7대 밖에 안팔렸다는 글을 보게 되었네요. ^^ (http://avantgarde.egloos.com/1690019 참조) 뭐 통계치가 2007년 통계 기준이니 지금은 훨씬(?) 더 많이 팔렸겠지만... ^^ 그래도 몇대 안팔린 차를 보게 되었다는 사실이 재밌..

웹 애플리케이션 배포하기

어떤 파일이 어느 곳에 위치하는지는 중요하다. php를 개발 할 때 프로그래머가 임의로 정하는 장소와는 달리 Java(JSP)는 어느정도 rule을 가지고 특정 위치에 특정 파일을 배포해야지만, 전체 웹 애플리케이션이 돌아가기 때문이다. 따라서 중요한 몇개의 파일 타입별 배포 위치에 대해 정리해 보면 아래와 같다. 정적인 컨텐츠(html, 이미지) 및 jsp 루트 디렉토리 및 그 하위 디렉토리 WEB-INF 밑에 배포 할 경우에는 클라이언트가 직접 접근할 수 없다. 대신 웹 애플리케이션에서 접근을 하게 만들 경우를 위해서 배포할 순 있다. 태그파일(.tag) - http://www.4te.co.kr/567 참고 WEB-INF/tags 디렉토리에 배포 DD 파일 이름은 web.xml이어야 하며 WEB-IN..

Java/Servlet & JSP 2009.04.07

부모 자식 태그간의 통신

커스텀 태그 안에 커스텀 태그가 위치해 있을 경우 서로간에 필요한 속성이라던가 내용 등을 읽어올 필요가 있다. 이럴 경우에는 다음과 같은 방법으로 접근할 수 있다. myCustomTag3.tld 0.1 Nested NestedLevel Check NestedLevel com.example.tag.NestedLevelTag JSP NestedLevelTag.java package com.example.tag; import java.io.IOException; import javax.servlet.jsp.JspException; import javax.servlet.jsp.tagext.Tag; import javax.servlet.jsp.tagext.TagSupport; public class NestedL..

Java/Servlet & JSP 2009.03.26

클래식 커스텀 태그

JSP2.0 이전 버젼에서의 커스텀 태그는 심플 방식이 아닌 클래식 방식을 사용한다. simple 방식에서는 doTag() 메소드 하나로 모든 작업을 하고, exception 처리도 JspException, IOException를 throw 해서 catch 블럭이 없지만, 클래식 방식에는 doStartTag(), doEndTag() 메소드를 사용하며, JspException만을 throw 해서 catch 블럭에서 IOException을 잡을 필요가 있다. 간단하게 아래 예제를 통해 알아보자 tld 파일 0.9 KathyClassicTags ludicrous use of a Classic tag classicOne com.example.tag.Classic1 empty com.example.tag.Clas..

Java/Servlet & JSP 2009.03.26

사용자 정의 태그 개발 (1)

표준 액션 또는 JSTl과 같은 기능을 하는 태그 파일을 만들어 보자. 위와 같이 코딩 한 후 WEB-INF 아래 tags란 디렉토리를 만들어 Header.tag 파일로 저장한다. 그리고 난 후 우리가 url에 호출할 파일을 만들어 보자. Welcome to our site. 위와 같이 만든 다음 DocumentRoot 아래 customTag란 디렉토리 안에 customTag.jsp란 파일로 만들었다. 브라우져에 http://localhost:8080/customTag/customTag.jsp를 호출하면 아래와 같은 모습이 보여진다. 위에서 라고 사용한 부분을 보면 파일명이 바로 Tag 명이 된 것을 알 수 있다. 또한 표준액션에서 param을 사용한 것처럼 사용할 수 있다. customTag.jsp H..

Java/Servlet & JSP 2009.03.23

커스텀 태그 사용하기

사용자 정의 태그를 만들어서 사용할 수 있다. 사용 방법은 EL에서 함수를 만드는 방법과 유사하나 조금 더 복잡한 부면이 있다. 커스텀 태그를 만들기 위해서는 tld 파일과 java class 파일이 필요하다. 예제로 유저에게 랜덤하게 조언을 해 주는 커스텀 태그 소스를 보면 이해하는데 도움이 된다.(소스는 역시 Head & First Servelet & JSP에서 사용된 것이다.) 우선 tld 파일은 EL과 마찬가지로 WEB-INF 밑에 작성한다. 이름은 myCustomTag.tld로 한다. 0.9 RandomTags rollIt com.example.DiceRoller int rollDice() randomThings random advice advice com.example.AdvisorTagHan..

Java/Servlet & JSP 2009.03.17

JSTL 사용하기 (2)

클라이언트의 브라우져에서 쿠키 사용을 제한 하고 있을 경우 jsessionid를 추가하여 url로 세션 정보를 공유하는 방법은 이미 서블릿에서 살펴 봤다. jstl에서도 이와 같은 방법을 사용할 수 있다. 서블릿 response.encodeURL("/BeerTest.do"); jstl 위와 같이 하게 되면 url 뒤에 jsessionid를 덧 붙여서 사용하게 된다. 하지만 urlencoding을 자동으로 하지는 않게 된다. urlencoding을 하게 하려면 아래와 같은 방법을 사용해야 한다. 위와 같이 하게 되면 last, first에 설정 된 값에 있는 공백과 같은 값이 인코딩 되어 사용 된다. * 오류 페이지 만들기 오류 메시지를 그대로 보여주지 않고 디자인 된 페이지를 보여주려면, 예외 사항이 발..

Java/Servlet & JSP 2009.03.16

JSTL 사용하기 (1)

jsp에서 스크립팅을 사용하지 않고 루프를 돌리거나 조건문을 실행하는 방법으로 사용하는 것이 JSTL이다. JSTL을 사용하기 위해서는 다음과 같은 방법으로 설정을 해 줘야 한다. apache-tomcat-6.0.18\webapps\examples\WEB-INF\lib 에 있는 jstl.jar 파일과 standard.jar 파일을 WebContent/WEB-INF/lib 밑으로 copy 한다. 위와 같이 하게 되면 jstl을 사용할 수 있다. jstl을 사용할 수 있게 됬으므로 forEach 문을 돌려보자. 사용 방법은 php에서 사용하는 foreach 문과 별로 다를 바가 없다. web.xml jstlTest com.example.jstlTest jstlTest /Jstl 서블릿 코드 package c..

Java/Servlet & JSP 2009.03.12

지난 주 양평 쪽으로 플레이샵 가다가 애스턴 마틴 뱅퀴시를 봤습니다.

애스턴마틴 뱅퀴시 v12 봤습니다. 제가 차 보는 눈은 정확해서 DB9인지 뱅퀴시인지 정확히 구분 할 수 있는데 확실히 뱅퀴시 맞더군요... 요 차... 그래서 얼마나 하나 확인해 볼려고 http://auto.naver.com/brand/list.nhn?ctype=company&company_id=3827에 들어가 봤더니 DB9이 최고레벨... 그 이상은 가격도 안나와 있네요. DB9이 172,000 달러 정도... 한화로 2억 6천 정도니... 뱅퀴시 같은 경우는 적어도 3, 4억은 호가 할 듯... ㄷㄷㄷ 사진이나 한방 찍어올걸 그랬습니다. 아 뱅퀴시 본 장소는 미사리 지나서 팔당대교 타기 전 무슨 유명한 국수집이였는데... 참 눈만 호강 했네요... ㅋ 덧. 뱅퀴시에 대해서 http://blog.d..

인생이야기 2009.03.11

네이버 지도 서비스에 실시간 교통 정보가 포함...

네이버 지도 서비스에 실시간 교통 정보가 표시된다는 기사를 보고 한번 테스트를 해 보았다. 간단한 기능 테스트와 스샷을 아래 표시한다. 4일 현재 http://map.naver.com을 들어가면 위와 같은 이미지로 새롭게 update 된 내용을 알리는 간단한 공지사항이 하나 뜬다. 관심이 가는 부분은 실시간 교통정보 표시와 실시간 교통정보를 참조하여 빠른길을 찾아 준다는 점이다. 해당 내용을 한번 확인해 보고자 실제로 확인해 보았다. 현재 ip를 기초로 자신위 위치한 곳을 보여준다. 회사에서 확인해 봤으므로 정자역을 중심으로 보여준다. 물론 ip로 정확한 지역을 알 수 없는 경우에는 적용이 안되는 것으로 안다. 오른쪽 상단에 있는 '실시간교통' 이라는 버튼을 누르니 위와 같은 모습이 표시된다. 정자 역 ..

iDStick 초대장 나눠 드립니다.

어떻게 해서 iDStick 초대를 받게 되었는데, 가입하게 되니 최초 5장의 초대장이 생기게 되네요. 한장은 이미 다른 분께 초대해 드렸고, 4장 현재 남아 있습니다. 자세한 설명은 요길 보시고 사용 예는 제 블로그 아래에 나와 있는 아래와 같은 이미지를 참고해 보시면 됩니다. 아래 댓글로 초대 받으실 이메일을 비밀글로 달아 주세요. ^^ 순서대로 초대해 드리겠습니다.

Etc 2009.02.19

템플릿 형태로 JSP 사용하기

템플릿 형태로 모듈화 해서 jsp를 사용하기 위해서는 include를 사용하면 된다. include를 사용하는 형식은 "include 지시자"와 "include 표준 액션"을 사용할 수 있다. include 지시자를 사용하여 코딩하는 예제는 다음과 같다. include 표준 액션은 다음과 같이 사용한다. 지시자를 사용한 include일 경우에는 변환시에, include 표준액션은 실행시에 Header.jsp파일을 실행한다. 만일 Header.jsp 파일에서 동적인 내용을 포함할 페이지로부터 받아야 한다면 다음과 같이 사용할 수 있다. Header.jsp ${param.subTitle} 변수를 미리 선언해 두고 Header.jsp 파일에서 사용하는 방법이 아닌 param 태그를 사용하여 변수를 넘길 수 있..

Java/Servlet & JSP 2009.02.16

EL 함수 사용하기

EL 표현에서도 함수(메소드)를 사용할 수 있다. EL에서 메소드를 사용하기 위해서는 다음과 같은 순서를 따라 작성해야 한다. 1. 정적인 공용 메소드를 제공하는 클래스를 만든다. 해당 메소드는 EL(JSP)에서 사용할 메소드이므로 반드시 정적인 공용 메소드여야 하며, 리턴 타입이 있어야 한다. 그래야지 JSP에서 브라우져에 내용을 그릴 수 있다. 2. 태그 라이브러리 서술자 파일을 만든다. EL 함수를 사용하기 위해서는 TLD(Tag Library Descriptor)란 파일로 자바 클래스, 메소드와 EL에서 호출할 메소드 명을 맵핑해야 한다. 3. JSP에 taglib 지시자를 코딩한다. 4. 함수를 호출하는 EL을 작성한다. 위 형식대로 EL을 작성해 보면 아래 처럼 작성할 수 있다. * DiceR..

Java/Servlet & JSP 2009.02.13

EL 사용하기

프로퍼티의 프로퍼티를 스크립틀릿이나 표준액션으로만 표현하기가 어렵거나 아예 불가능한 경우가 있다. 즉 다음과 같은 서블릿 코드를 스크립틀릿이나 표준액션으로 표현하려고 하면 다음과 같이 표현할 수 밖에 없을 것이다. public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { foo.Person p = new foo.Person(); p.setName("Evan"); foo.Dog dog = new foo.Dog(); dog.setName("spike"); p.setDog(dog); request.setAttribute("person", p); RequestDi..

Java/Servlet & JSP 2009.02.12

표준 액션을 사용한 JSP

"자바 빈을 이용해서 특정 객체의 값을 가져와 보여주는 소스는 아래와 같은 형식으로 jsp에서 사용할 수 있다. Person is : jsp내에서 스크립틀릿을 없애기 위해 나온 것이 표준 액션이므로 스크립틀릿을 없애는 방법으로 표현하자면 아래와 같이 할 수 있다. Person created by servlet : 위에서 id로 지정한 것을 아래 getProperty에서 name으로 가져다 쓸 수 있다. property의 name은 자바빈의 getter, setter에서 사용하는 값이다. 즉 name은 getName()과 같은 기능을 하게 되는 것이다. class는 패키지 명까지 다 써야한다. getProperty가 있다면 당연히 setProperty도 있다. setProperty는 다음과 같이 사용할 수..

Java/Servlet & JSP 2009.02.11

오늘 하루의 시작이...

왠지 이상하군요... 아침에 버스 뒷좌석 가운데 앉고 좌우 창가로 학생 둘이 앉아 있었는데, 왠 동네 양아치 같은 사람이 오더니 내 좌측에 앉는 겁니다. 5명이 앉는 자리에 내 좌측에 2명, 우측에 한명 앉으니 총 4명이 앉았는데 이 양아치 같은놈이 한다는 소리가 형씨 좀 넓게 앉읍시다 라고 하더만요 -.-;; 뭐 양아치랑 말싸움 해 봐야 득될것도 없고 그냥 넓게 앉아서 4명이서 앉아 갔습니다. 그놈의 양아치는 아주 다리를 쭥 벌려서 건드릴려면 건드려 봐라는 식으로 굴더군요 -.-;; 우째든 중간쯤 가다 보니 어떤 아주머니가 와서 그 좁은 좌석에 가운데 앉겠다고 좀 비켜 달라네요 -.-;; 뭐 어쩔 수 없이 이번에는 오른쪽으로 붙었습니다. 저와 그 양아치 사이에 아주머니가 앉게 된 것이죠. 아주머니 양아..

인생이야기 2009.02.11

JSP 초기화 하기

ServletConfig를 web.xml에 정의해 두고 나서 서블릿에서 가져다 쓰는 방법에 대해 http://www.4te.co.kr/540 에서 다루었었다. JSP에서도 마찬가지로 초기화를 통해서 web.xml에 있는 ServletConfig를 변수처럼 사용할 수 있다. 방법은 서블릿 생명 주기에서 가장 처음에 한번만 호출하는 메소드인 jspInit() 메소드를 오버라이드 해서 사용하면 되는 것이다. 사용 방법은 아래와 같다. MyTestInit /TestInit.jsp email ikickedbutt@wickedlysmart.com MyTestInit /TestInit.jsp 위와 같이 설정을 하면 된다. 다만 servlet-class가 아니라 jsp-file 이라는 태그를 사용하게 되며, 패키지 형..

Java/Servlet & JSP 2009.02.10

배틀 하다가 다리 아래로 떨어졌네요 ^^;;

다리에서 밀려 떨어지는 중... 첨에는 물로 떨어지다가 결국엔 잔디밭(?)이 나오는 군요 ^^;; 앞서가는 차량을 멀리서 멍 하니 처다 보기만 할 뿐 -.-;;;;;;; 아무 생각없이 앞으로 달려가니 다시 도로 위로 올라가네요. 그나 저나 너무나도 차량 스펙이 좋고, 잘 달리는 사람들이 많아서 배틀 하기가 여간 힘든게 아니네요 ㅎ

스크립틀릿에서 변수 선언하기

다음과 같이 jsp를 작성해서 방문자의 숫자를 세어 보는 코드를 만들 생각을 할 수 있다. The page count is now: 이렇게 하게 되면 화면에 "The page count is now:1" 이라는 메시지가 찍힐 것이다. 하짐나 브라우져를 리프레쉬 하게 되면 count가 2가 되는 것이 아니라 여전히 1이 된다. 왜냐면 위에서 선언한 count란 변수는 지역 변수로 작용하기 때문이다. 즉 jsp는 서블릿으로 변하면서 그 모든 코드가 _jspService 메소드 안에 작성 되는데 count란 변수 역시 _jspService 메소드 안에서 정의 된다는 뜻이다. jsp 코드가 서블릿으로 변환 되게 된다면 아래와 같은 코드를 가지게 될 것이다. public void _jspService(HttpSe..

Java/Servlet & JSP 2009.02.04

랩타임 성적이 많이 좋아 졌네요

위 이미지는 작년 7월 쯤에 8등급 차 타이거와 스피릿으로 달린 경우인데 둘다 잘 달렸다고 생각 했는데도 50초대 나왔던 기록입니다. 가장 최근에 같은 맵에서 달린 기록은 아래 스샷과 같습니다. 차도 9등급 MPM7으로 바뀌고 귀속이랑 기타 km 옵션 달린 파츠, 부스터 옵션 달린 파츠 등을 끼고 달린 거지만 어째든 20초 정도 향상된 기록을 세우고 있네요. 위 스샷에서 최고 기록인 94Lv 차량이 세운 기록보다도 빠르네요 ㅋㅋ 물론 그때보다도 현재 많은 분들의 차량 성능이 많이 증가했겠지만 어째든 80대 랩에서 저정도 기록이 나온다는 것을 보아 기분이 좋습니다. 그나 저나 얼른 80파츠 득, 귀속 1등 득해야 할텐데요 ㅎㅎ

728x90
반응형