내용으로 건너뛰기
권남
사용자 도구
로그인
사이트 도구
검색
도구
문서 보기
이전 판
역링크
최근 바뀜
미디어 관리자
사이트맵
로그인
>
최근 바뀜
미디어 관리자
사이트맵
추적:
•
cache
•
ctrlp
•
crac
groovy:groovlet
이 문서는 읽기 전용입니다. 원본을 볼 수는 있지만 바꿀 수는 없습니다. 문제가 있다고 생각하면 관리자에게 문의하세요.
====== Groovlet ====== * [[http://groovy.codehaus.org/Groovlets|Groovlets]] Groovy로 만드는 서블릿 ===== 설정 ===== <code xml> <servlet> <servlet-name>Groovy</servlet-name> <servlet-class>groovy.servlet.GroovyServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>Groovy</servlet-name> <url-pattern>*.groovy</url-pattern> </servlet-mapping> </code> * 서블릿 ''*.groovy'' 파일 경로 : ''webapps/*'' 혹은 ''webapps/WEB-INF/groovy/*'' 다중 디렉토리 구조 가능. 호출은 해당 위치 기준으로 웹브라우저에서 ''/directory/filename.groovy'' 형태로 한다. * ''/WEB-INF/lib''에 groovy-all-*.jar 를 넣어두어야 한다. * 기타 groovy 라이브러리성 파일들은 ''webapps/WEB-INF/classes'' 에 패키지 구조 그대로 넣으면 된다. ===== 기본 내장 객체 목록 ===== 아래 Groovlet 코드로 Groovlet에 전달되는 기본 내장 객체 목록을 뽑을 수 있다. 이 내장 객체들은 JSP의 내장 객체들(session, application, request, response, out 등)과 사실상 이름도 동일하고 역할도 같다. 그외에 forward, redirect, include 같은 편리 메소드를 클로저로 내장하고 있다. ''forward("/somepage")'' 형태로 호출 가능. <code groovy> html.html { head { title '그루블릿 데모' } body { h1 'Binding에 있는 변수들' table(summary: 'binding') { tbody { binding.variables.each { key, value -> tr { td key.toString() td(value ? value.toString() : 'null') } } } } } } </code> * contextPath : ''context.contextPath'' ===== session ===== 세션 사용시 주의해야 한다. session 내장 객체가 null 일수 있기 때문이다. <code groovy> if (!session) { session = request.getSession(true); } if (!session.counter) { session.counter = 1 } </code> ====== TemplateServlet ====== * Groovlet을 컨트롤러로 사용하고, [[http://groovy.codehaus.org/api/groovy/servlet/TemplateServlet.htmlTemplateServlet]]을 통해 [[http://groovy.codehaus.org/Groovy+Templates|Groovy Template]]을 뷰로 사용할 수 있다. * TemplateServlet가 생성하는 템플릿은 그 자체가 Groovlet이다. 따라서 템플릿 안에서 모든 컨트롤러 코드와 뷰 코드를 모두 작성하는 것도 가능하다. 즉, JSP와 동일한 역할을 한다. ===== 설정 ===== <code xml> <servlet> <servlet-name>template</servlet-name> <servlet-class>groovy.servlet.TemplateServlet</servlet-class> <init-param> <param-name>groovy.source.encoding</param-name> <param-value>UTF-8</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>template</servlet-name> <url-pattern>*.html</url-pattern> </servlet-mapping> </code> ===== 호출 ===== 기본적으로 ''*.html'' 파일을 호출하면 자동으로 해당 파일을 Groovy Template으로 읽고 해석해서 뿌려준다. Groovlet과 연동할 경우에는 Groovlet의 request에 attribute로 값을 담아서 xx.html로 포워딩을 해주면 된다. <code groovy> // in Groovlet request.goal = "goal에 대한 값" request.guess = "guess에 대한 값" forward('/test.html') // in test.html Template 이런 저런 문자열 $request.goal 형태로 사용한다. </code> * ''<% 코드 %>'' : 코드 수행 * ''<%= 평가시 %>'' : 평가결과를 출력 * ''<% out << 평가식 %>'' : 평가결과 출력 * ''$평가식'' : 평가 결과 출력 ===== 사용자 정의 내장 객체 넣기 ===== GroovyServlet과 TemplateServlet을 상속받아서 [[http://groovy.codehaus.org/api/groovy/servlet/AbstractHttpServlet.html#setVariables%28groovy.servlet.ServletBinding%29|protected void setVariables()]] 를 Override한 뒤에 ServetletBinding 객체에 자신이 원하는 객체를 더 넣어주면 Groovlet과 Template에서 내장 객체로 사용할 수 있다. web.xml 에서 servlet-mapping 등록은 자신이 만든 클래스로 변경해줘야 한다. <code java> public class LogViewerTemplateServlet extends TemplateServlet { private static final long serialVersionUID = 1L; @Override protected void setVariables(ServletBinding binding) { HttpServletRequest request = (HttpServletRequest)binding.getVariable("request"); HttpServletResponse response = (HttpServletResponse)binding.getVariable("response"); ServletContext context = (ServletContext)binding.getVariable("context"); binding.setVariable("ht", new HtmlTools(context, request, response)); } } </code>
groovy/groovlet.txt
· 마지막으로 수정됨: 2012/09/07 11:10 저자
kwon37xi
문서 도구
문서 보기
이전 판
역링크
맨 위로