슬라이드 1

Size: px
Start display at page:

Download "슬라이드 1"

Transcription

1 전자정부개발프레임워크실행환경 2009 년 6 월 - 1 -

2 1. 개요 2. MVC 3. Internationalization 4. Ajax Support 5. Security 6. UI Adaptor - 2 -

3 1. 개요 - 실행환경화면처리레이어 (1/3) 화면처리레이어는업무프로그램과사용자간의 Interface 를담당하는 Layer 로서, 사용자화면구 성, 사용자입력정보검증등의기능을제공함 전자정부개발프레임워크실행환경 서비스그룹 Presentation Layer 설명 업무프로그램과사용자간의 Interface 를담당하는 Layer 로서, 사용자화면구성, 사용자입력정보검증등의기능을제공함 Layer Presentation Layer Logic Business Layer Persistence Integration Layer Business Logic Layer 업무프로그램의업무로직을담당하는 Layer 로서, 업무흐름제어, 에러처리등의기능을제공함 Persistence Layer 데이터베이스에대한연결및영속성처리, 선언적인트랜잭션관리를제공하는 Layer 임 Foundation Layer ( 공통기반레이어 ) Integration Layer 타시스템과의연동기능을제공하는 Layer 임 환경 서비스그룹 Foundation Layer ( 공통기반레이어 ) 실행환경의각 Layer 에서공통적으로사용하는공통기능을제공함 - 3 -

4 1. 개요 - 실행환경화면처리레이어 (2/3) 화면처리레이어는 MVC, Ajax Support 등총 5 개의서비스를제공함 실행환경 화면처리레이어 업무처리레이어 데이터처리레이어 연계통합레이어 MVC Internationalization Process Control DataSource Data Access Naming Service Ajax Support Security Exception Handling ORM TBD Transaction Integration Service UI Adaptor Web Service 공통기반레이어 AOP Cache Compress/Decompress Encryption/Decryption Excel File Handling File Upload/Download FTP Server Security ID Generation IoC Container Logging Mail Marshalling/Unmarshalling Object Pooling Property Resource Scheduling String Util XML Manipulation 실행환경서비스그룹서비스 - 4 -

5 1. 개요 - 실행환경화면처리레이어 화면처리레이어는 Spring MVC, Ajax Tags 등총 3 종의오픈소스 SW 를사용하고있음 서비스 오픈소스 SW 버전 MVC Spring 2.5 Ajax Support Ajax Tags 1.5 Internationalization Spring 2.5 Security Apache Commons Validator

6 2. MVC - 개요 (1/2) 서비스개요 MVC(Model-View-Controller) 패턴은코드를기능에따라 Model, View, Controller 3가지요소로분리한다. Model : 어플리케이션의데이터와비지니스로직을담는객체이다. View : Model의정보를사용자에게표시한다. 하나의 Model을다양한 View에서사용할수있다. Controller : Model과 View의중계역활을한다. 사용자의요청을받아 Model에변경된상태를반영하고, 응답을위한 View를선택한다. MVC 패턴은 UI 코드와비지니스코드를분리함으로써종속성을줄이고, 재사용성을높이고, 보다쉬운변경이가능하도록한다. MVC 패턴이 Web Framework에만사용되는단어는아니지만, 전자정부프레임워크에서 MVC 서비스 란 MVC 패턴을활용한 Web MVC Framework를의미한다

7 2. MVC - 개요 (1/2) 오픈소스 Web MVC Framework Spring MVC, Struts, Webwork 등이있다. 전자정부프레임워크에서는 Spring MVC를체택하였다. Framework내의특정클래스를상속하거나, 참조, 구현해야하는등의제약사항이비교적적다. IOC Contatiner가 Spring 이라면연계를위한추가설정없이 Spring MVC를사용할수있다. 오픈소스프로젝트가활성화 ( 꾸준한기능추가, 빠른 bug fix와 Q&A) 되어있으며로드맵이신뢰할만하다. 국내커뮤니티활성화정도, 관련참고문서나도서를쉽게구할수있다. Spring MVC DispatcherServlet, HandlerMapping, Controller, Interceptor, ViewResolver, View등각컴포넌트들의역할이명확하게분리된다. HandlerMapping, Controller, View등컴포넌트들에다양한인터페이스및구현클래스를제공한다. Controller(@MVC) 나폼클래스 ( 커맨드클래스 ) 작성시에특정클래스를상속받거나참조할필요없이 POJO 나 POJO-style 의클래스를작성함으로써비지니스로직에집중한코드를작성할수있다. 웹요청파라미터와커맨드클래스간에데이터매핑기능을제공한다. 데이터검증을할수있는, Validator와 Error 처리기능을제공한다. JSP Form을쉽게구성하도록 Tag를제공한다

8 2. MVC - Spring MVC Architecture(1/2) Spring MVC의핵심 Component DispatcherServlet Spring MVC Framework 의 Front Controller, 웹요청과응답의 Life Cycle 을주관한다. HandlerMapping 웹요청시해당 URL 을어떤 Controller 가처리할지결정한다. Controller 비지니스로직을수행하고결과데이터를 ModelAndView 에반영한다. ModelAndView Controller 가수행결과를반영하는 Model 데이터객체와이동할페이지정보 ( 또는 View 객체 ) 로이루어져있다. ViewResolver 어떤 View 를선택할지결정한다. View 결과데이터인 Model 객체를 display 한다

9 2. MVC - Spring MVC Architecture(2/2) Spring MVC 컴포넌트간의관계와흐름 Client의요청이들어오면 DispatchServlet이가장먼저요청을받는다. HandlerMapping이요청에해당하는 Controller를 return한다. Controller는비지니스로직을수행 ( 호출 ) 하고결과데이터를 ModelAndView에반영하여 return한다. ViewResolver는 view name을받아해당하는 View 객체를 return한다. View는 Model 객체를받아 rendering한다

10 Spring MVC 컴포넌트간의관계와흐름 HandlerMapping 이요청에해당하는 Controller 를 return 한다. Client 의요청이들어오면 DispatchServlet 이가장먼저요청을받는다. Controller 는비지니스로직을수행 ( 호출 ) 하고결과데이터를 ModelAndView 에반영하여 return 한다 View 는 Model 객체를받아 rendering 한다. ViewResolver 는 view name 을받아해당하는 View 객체를 return 한다

11 2. MVC - DispatcherServlet(1/3) DispatcherServlet Controller 로향하는모든웹요청의진입점이며, 웹요청을처리하며, 결과데이터를 Client 에게응답한다. Spring MVC 의웹요청 Life Cycle 을주관

12 2. MVC DispatcherServlet 상세. Spring MVC 의웹요청 Life Cycle 을주관하는 DispatcherServlet

13 2. MVC DispatcherServlet(2/3) DispatcherServlet, ApplicationContext, WebApplicationContext 하나의빈설정파일에모든빈을등록할수도있지만, 아래와같이 Layer 별로빈파일을나누어등록하고 ApplicationContext, WebApplicationContext 사용하는것을권장. ApplicationContext : ContextLoaderListener에의해생성. persistance, service layer의빈 WebApplicationContext : DispatcherServlet에의해생성. presentation layer의빈 ContextLoaderListener는웹어플리케이션이시작되는시점에 ApplicationContext을만들고, 이 ApplicationContext의빈정보는모든 WebApplicationContext들이참조할수있다

14 2. MVC DispatcherServlet(3/3) web.xml 에 DispatcherServlet 설정하기 <!-- ApplicationContext 빈설정파일 --> <context-param> <param-name>contextconfiglocation</param-name> <param-value> /WEB-INF/config/service/easycompany-service.xml <!-- 서비스빈정의 --> /WEB-INF/config/service/easycompany-dao.xml <!--Dao 빈정의 --> </param-value> </context-param> <listener> <listener-class>org.springframework.web.context.contextloaderlistener</listener-class> </listener> <!-- WebApplicationContext 빈설정파일 --> <servlet> <servlet-name>servlet</servlet-name> <servlet-class>org.springframework.web.servlet.dispatcherservlet</servlet-class> <init-param> <param-name>contextconfiglocation</param-name> <param-value> /WEB-INF/config/easycompany-servlet.xml <!--web layer 관련빈선언 --> </param-value> </init-param> </servlet> <!-- WebApplicationContext 빈설정파일 --> <servlet> <servlet-name>webservice</servlet-name> <servlet-class>org.springframework.web.servlet.dispatcherservlet</servlet-class> <init-param> <param-name>contextconfiglocation</param-name> <param-value> /WEB-INF/config/easycompany-webservice.xml </param-value> </init-param> </servlet>

15 LAB 301-mvc LAB 301-mvc 실습

16 LAB 301-mvc Exercise /hello.do 에동작하는 Controller = "/hello.do") public String helloworld() { return getviewname(); Exercise helloworld.jsp 만들기 ( 위치 : src\main\webapp\web-inf\jsp\hello ) <%@ page contenttype="text/html; charset=utf-8"%> <%@ taglib prefix="spring" uri=" <%@ taglib prefix="form" uri=" <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> </head> <body> <h1>hello 표준프레임워크 </h1> </body> </html>

17 어노테이션을이용한설정 : XML 기반으로설정하던정보들을어노테이션을사용해서정의한다. 유연해진메소드시그니쳐 : Controller 메소드의파라미터와리턴타입을좀더다양하게필요에따라선택할수있다. POJO-Style의 Controller : Controller 개발시에특정인터페이스를구현하거나특정클래스를상속해야할필요가없다. 하지만, 폼처리, 다중액션등기존의계층형 Controller가제공하던기능들을여전히쉽게구현할수있다

18 2. 가붙은클래스들을읽어들여 ApplicationContext, WebApplicationContext에빈정보를저장, <context:include-filter> 나 <context:exclude-filter> 를사용해야한다. <?xml version="1.0" encoding="utf-8"?> <beans xmlns=" xmlns:xsi=" xmlns:p=" xmlns:context=" xsi:schemalocation= <context:component-scan base-package="com.easycompany.controller.annotation"> <context:include-filter type="annotation" expression="org.springframework.stereotype.controller"/> <context:exclude-filter type="annotation" expression="org.springframework.stereotype.service"/> <context:exclude-filter type="annotation" expression="org.springframework.stereotype.repository"/> </context:component-scan> </beans>

19 2. MVC HandlerMapping 개발을위한 HandlerMapping. 단 jdk1.5 에지정된 url 과해당 Controller 의메소드매핑 기본 HandlerMapping 이므로빈설정파일에별도로선언할필요없으나, 다른 HandlerMapping 과함께사용한다면선언해야 한다. SimpleUrlAnnotationHandlerMapping DefaultAnnotationHandlerMapping 은특정 url 에대해 interceptor 를적용할수없음. -> 확장 HandlerMapping DefaultAnnotationHandlerMapping 과함께사용. (order 프로퍼티를 SimpleUrlAnnotationHandlerMapping 에준다.) <bean id="selectannotaionmapper class="egovframework.rte.ptl.mvc.handler.simpleurlannotationhandlermapping p:order="1"> <property name="interceptors"> <list> <ref local="authenticinterceptor"/> </list> </property> <property name="urls"> <list> <value>/admin/*.do</value> <value>/user/userinfo.do</value> <value>/development/**/code*.do</value> </list> </property> </bean> <bean id="annotationmapper" class="org.springframework.web.servlet.mvc.annotation.defaultannotationhandlermapping p:order="2"/>

20 2. 관련어노테이션 (1/7) 해당클래스가 Controller 요청에대해어떤 Controller, Controller Controller 메소드의파라미터나리턴값을 Model 에서 Controller 를붙여주면된다. 특정클래스를구현하거나상속할 필요가없다. import public class HelloController {

21 2. 관련어노테이션 요청에대해어떤 Controller, 어떤메소드가처리할지를맵핑하기위한어노테이션이다 관련속성 이름타입설명 value String[] URL /hello.do ) /hello.do, /world.do ) 와같이표기하며, /hello.do ) 으로표기할수도있다. /mypath/*.do 와같이 Ant-Style의패턴매칭을이용할수도있다. method RequestM ethod[] HTTP Request 메소드값을맵핑조건으로부여한다. HTTP = RequestMethod.POST) 같은형식으로표기한다. 사용가능한메소드는 GET, POST, HEAD, OPTIONS, PUT, DELETE, TRACE 이다 params String[] HTTP Request 파라미터를맵핑조건으로부여한다. params= myparam=myvalue 이면 HTTP Request URL중에 myparam이라는파라미터가있어야하고값은 myvalue이어야맵핑한다. params= myparam 와같이파라미터이름만으로조건을부여할수도있고,!myParam 하면 myparam1=myvalue, myparam2,!myparam3 ) 와같이조건을주었다면, HTTP Request에는파라미터 myparam1이 myvalue값을가지고있고, myparam2 파라미터가있어야하고, myparam3라는파라미터는없어야한다

22 2. 관련어노테이션 은클래스단위 (type level) 나메소드단위 (method level) 로설정할수있다. type level /hello.do 요청이오면 HelloController의 hello 메소드가수행된다. type level에서 URL을정의하고 표기를해야제대로맵핑이된다. import org.springframework.stereotype.controller; public class HelloController public String hello(){

23 2. 관련어노테이션 (4/7) method level /hello.do 요청이오면 hello 메소드, /helloform.do 요청은 GET 방식이면 helloget 메소드, POST 방식이면 hellopost 메소드가수행된다. import org.springframework.stereotype.controller; import org.springframework.web.bind.annotation.requestmapping; import public class HelloController public String method = RequestMethod.GET) public String method = RequestMethod.POST) public String hellopost(){

24 2. 관련어노테이션 (5/7) type + method level type level, method level 둘다설정할수도있는데, 이경우엔 type value(url) 를 method level에서재정의할수없다. /hello.do 요청시에 GET 방식이면 helloget 메소드, POST 방식이면 public class HelloController = RequestMethod.GET) public String = RequestMethod.POST) public String hellopost(){

25 2. 은 Controller 메소드의파라미터와웹요청파라미터와맵핑하기위한어노테이션이다. 관련속성 이름타입설명 value String 파라미터이름 required boolean 해당파라미터가반드시필수인지여부. 기본값은 true 이다. 해당파라미터가 Request 객체안에없을때그냥 null값을바인드하고싶다면, 아래예제의 pageno 파라미터처럼 required=false로명시해야한다. name 파라미터는 required가 true이므로, 만일 name 파라미터가 null이면 public class HelloController public String hello(@requestparam("name") String required=false) String pageno){

26 2. Controller에서 2가지방법으로사용된다. 1. Model 속성 (attribute) 과메소드파라미터의바인딩. 2. 입력폼에필요한참조데이터 (reference data) 작성. - SimpleFormContrller의 referencedata 메소드와유사한기능. 관련속성 이름타입설명 value String 바인드하려는 model attribute를 session에저장, (type level) 에서선언할수있다. 관련속성 이름타입설명 value String[] session 에저장하려는 model attribute 의이름 required Class[] session 에저장하려는 model attribute 의타입

27 2. 메소드시그니쳐 메소드시그니쳐 기존의계층형 Controller(SimpleFormController, MultiAction..) 에비해유연한메소드파라미터, 리턴값을갖는다. 메소드파라미터 Servlet API - ServletRequest, HttpServletRequest, HttpServletResponse, HttpSession 같은요청, 응답, 세션관련 Servlet API. org.springframework.web.context.request.webrequest, org.springframework.web.context.request.nativewebrequest java.util.locale java.io.inputstream / java.io.reader java.io.outputstream / - HTTP Request의파라미터와메소드의 argument를바인딩하기위해사용하는어노테이션. java.util.map / org.springframework.ui.model / org.springframework.ui.modelmap - 뷰에전달할모델데이터. Command/form 객체 - HTTP Request로전달된 alias를줄수있다. org.springframework.validation.errors / org.springframework.validation.bindingresult - 유효성검사후결과데이터를저장한객체. org.springframework.web.bind.support.sessionstatus - 세션폼처리시에해당세션을제거하기위해사용된다

28 2. 메소드시그니쳐 (2/2) 메소드리턴타입 ModelAndView - 적용된메소드의리턴데이터가담긴 Model 객체와 View 정보가담겨있다. Model( 또는 ModelMap) - 적용된메소드의리턴데이터가 Model 객체에담겨있다. View 이름은 RequestToViewNameTranslator가 URL을이용하여결정한다. Map - 적용된메소드의리턴데이터가 Map 객체에담겨있으며, View 이름은역시 RequestToViewNameTranslator가결정한다 String - 리턴하는 String 값이곧 View 이름이된다. 적용된메소드의리턴데이터가 Model( 또는 ModelMap) 에담겨있다. 리턴할 Model( 또는 ModelMap) 객체가해당메소드의 argument에선언되어있어야한다 void - 메소드가 ServletResponse / HttpServletResponse등을사용하여직접응답을처리하는경우이다. View 이름은 RequestToViewNameTranslator가결정한다

29 2. 예제 로폼처리구현하기 로구현해보자. 메소드의이름은폼처리를담당하는 기존의 Form Controller 인 SimpleFormController 와의비교를위해기능별로동일하게지었다. 화면 & 시나리오 1. 파라미터부서번호의해당부서정보데이터를불러와입력폼을채운다. 2. 상위부서 (selectbox) 는부서정보데이터와는별도로, 상위부서에해당하는부서리스트데이터을구해서참조데이터로구성한다. 3. 사용자가데이터수정을끝내고저장버튼을누르면수정데이터로저장을담당하는서비스 (DB) 를호출한다. 4. 저장이성공하면부서리스트페이지로이동하고에러가있으면다시입력폼페이지로이동한다

30 2. 예제 (2/3) Controller 작성하기 package public class UpdateDepartmentController private DepartmentService departmentservice; // 상위부서 (selectbox) 는부서정보데이터와는별도로, public Map<String, String> referencedata() { Map<String, String> param = new HashMap<String, String>(); param.put("depth", "1"); return departmentservice.getdepartmentidnamelist(param); // = "/updatedepartment.do", method = RequestMethod.GET) public String formbackingobject(@requestparam("deptid") String deptid, Model model) { Department department = departmentservice.getdepartmentinfobyid(deptid); model.addattribute("department", department); return "modifydepartment"; // 사용자가데이터수정을끝내고저장버튼을누르면수정데이터로저장을담당하는서비스 (DB) 를호출한다. // = "/updatedepartment.do", method = RequestMethod.POST) public String onsubmit(@modelattribute("department") Department department) { try { departmentservice.updatedepartment(department); return "redirect:/departmentlist.do?depth=1"; catch (Exception e) { return "modifydepartment";

31 2. 예제 (3/3) JSP 폼필드와모델데이터의편리한데이터바인딩을위해스프링폼태그를사용한다. commandname 에는 model attribute 를적어주면된다. department... taglib prefix="form" uri=" %>... <form:form commandname="department"> <table> <tr> <th> 부서번호 </th><td><c:out value="${department.deptid"/></td> </tr> <tr> <th> 부서이름 </th><td><form:input path="deptname" size="20"/></td> </tr> <tr> <th> 상위부서 </th> <td> <form:select path="superdeptid"> <option value=""> 상위부서를선택하세요.</option> <form:options items="${deptinfoonedepthcategory" /> </form:select> </td> </tr> <tr> <th> 설명 </th><td><form:textarea path="description" rows="10" cols="40"/></td> </tr> </table>... <input type="submit" value=" 저장 "/> <input type="button" value=" 리스트페이지 " onclick="location.href='/easycompany/departmentlist.do?depth=1'"/>... </form:form>

32 LAB 301-mvc LAB 301-mvc 실습

33 LAB 301-mvc Exercise mvc-servlet.xml 설정변경하기 : messagesource 활성화 <bean id="messagesource" class="org.springframework.context.support.resourcebundlemessagesource"> <property name="basenames"> <list> <value>messages.validation</value> <value>messages.label</value> </list> </property> </bean> Exercise LoginController1.java = "/loginprocess1.do", method = RequestMethod.GET) public String loginformsetup() { return = "/loginprocess1.do", method = RequestMethod.POST) public String loginprocess(@modelattribute("login") LoginCommand logincommand) { return protected List<LoginType> referencedata() throws Exception { List<LoginType> logintypes = new ArrayList<LoginType>(); logintypes.add(new LoginType("A", " 개인회원 ")); logintypes.add(new LoginType("B", " 기업회원 ")); logintypes.add(new LoginType("C", " 관리자 ")); return protected Object referencedata4login() throws Exception { return new LoginCommand();

34 LAB 301-mvc Exercise LoginCommand.java 완성하기 private String id; private String password; private String logintype; public String getid() { return id; public void setid(string id) { this.id = id; public String getpassword() { return password; public void setpassword(string password) { this.password = password; public String getlogintype() { return logintype; public void setlogintype(string logintype) { this.logintype = logintype;

35 2. MVC - 참고자료 Spring Framework API The Spring Framework - Reference Documentation

36 3. Internationalization( 국제화 ) 개요 (1/8) 서비스개요 전자정부표준프레임워크에서는 Spring MVC 에서제공하는 LocaleResolver를이용한다. Spring MVC 는다국어를지원하기위하여아래와같은종류의 LocaleResolver 를제공하고있다. CookieLocaleResolver : 쿠키를이용한 locale정보사용 SessionLocaleResolver : 세션을이용한 locale정보사용 AcceptHeaderLocaleResolver : 클라이언트의브라우져에설정된 locale정보사용 * Bean 설정파일에정의하지않을경우 AcceptHeaderLocaleResolver 가 default 로적용된다

37 3. Internationalization( 국제화 ) 설명 (2/8) CookieLocaleResolver CookieLocaleResolver 를설정하는경우사용자의쿠키에설정된 Locale 을읽어들인다. Bean 설정정보 (xx-servlet.xml) <bean id="localeresolver" class="org.springframework.web.servlet.i18n.cookielocaleresolver" > <property name="cookiename" value="clientlanguage"/> <property name="cookiemaxage" value="100000"/> <property name="cookiepath" value="web/cookie"/> </bean> Property 속성

38 3. Internationalization( 국제화 ) 설명 (3/8) SessionLocaleResolver requst 가가지고있는 session 으로부터 locale 정보를가져온다. Bean 설정정보 (xx-servlet.xml) <bean id="localeresolver" class="org.springframework.web.servlet.i18n.sessionlocaleresolver" /> AcceptHeaderLocaleResolver 사용자의브라우저에서보내진 request 의헤더에 accept-language 부분에서 Locale 을읽어들인다. 사용자브 라우저의 Locale 을나타낸다. Bean 설정정보 (xx-servlet.xml) <bean id="localeresolver" class="org.springframework.web.servlet.i18n.acceptheaderlocaleresolver" />

39 3. Internationalization( 국제화 ) 설명 (4/8) 샘플예제 (SessionLocaleResolver ) Web Configuration Filter 설정 Web 을통해들어오는요청을 Charset UTF-8 적용 1. CharacterEncodingFilter 을이용하여 encoding 할수이도록아래와같이세팅 (Web.xml) <filter> <filter-name>encoding-filter</filter-name> <filter-class> org.springframework.web.filter.characterencodingfilter </filter-class> <init-param> <param-name>encoding</param-name> <param-value>utf-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>encoding-filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>

40 3. Internationalization( 국제화 ) 설명 (5/8) Spring Configuration (xx-servlet.xml) 아래와같이 localeresover 와 localechangeinterceptor 를등록하고 Annotation 기반에서동작할수있도록 DefaultAnnotationHandlerMapping 에 interceptor 로등록을해준다. SessionLocaleResolver 를이용하여위와같이하였을경우 Locale 결정은 language Request Parameter 로넘기게된다. <bean id="localeresolver" class="org.springframework.web.servlet.i18n.sessionlocaleresolver" /> <!-- 쿠키를이용한 Locale 이용시 <bean id="localeresolver" class="org.springframework.web.servlet.i18n.cookielocaleresolver"/> --> <bean id="localechangeinterceptor" class="org.springframework.web.servlet.i18n.localechangeinterceptor"> <property name="paramname" value="language" /> </bean> <bean id="annotationmapper" class="org.springframework.web.servlet.mvc.annotation.defaultannotationhandlermapping"> <property name="interceptors"> <list> <ref bean="localechangeinterceptor" /> </list> </property> </bean>

41 3. Internationalization( 국제화 ) 설명 (6/8) Message Source 설정 먼저다국어를지원해야하므로메시지를 MessageSource 로추출하여구현해야한다. 자세한 MessageSource 내용은 Resource 를참고하길바란다. messagesource는아래와같이설정하였다. <bean id="messagesource" class="org.springframework.context.support.resourcebundlemessagesource"> <property name="basenames"> <list> <value>classpath:/message/message</value> </list> </property> </bean> message properties 파일은아래와같다. locale 에따라 ko, en 으로구분하였다. message_ko.properties 파일 : view.category= 카테고리 message_en.properties 파일 : view.category=category

42 3. Internationalization( 국제화 ) 설명 (7/8) JSP Spring Message Tag 이용 : <spring:message code="view.category" /> <%@ taglib prefix="spring" uri= %> <form:form commandname="message" >... <table border="1" cellspacing="0" class="boardlist" summary="list of Category"> <thead> <tr> <th scope="col">no.</th> <th scope="col"> <input name="checkall" type="checkbox" class="inputcheck" title="check All" onclick="javascript:fnccheckall();"/> </th> <th scope="col"><spring:message code="view.category" /> ID</th> <th scope="col"><spring:message code="view.category" /> 명 </th> <th scope="col"> 사용여부 </th> <th scope="col">description</th> <th scope="col"> 등록자 </th> </tr> </thead>

43 3. Internationalization( 국제화 ) 설명 (8/8) 결과 화면상으로해당페이지를실행해보면아래와같다

44 LAB 301-mvc LAB 301-mvc 실습

45 LAB 301-mvc Step mvc-servlet.xml 추가설정하기 <!-- [Exercise 1-3-3] mvc-servlet.xml 추가설정하기 : SessionLocaleResolver 를이용한 locale 설정 --> <!-- setting Locale --> <bean id="localechangeinterceptor" class="org.springframework.web.servlet.i18n.localechangeinterceptor" p:paramname="lang" /> <bean id="localeresolver" class="org.springframework.web.servlet.i18n.sessionlocaleresolver" /> <!-- Locale Interceptor 설정하기 --> <bean class="org.springframework.web.servlet.mvc.annotation.defaultannotationhandlermapping"> <property name="interceptors"> <list> <ref bean="localechangeinterceptor"/> </list> </property> </bean> Step LoginController1.java 설정하기 public class LoginController2 {

46 LAB 301-mvc Step LoginController2.java = "/memberinfo.do") public ModelAndView memberinfo(httpsession httpsession) { ModelAndView mav = new ModelAndView("login/memberInfo"); if (httpsession.getattribute("login")!= null) mav.addobject("login", httpsession.getattribute("login")); return = "/loginout.do", method = RequestMethod.GET) public String logout(sessionstatus sessionstatus) { if (!sessionstatus.iscomplete()) sessionstatus.setcomplete(); return protected List<LoginType> referencedata() throws Exception { List<LoginType> logintypes = new ArrayList<LoginType>(); logintypes.add(new LoginType("A", " 개인회원 ")); logintypes.add(new LoginType("B", " 기업회원 ")); logintypes.add(new LoginType("C", " 관리자 ")); return protected Object referencedata4login() throws Exception { return new LoginCommand();

47 3. Internationalization( 국제화 ) 참고자료 The Spring Framework - Reference Documentation

48 4. Ajax Support - 개요 Ajax Support 일반적으로 Ajax 기능은 javascript 언어로개발하나, server-side 구현에익숙한 J2EE 개발자들에게는쉽지않은작업이다. Ajax를이용해자주사용되는기능을 custom tag형태로제공한다. 오픈소스라이브러리인 AjaxTags를이용한다

49 LAB 302-ajax LAB 302-ajax 실습

50 LAB 302-ajax Step AjaxSimpleController.java 에 = "/autocomplete.do") public ModelAndView simpleajax(@requestparam("keyword") String keyword) { ModelAndView mav = new ModelAndView(new AjaxSimpleView()); List keywordlist = search(keyword); StringBuffer sb = new StringBuffer(); sb.append(keywordlist.size()); sb.append(" "); for (int i = 0; i < keywordlist.size(); i++) { String key = (String) keywordlist.get(i); sb.append(key); if (i < keywordlist.size() - 1) { sb.append(","); log.debug(sb.tostring()); mav.addobject("ajaxsimple", sb.tostring()); return mav; Step AjaxSimpleView.java 완성하기 writer.write((string) model.get("ajaxsimple"));

51 4. Ajax Support -AjaxTags(1/2) AjaxTags AjaxTags 는 javascript 로 Ajax 기능을실행하지만, 이용하는개발자에게 JSP Tag Library 형태의 API 만을노출 시키고필요한값만을입력받음으로써쉽게 Ajax 기능을구현할수있도록한다. 시스템환경및필요라이브러리 JDK 1.5 Servlet container running Servlets 2.4+ and JSP 2.0+ (jsp-api 2.0,servlet-api 2.4) AjaxTags 라이브러리

52 4. Ajax Support -AjaxTags(2/2) 설치 AjaxTags 라이브러리를 download 한후 WEB-INF/lib 에위치시킨다. web.xml 설정. <servlet> <servlet-name>sourceloader</servlet-name> <servlet-class>net.sourceforge.ajaxtags.servlets.sourceloader</servlet-class> <init-param> <param-name>prefix</param-name> <param-value>/ajaxtags</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>sourceloader</servlet-name> <url-pattern>/ajaxtags/js/*</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>sourceloader</servlet-name> <url-pattern>/ajaxtags/img/*</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>sourceloader</servlet-name> <url-pattern>/ajaxtags/css/*</url-pattern> </servlet-mapping>

53 4. Ajax Support - AjaxTags Reference & Usage AjaxTags Reference & Usage ajax:autocomplete 자동완성기능. 보통검색입력창에 prefix 문자를입력하면해당추천검색어를보여주는방식으로이용. ajax:select 하나의셀렉트박스에서값을변경하면다른셀렉트박스에연관된값으로리스트를구성. ajax:tabpanel 탭으로구성된페이지를새로고침없이보여줄때. 이외에도여러기능이있다. AjaxTags 의 Tag 레퍼런스및사용법은아래 AjaxTags 사이트에서확인할수있다

54 4. Ajax Support - 예제 (1/5) ajax:autocomplete 기능구현하기 사원정보조회페이지에서, 조회조건중에하나인이름필드에자동완성기능 (autocomplete) 을적용해본다. 검색하려는이름을입력하기시작하면, 입력값에해당하는 prefix 를가진이름들이추천리스트로나온다

55 4. Ajax Support - 예제 (2/5) JSP 태그라이브러리선언 <%@ taglib prefix="ajax" ri=" %> 관련 Javascript, CSS 선언 <script type="text/javascript" src="<%=request.getcontextpath()%>/ajaxtags/js/prototype.js"></script> <script type="text/javascript" src="<%=request.getcontextpath()%>/ajaxtags/js/scriptaculous/scriptaculous.js"></script> <script type="text/javascript" src="<%=request.getcontextpath()%>/ajaxtags/js/overlibmws/overlibmws.js"></script> <script type="text/javascript" src="<%=request.getcontextpath()%>/ajaxtags/js/ajaxtags.js"></script> <link type="text/css" rel="stylesheet" href="<%=request.getcontextpath()%>/ajaxtags/css/ajaxtags.css" /> <link type="text/css" rel="stylesheet" href="<%=request.getcontextpath()%>/ajaxtags/css/displaytag.css" /> <ajax:autocomplete/> 사용 <ajax:autocomplete baseurl= ajax url" source= 입력필드이름 " target= 입력필드이름 " classname= CSS 클래스이름 " minimumcharacters= 최소입력값 " />

56 4. Ajax Support - 예제 (3/5) /easycompany/webapp/jsp/annotation/employeelist.jsp <%@ taglib prefix="ajax" uri=" %>... <!--Ajax Tags--> <script type="text/javascript" src="<%=request.getcontextpath()%>/ajaxtags/js/prototype.js"></script> <script type="text/javascript" src="<%=request.getcontextpath()%>/ajaxtags/js/scriptaculous/scriptaculous.js"></script> <script type="text/javascript" src="<%=request.getcontextpath()%>/ajaxtags/js/overlibmws/overlibmws.js"></script> <script type="text/javascript" src="<%=request.getcontextpath()%>/ajaxtags/js/ajaxtags.js"></script> <link type="text/css" rel="stylesheet" href="<%=request.getcontextpath()%>/ajaxtags/css/ajaxtags.css" /> <link type="text/css" rel="stylesheet" href="<%=request.getcontextpath()%>/ajaxtags/css/displaytag.css" /> <form:form commandname="searchcriteria" action="/easycompany/employeelist.do"> <table width="50%" border="1"> <tr> <td> 사원번호 : <form:input path="searcheid"/> </td> <td> 부서번호 : <form:input path="searchdid"/> </td> <td> 이름 : <form:input path="searchname"/> </td> <td><input type="submit" value=" 검색 " onclick="this.disabled=true,this.form.submit();" /></td> </tr> </table> </form:form> <ajax:autocomplete baseurl="${pagecontext.request.contextpath/suggestname.do" source="searchname" target="searchname" classname="autocomplete" minimumcharacters="1" />

57 4. Ajax Support - 예제 (4/5) Controller 검색이름필드 serachname에입력된값으로추천이름리스트를받아온다. 결과데이터를 XML 형식으로변환하고, Model 데이터에담는다. 결과데이터 display를 AjaxXmlView가담당한다. JSP 페이지에프린트되는일반적인응답방식이아니므로, 응답처리를위한 View(AjaxXmlView) 를만들어야한다. package com.easycompany.controller.annotation;... import net.sourceforge.ajaxtags.xml.ajaxxmlbuilder; import public class AjaxController protected ModelAndView suggestname(@requestparam("searchname") String searchname){ ModelAndView model = new ModelAndView(new AjaxXmlView()); List<String> namelist = employeeservice.getnamelistforsuggest(searchname); AjaxXmlBuilder ajaxxmlbuilder = new AjaxXmlBuilder(); for(string name:namelist){ ajaxxmlbuilder.additem(name, name, false); model.addobject("ajaxxml",ajaxxmlbuilder.tostring()); return model;

58 4. Ajax Support - 예제 (5/5) View 결과데이터의형식을응답객체에설정한다. Controller 에서보낸 Model 객체의결과데이터를꺼내 write 한다. package com.easycompany.view; import java.io.printwriter; import java.util.map; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpservletresponse; import org.springframework.web.servlet.view.abstractview; public class AjaxXmlView extends AbstractView protected void rendermergedoutputmodel(map model, HttpServletRequest request, HttpServletResponse response) throws Exception { response.setcontenttype("text/xml"); response.setheader("cache-control", "no-cache"); response.setcharacterencoding("utf-8"); PrintWriter writer = response.getwriter(); writer.write((string) model.get("ajaxxml")); writer.close();

59 4. Ajax Support - 추가예제 예제 (easycompany) 속의 AjaxTags ajax:autocomplete 사원리스트페이지 (/easycompany/employeelist.do) 에서이름검색. Controller : com.easycompany.controller.annotation. AjaxController suggestname 메소드 JSP : /easycompany/webapp/jsp/annotation/employeelist.jsp ajax:select 사원정보수정페이지 (/easycompany/updateemployee.do?employeeid= 사원아이디 ) 에서상위부서 select box 선택시하위부서 select box 데이터자동변환. Controller : com.easycompany.controller.annotation. AjaxController getdeptinfoforselecttag 메소드 JSP : /easycompany/webapp/jsp/annotation/modifyemployee.jsp ajax:tabpanel 부서리스트페이지 (/easycompany/departmentlist.do?depth=1) 에서상하위부서정보를탭처리. Controller : Controller 불필요. JSP : /easycompany/webapp/jsp/annotation/departmentlist.jsp

60 LAB 302-ajax LAB 302-ajax 실습

61 LAB 302-ajax HsqlDB 를실행하여라.(lab302-ajax\db\runHsqlDB.cmd) Step employeelist.jsp 에서 Ajax Tags Resource 를붙여준다. Line 16 <script type="text/javascript" src="<%=request.getcontextpath()%>/ajaxtags/js/prototype.js"></script> <script type="text/javascript" src="<%=request.getcontextpath()%>/ajaxtags/js/scriptaculous/scriptaculous.js"></script> <script type="text/javascript" src="<%=request.getcontextpath()%>/ajaxtags/js/overlibmws/overlibmws.js"></script> <script type="text/javascript" src="<%=request.getcontextpath()%>/ajaxtags/js/ajaxtags.js"></script> <link type="text/css" rel="stylesheet" href="<%=request.getcontextpath()%>/ajaxtags/css/ajaxtags.css" /> <link type="text/css" rel="stylesheet" href="<%=request.getcontextpath()%>/ajaxtags/css/displaytag.css" /> Step employeelist.jsp 에서 Ajax Tags Script(AutoComplete 용 ) 를붙여준다. <ajax:autocomplete baseurl="suggestname.do" source="searchname" target="searchname" classname="autocomplete" minimumcharacters="1" /> Step employeelist.jsp 에서 Ajax Tags Script(select 용 ) 를붙여준다. <ajax:select baseurl="autoselectdept.do" parameters="depth=2,superdeptid={superdeptid" source="superdeptid" target="departmentid" emptyoptionname="select model"/>

62 LAB 302-ajax Step employeeservice.getnamelistforsuggest 메소드를호출하여결과를가져온다. namelist = employeeservice.getnamelistforsuggest(searchname); Step 호출하고보니 EmployeeServiceImpl 의메소드가완성되어있지않다. 따라서 EmployeeServiceImpl.java 를완성한다. EmployeeService Interface 를구현한다. public class EmployeeServiceImpl implements EmployeeService { Step getnamelistforsuggest 메소드를구현한다.(comment 처리를지운다.) public List<String> getnamelistforsuggest(string nameprefix) { Step employeedao 의 getnamelistforsuggest 메소드를이용하여검색한후결과를리턴한다. public List<String> getnamelistforsuggest(string nameprefix) { return employeedao.getnamelistforsuggest(nameprefix);

63 4. Ajax Support - 참고자료 AjaxTags Web Site

64 5. Security - 개요 Security 서비스 인증, 권한같은일반적인 ( 통상적인 ) 개념의 Security 서비스는 Spring Security를활용한공통기반레이어에서제공한다. 화면처리레이어의 Security 서비스는입력값유효성검증기능을제공한다. 입력값유효성검증 (validation) 을위한기능은 Valang, Jakarta Commons, Spring 등에서제공한다. 기반오픈소스로 Jakarta Commons Validator를선택. MVC 프레임워크인 Spring MVC와 Jakarta Commons Validator의연계와활용방안을제공한다

65 5. Security - Jakarta Commons Validator Jakarta Commons Validator Jakarta Commons Validator는필수값, 각종 primitive type(int,long,float ), 최대-최소길이, 이메일, 신용카드번호등의값체크등을할수있도록 Template이제공된다. Template은 Java 뿐아니라 Javascript로도제공되어 client-side, server-side의검증을함께할수있으며, Configuration과에러메시지를 client-side, server-side 별로따로하지않고한곳에같이쓰는관리상의장점이있다

66 5. Security - Spring+Commons Validator Spring Framework + Jakarta Commons Validator Struts에서는 Commons Validator를사용하기위한 org.apache.struts.validator.validatorplugin 같은플러그인클래스를제공하는데, Spring에서는 Spring Modules( 프로젝트에서연계모듈을제공한다. 필요라이브러리 commons-validator : Ver 아래 4개의파일에대한 dependency가있다. 1. commons-beanutils : Ver commons-digester : Ver commons-logging : Ver oro : Ver spring modules : Ver 0.9 다운받고압축을풀어보면여러파일들이있으나여기서필요한건 spring-modules-validation.jar 뿐이다. 예제를보려면 \samples\sources\spring-modules-validation-commons-samples-src.zip도필요하다. 위에서언급한라이브러리들을설치한다

67 5. Security - DefaultValidatorFactory, DefaultBeanValidator DefaultValidatorFactory, DefaultBeanValidator 설정 DefaultValidatorFactory 프로퍼티 'validationconfiglocationsapache' 에정의된 Validation rule을기반으로 Commons Validator들의인스턴스를얻는다. DefaultBeanValidator DefaultBeanValidator는 org.springframework.validation.validator를 implements하고있지만, DefaultValidatorFactory가가져온 Commons Validator의인스턴스를이용해 validation을수행한다. Controller의 validation을수행할때이 DefaultBeanValidator를참조하면된다. 빈정의파일에아래와같이 DefaultValidatorFactory, DefaultBeanValidator 를선언한다. <!-- Integrated Apache Commons Validator by Spring Modules --> <bean id="beanvalidator" class="org.springmodules.validation.commons.defaultbeanvalidator"> <property name="validatorfactory" ref="validatorfactory"/> </bean> <bean id="validatorfactory" class="org.springmodules.validation.commons.defaultvalidatorfactory"> <property name="validationconfiglocations"> <list> <value>/web-inf/config/validator-rules.xml</value> <value>/web-inf/config/validator.xml</value> </list> </property> </bean>

68 5. Security - validator-rules.xml validator-rules.xml 설정 validator-rules.xml 은 application 에서사용하는모든 validation rule 에대해정의하는파일이다. <validator> 태그를구성하는주요요소는아래와같다. name : validation rule(required,mask,integer, ) classname : validation check 를수행하는클래스명 (org.springmodules.validation.commons.fieldchecks) method : validation check 를수행하는클래스의메소드명 (validaterequired,validatemask ) methodparams : validation check 를수행하는클래스의메소드의파라미터 msg : 에러메시지 key. (message 프로퍼티에서설정한다.) javascript : client-side validation 을위한자바스크립트코드 <!DOCTYPE form-validation PUBLIC "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.0//EN" " <form-validation> <global> <validator name="required" classname="org.springmodules.validation.commons.fieldchecks" method="validaterequired" methodparams="java.lang.object, org.apache.commons.validator.validatoraction, org.apache.commons.validator.field, org.springframework.validation.errors" msg="errors.required > <javascript><![cdata[... ]]> </javascript> </validator> </form-validation>

69 5. Security - Validation Rule Validation Rule name(validation rule) FieldCheck 클래스 FieldCheck 메소드기능 required org.springmodules.validation.commons.fieldchecks validaterequired 필수값체크 minlength org.springmodules.validation.commons.fieldchecks validateminlength 최소길이체크 maxlength org.springmodules.validation.commons.fieldchecks validatemaxlength 최대길이체크 mask org.springmodules.validation.commons.fieldchecks validatemask 정규식체크 byte org.springmodules.validation.commons.fieldchecks validatebyte Byte형체크 short org.springmodules.validation.commons.fieldchecks validateshort Short형체크 integer org.springmodules.validation.commons.fieldchecks validateinteger Integer 형체크 long org.springmodules.validation.commons.fieldchecks validatelong Long 형체크 Spring Modules float org.springmodules.validation.commons.fieldchecks validatefloat Float형체크 double org.springmodules.validation.commons.fieldchecks validatedouble Double형체크 date org.springmodules.validation.commons.fieldchecks validatedate Date형체크 range org.springmodules.validation.commons.fieldchecks validateintrange 범위체크 intrange org.springmodules.validation.commons.fieldchecks validateintrange int형범위체크 floatrange org.springmodules.validation.commons.fieldchecks validatefloatrange Float형범위체크 creditcard org.springmodules.validation.commons.fieldchecks validatecreditcard 신용카드번호체크 org.springmodules.validation.commons.fieldchecks validate 이메일체크 ihidnum egovframework.rte.ptl.mvc.validation.rtefieldchecks validateihidnum 주민등록번호체크 korean egovframework.rte.ptl.mvc.validation.rtefieldchecks validatekorean 한글체크 htmltag egovframework.rte.ptl.mvc.validation.rtefieldchecks validatehtmltag <,> 태그정보체크 egovframework

70 5. Security - validator.xml(1/2) validator.xml 설정 validator.xml 은 validation rule 과 validation 할 Form 을매핑한다. form name 과 field property 의 name-rule 은 Server-side 와 Client-side 인경우에따라다르다. Server-side validation 의경우 form name 과 field property 는 validation 할폼클래스의이름, 필드가각각매핑된다.(camel case) 폼클래스가 Employee 면 employee, DepartmentForm 이면 departmentform 을 form name 으로지정한다. Client-side 의경우 form name 은 JSP 에서설정한 <validator:javascript formname= employee /> 태그의 formname 과매핑되고, field property 는각각의폼필드의이름과일치하면된다. 따라서, Server-side, Client-side 둘다수행하려면, JSP 의 <validator:javascript formname= employee /> 태그의 formname 은폼클래스의이름이되어야하고, JSP 의폼필 드들은폼클래스의필드와일치해야한다

71 5. Security - validator.xml(2/2) depends는해당필드에적용할 (validator-rules.xml에정의된 rule name) validator를의미한다. <arg key > 는메시지출력시파라미터를지정하는값이다. 아래와같이작성했다면, Employee 클래스의 name 필드에대해서필수값체크를, age 필드에대해서 integer 체크를, 필드에대해선필수값과 유효값체크를하겠다는의미이다. <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE form-validation PUBLIC "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.1//EN" <form-validation> <formset> <form name="employee"> <field property="name" depends="required,korean"> <arg0 key="employee.name" /> </field> <field property="age" depends="integer"> <arg0 key="employee.age" /> </field> <field property=" " depends=" ,htmltag"> <arg0 key="employee. " /> </field> <field property="ihidnum" depends="ihidnum"/> </form> </formset> </form-validation>

72 5. Security - Server-Side Validation(1/4) Server-Side Validation Controller Server-Side Validation 을위해 Controller 에 validation 로직을추가. package com.easycompany.controller.annotation;... import public class UpdateEmployeeController private DefaultBeanValidator = "/updateemployee.do", method = RequestMethod.POST) public String updateemployee(@modelattribute("employee") Employee employee, BindingResult bindingresult, Model model) { beanvalidator.validate(employee, bindingresult); //validation 수행 if (bindingresult.haserrors()) { // 만일 validation 에러가있으면 return "modifyemployee"; employeemanageservice.updateemployee(employee); return "changenotify";

73 5. Security - Server-Side Validation(2/4) JSP form submit을하면이름, 나이, 이메일등의입력값이 Employee 클래스에바인딩이되어서 Controller에전달이되고, Controller에 validation 수행로직이있으면 validator.xml 내용에따라 validation이이루어진다. 만일에러가발생하면 <form:error /> 에해당에러메시지를출력한다. <form:form commandname="employee"> <table> <tr> <th> 이름 </th><td><form:input path="name" size="20"/><form:errors path="name" /></td> </tr> <tr> <th> 비밀번호 </th><td><form:input path="password" size="10"/></td> </tr> <tr> <th> 나이 </th><td><form:input path="age" size="10"/><form:errors path="age" /></td> </tr> <tr> <th> 이메일 </th><td><form:input path=" " size="50"/><form:errors path=" " /></td> </tr> </table> <table width="80%" border="1"> <tr> <td><input type="submit"/> <input type="button" value="list" onclick="location.href='/easycompany/employeelist.do'"/> </td> </tr> </table> </form:form>

74 5. Security - Server-Side Validation(3/4) 에러메시지등록 메시지파일 (message.properties) 에에러메시지를등록한다. validation 에러가발생하면 validator-rules.xml에서정의했던 msg값으로에러메시지의 key값을찾아해당하는메시지를출력해준다. 예를들어, validation에서에러가발생하면 msg값이 errors. 이므로, 유효하지않은이메일주소입니다. 라는에러메시지를 JSP에있는 <form:errors path= /> 부분에출력하게된다. employee.name= 이름 employee. = 이메일 employee.age= 나이 employee.password= 비밀번호 # -- validator errors -- errors.required={0 은필수입력값입니다. errors.minlength={0 은 {1 자이상입력해야합니다. errors.maxlength={0 은 {1 자이상입력할수없습니다. errors.invalid={0 은유효하지않은값입니다. errors.byte={0 은 byte타입이어야합니다. errors.short={0 은 short타입이어야합니다. errors.integer={0 은 integer 타입이어야합니다.... errors. = 유효하지않은이메일주소입니다

75 5. Security - Server-Side Validation(4/4) TEST 이름필드에값을비우고 submit 하면, name 에필수값 (required) validation rule 이설정되어있으므로 아래와같이이름필드옆에에러메시지가출력된다

76 5. Security - Client-Side Validation(1/3) Client-Side Validation validator.jsp 추가 <%@ page language="java" contenttype="javascript/x-javascript" %> <%@ taglib prefix="validator" uri=" %> <validator:javascript dynamicjavascript="false" staticjavascript="true"/> /validator.do 로호출하도록 Controller 에서메소드를추가하고 requestmapping 한다. validator.jsp 를 브라우져에서호출해보면, validator-rules.xml 에서정의한 javascript 함수들이다운로드되거나화면에 print 되는걸확인할수있다. validator.jsp 는 client-validation 을위해 validator-rules.xml 에서정의한 javascript 함수들을로딩한다. 따라서 client-validation 을할페이지에서는이 validator.jsp 를 <script type= text/javascript src= <c:url value= /validator.do /> ></script> 같이호출한다. JSP 설정 (taglib,javascript) 추가 client-validation 을위해서는해당 JSP 에아래와같은작업이추가되어야한다. commons-validator taglib 를선언한다. <%@ taglib prefix= validator uri= %> 필요한자바스크립트함수를 generate 하기위한코드를추가한다. validation-rules.xml 에서선언한함수를불러오기위해, 위에서작성한 validator.jsp 를아래와같이호출한다. <script type= text/javascript src= <c:url value= /validator.do /> ></script>

77 5. Security - Client-Side Validation(2/3) 위의자바스크립트함수를이용해필요한 validation 과메시지처리를위한자바스크립트를 generate 하기위한코드를추가 한다. formname 에는 validator.xml 에서정의한 form 의이름을써준다. <validator:javascript formname= employee staticjavascript= false xhtml= true cdata= false /> form submit 시에 validatevo 클래스명 () 함수를호출한다. onsubmit= return validateemployee(this) > 따라서앞의 server-side validation 에서작성한 modifyemployee.jsp 은아래와같이변경된다. <!-- commons-validator tag lib 선언 --> <%@ taglib prefix="validator" uri=" %> <!--for including generated Javascript Code(in validation-rules.xml)--> <script type="text/javascript" src="<c:url value="/validator.do"/>"></script> <!--for including generated JavascriptCode(validateEmployee(),formName:validator.xml 에서정의한 form 의이름 )--> <validator:javascript formname="employee" staticjavascript="false" xhtml="true" cdata="false"/> <script type="text/javascript"> function save(form){ if(!validateemployee(form)){ return; else{ form.submit(); </script> <form:form commandname="employee"> <!--<input type="submit"/>--> <input type="button" value="save" onclick="save(this.form)"/> <!-- client-validation 을위해바로 submit 하지않고먼저 validateemployee 함수를호출 --> <input type="button" value="list" onclick="location.href='/easycompany/employeelist.do'"/> </td></tr> </table> </form:form>

78 5. Security - Client-Side Validation(3/3) TEST 이름필드의값을지우고저장버튼을누르면아래와같은 alert 메시지가보인다

79 5. Security - 참고자료 Spring Modules Reference Documentation v

80 6. UI Adaptor - 개요 서비스개요 전자정부표준프레임워크와 UI 솔루션 (Rich Internet Application) 연동. 보통 Web Framework 과 UI 솔루션과의연동을하는방법중가장많이사용하는방식은 Controller 역할을수행하는 Servlet 객체에서업무로직을호출전데이타를 DTO 형태로변화하여업무로직으로넘기는방식. 전자정부표준프레임워크에서는 Spring MVC Annotation 기반으로개발시메소드의파라미터로넘어오는객체가 request 객체가아닌업무용 DTO 클래스로넘어올수있도록가이드하는방식을선택

81 6. UI Adaptor- 설명 (1/8) 전자정부표준프레임워크의 UI Adaptor 구현시나리오 UI솔루션데이타에서 DTO로변환 1. AnnotationMethodHandlerAdapter 의 CustomRiaArgumentResolver 등록 CustomRiaArgumentResolver 2. UIAdaptor 구현 / 등록 UIAdaptorImpl Controller 메소드구현 BeanNameViewResolver 설정 RiaView 구현 RiaView 구현 / 등록 RiaView

82 6. UI Adaptor- 설명 (2/8) UI 솔루션데이터에서 DTO 로변환 AnnotationMethodHandlerAdapter 의 CustomRiaArgumentResolver 등록 CustomRiaArgumentResolver WebArgumentResolver 의구현체인 CustomRiaArgumentResolver 는 uiadaptor 에세팅된 Adaptor 를실행해준다. <bean class="org.springframework.web.servlet.mvc.annotation.annotationmethodhandleradapter"> <property name="webbindinginitializer"> <bean class="egovframework.rte.fdl.web.common.egovbindinginitializer" /> </property> <property name="customargumentresolvers"> <list> <bean class="egovframework.rte.fdl.sale.web.customriaargumentresolver"> <property name="uiadaptor"> <list> <ref bean="riaadaptor" /> </list> </property> </bean> </list> </property> </bean>

83 6. UI Adaptor- 설명 (3/8) CustomRiaArgumentResolver UiAdaptor 의구현체는아래와같다. 여기서는 Miplatform 의예를들어코드를작성하였다. UI 솔루션의객체에서 DTO 로데이타를옮기는역할은 convert 메소드에서수행한다. public class CustomRiaArgumentResolver implements WebArgumentResolver { private UiAdaptor[] uias; public void setuiadaptors(uiadaptor[] uias) { this.uias = uias; public Object resolveargument(methodparameter methodparameter, NativeWebRequest webrequest) throws Exception { Class<?> type = methodparameter.getparametertype(); Object uiobject = null; if (uias == null) return UNRESOLVED; // 여기서 Adapter 를찾는방법을필히물어볼것... for (UiAdaptor uia : uias) { if (type.equals(uia.getmodelname())) { HttpServletRequest request = (HttpServletRequest) webrequest.getnativerequest(); // uiobject = (UdDTO) uia.convert(request); uiobject = (Object) uia.convert(request); return uiobject; return UNRESOLVED;

84 6. UI Adaptor- 설명 (4/8) UIAdaptor 구현 / 등록 UIAdaptorImpl (riaadaptor) convert(httpservletrequest request) 메소드구현 Public Object convert(httpservletrequest request) throws Exception { PlatformRequest platformrequest = null; try { platformrequest = new PlatformRequest(request, PlatformRequest.CHARSET_UTF8); platformrequest.receivedata(); catch (IOException ex) { ex.getstacktrace(); // throw new IOException("PlatformRequest error"); /* * TODO platformrequest 에서 VariableList 와 DatasetList 를뽑아결정된 Map * 형태 (example : ModelMap) 의객체에담아 Request 에다시담고 return true 로넘긴다. */ //CategoryVO dto = converte4in(platformrequest); //Class dto = Class.forName("egovframework.rte.fdl.sale.service.CategoryVO"); Object dto = converte4in(platformrequest, request); //request.setattribute("categoryvo", dto); return dto;

85 6. UI Adaptor- 설명 (5/8) Controller 메소드구현 UdDTO 클래스는 CustomRiaArgumentResolver 에서만들어져 Controller 메소드의 parameter 형태로가져온 public class MiCategoryController public ModelAndView selectcategorylist4mi(uddto midto, Model model) throws Exception { ModelAndView mav = new ModelAndView("miplatformView"); // 조회조건으로넣는다. Map<String, String> smp = new HashMap<String, String>(); try { List resultlist = categoryservice.selectcategorylist(smp); log.debug(" CategoryController START ======================"); mav.addobject("midto", resultlist); log.debug(" CategoryController End ======================"); catch (Exception ex) { mav.addobject("miresultcode", "-1"); mav.addobject("miresultmsg", ex.tostring()); log.info(ex.getstacktrace(), ex); return mav;

86 6. UI Adaptor- 설명 (6/8) BeanNameViewResolver 설정 모델객체의이름이 miplatformview 이다. 이것은 Bean Name 을직접명시한것으로아래와같은설정 (BeanNameViewResolver) 이필요하다. <bean class="org.springframework.web.servlet.view.beannameviewresolver" p:order="0" /> <bean class="org.springframework.web.servlet.view.urlbasedviewresolver" p:order="1" p:viewclass="org.springframework.web.servlet.view.jstlview" p:prefix="/web-inf/jsp/" p:suffix=".jsp" /> <bean id="miplatformview" class="egovframework.rte.fdl.sale.web.miplatformmapview" />

87 6. UI Adaptor- 설명 (7/8) RiaView 구현 RiaView 구현 / 등록 miplatformview public class MiPlatformMapView extends protected void rendermergedoutputmodel(map model, HttpServletRequest request, HttpServletResponse response) throws Exception { PlatformData platformdata = new PlatformData(miVariableList, midatasetlist); if ((String) model.get("miresultcode")!= null) { this.setmiresultmessage((string) model.get("miresultcode"), (String) model.get("miresultmsg")); else { this.setmiresultmessage("0", "sucess~~"); // 데이터변환. try { new PlatformResponse(response, PlatformConstants.CHARSET_UTF8).sendData(platformData); catch (IOException ex) { if (log.iserrorenabled()) { log.error("exception occurred while writing xml to MiPlatform Stream.", ex); throw new Exception();

88 6. UI Adaptor- 설명 (8/8) 결과

89 6. UI Adaptor- 참고자료 The Spring Framework - Reference Documentation

90 4. 업무처리레이어 1. 개요 2. Process Control 3. Exception Handling

91 1. 개요 - 실행환경업무처리레이어 (1/3) 4. 업무처리레이어 업무처리레이어는업무프로그램의업무로직을담당하는 Layer 로서, 업무흐름제어, 에러처리등 의기능을제공함 전자정부개발프레임워크실행환경 서비스그룹 Presentation Layer 설명 업무프로그램과사용자간의 Interface 를담당하는 Layer 로서, 사용자화면구성, 사용자입력정보검증등의기능을제공함 Layer Presentation Layer Logic Business Layer Persistence Integration Layer Business Logic Layer 업무프로그램의업무로직을담당하는 Layer 로서, 업무흐름제어, 에러처리등의기능을제공함 Persistence Layer 데이터베이스에대한연결및영속성처리, 선언적인트랜잭션관리를제공하는 Layer 임 Foundation Layer ( 공통기반레이어 ) Integration Layer 타시스템과의연동기능을제공하는 Layer 임 환경 서비스그룹 Foundation Layer ( 공통기반레이어 ) 실행환경의각 Layer 에서공통적으로사용하는공통기능을제공함

92 1. 개요 - 실행환경업무처리레이어 (2/3) 4. 업무처리레이어 업무처리레이어는 Process Control, Exception Handling 등총 2 개의서비스를제공함 실행환경 화면처리레이어 업무처리레이어 데이터처리레이어 연계통합레이어 MVC Internationalization Process Control DataSource Data Access Naming Service Ajax Support Security Exception Handling ORM TBD Transaction Integration Service UI Adaptor Web Service 공통기반레이어 AOP Cache Compress/Decompress Encryption/Decryption Excel File Handling File Upload/Download FTP Server Security ID Generation IoC Container Logging Mail Marshalling/Unmarshalling Object Pooling Property Resource Scheduling String Util XML Manipulation 실행환경서비스그룹서비스

93 1. 개요 - 실행환경업무처리레이어 (3/3) 4. 업무처리레이어 업무처리레이어는 Spring Web Flow, Spring 등총 2 개의오픈소스 SW 를사용하고있음 서비스오픈소스 SW 버전 Process Control Web Flow 2.0 Exception Handling Spring

94 2. Process Control 개요 4. 업무처리레이어 서비스개요 Spring Web Flow(SWF) 는웹애플리케이션내페이지흐름 (flow) 의정의와수행에집중하는 Spring프레임워크웹스택의컴포넌트이다. Spring Web Flow는추상화의좀더높은레벨에존재하고 Struts, Spring MVC, Portlet MVC, 그리고 JSF와같은기본프레임워크내에서자족적인페이지흐름 (flow) 엔진 (page flow engine) 처럼통합된다. SWF는선언적이고높은이식성을가지며뛰어난관리능력을가지는형태로명시적으로애플리케이션의페이지흐름 (flow) 을획득하는기능을제공한다

95 2. Process Control - 설명 (1/9) 4. 업무처리레이어 Getting Started - Hello 프로젝트 화면시나리오

96 LAB 303-swf Demo Lab303-swf

97 2. Process Control - 설명 (2/9) 4. 업무처리레이어 1 번 Hello 시나리오 Flow 정의 <?xml version="1.0" encoding="utf-8"?> <flow xmlns=" xmlns:xsi=" xsi:schemalocation=" </flow> <view-state id="hello"> <transition on="say" to="helloworld" /> </view-state> <view-state id="helloworld"> <transition on="return" to="return" /> </view-state> <end-state id="return" view="externalredirect:servletrelative:/start" />

98 2. Process Control - 설명 (3/9) 4. 업무처리레이어 2 번 Hello 시나리오 Flow 정의 <?xml version="1.0" encoding="utf-8"?> <flow xmlns=" xmlns:xsi=" xsi:schemalocation=" <on-start> <evaluate expression="helloservice.saymessage()" result="flowscope.message" /> </on-start> <view-state id="hello2" model="message"> <binder> <binding property="str" required="true" /> </binder> <transition on="proceed" to="actionhello" /> <transition on="return" to="return" /> </view-state> <action-state id="actionhello"> <evaluate expression="helloservice.addhello(message)" /> <transition on="yes" to="moredecision" /> <transition on="no" to="hello" /> </action-state> <decision-state id="moredecision"> <if test="helloservice.getdecision(message)" then="helloworld2" else="return" /> </decision-state> <view-state id="helloworld2"> <transition on="return" to="return" /> </view-state> <end-state id="return" view="externalredirect:servletrelative:/start" /> </flow>

99 2. Process Control - 설명 (4/9) 4. 업무처리레이어 Flow Definition <?xml version="1.0" encoding="utf-8"?> <flow xmlns=" xmlns:xsi=" xsi:schemalocation=" </flow> <view-state id="hello"> <transition on="say" to="helloworld" /> </view-state> <view-state id="helloworld"> <transition on="return" to="return" /> </view-state> <end-state id="return" view="externalredirect:servletrelative:/start" /> view-state: Flow 중화면을보여주는 State 를정의하는구성요소 편의상 Flow 정의파일이있는디렉터리내에서 view-state id 와일치하는화면템플릿을맞추어보여주게된다. transition: State 내에서발생한이벤트를제어하는구성요소. 화면이동을일으킨다. end-state: Flow의결과를정의

100 2. Process Control - 설명 (5/9) 4. 업무처리레이어 decision state action-state 를대신해서편리하게 if/else 문법을사용해서이동하고자하는의사결정을해주는 decision-state 를사용한다. <decision-state id="moredecision"> <if test="helloservice.getdecision(message)" then="helloworld2" else="return" /> </decision-state> action-state 액션은대부분 POJO 의메소드를호출한다. action-state 와 decision-state 을호출했을때, 이들메소드가반환하는값은상태를전이하게해주는데사용할수있다. 전이가이벤트에의해서발생되기때문에, 우선메소드가반환하는값은반드시 Event 객체에매핑되야한다. <action-state id="actionhello"> <evaluate expression="helloservice.addhello(message)" /> <transition on="yes" to="moredecision" /> <transition on="no" to="hello" /> </action-state>

101 2. Process Control - 설명 (6/9) 4. 업무처리레이어 환경설정 with Spring MVC

102 2. Process Control - 설명 (7/9) 4. 업무처리레이어 webmvc-config.xml

103 2. Process Control - 설명 (8/9) 4. 업무처리레이어 webflow-config.xml

104 2. Process Control - 설명 (9/9) 4. 업무처리레이어 화면 <%@ taglib prefix="form" uri=" <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " <html> <head> <title>welcome to Spring Web Flow</title> </head> <body> <h1>welcome to Spring Web Flow</h1> <form:form id="start"> <input type="submit" name="_eventid_say" value="click to say hello!" /> </form:form> </body> </html> <view-state id="hello"> <transition on="say" to="helloworld" /> </view-state> <view-state id="helloworld"> <transition on="return" to="return" /> </view-state> transition 은화면에서발생한이벤트와매핑을할까? hello.jsp 소스를잠시보겠다. 코드에서보는봐와같이 form으로둘러싸인곳에해답은있다. <input type= submit name= _eventid_say. /> 에서 name 을보면 _eventid_say 로답을찾을수있다. _eventid 가답이다. say는 transition 의 on 과같음을확인할수있다. eventid 에정의된특정위치의문자열을가지고 transition 를분석한다. transition 에대한내용은 flow 정의에서자세히살펴보길바란다. eventid 가 say 를가지고 form 이전달되면 flow 정의에따라 transition 을찾고그에맞는 state 로넘어가게된다. 결과는별도의값을가지고보여주는화면이아닌단지아래와같은화면을보여주도록되어있다

슬라이드 1

슬라이드 1 - 1 - 전자정부개발프레임워크실행환경 1. 개요 2. MVC 3. Internationalization 4. Ajax Support 5. Security 6. UI Adaptor - 2 - 1. 개요 - 실행홖경화면처리레이어 (1/3) 화면처리레이어는업무프로그램과사용자간의 Interface 를담당하는 Layer 로서, 사용자화면 구성, 사용자입력정보검증등의기능을제공함

More information

슬라이드 1

슬라이드 1 1. 개요 - 실행환경화면처리레이어 (1/3) 화면처리레이어는업무프로그램과사용자간의 Interface 를담당하는 Layer 로서, 사용자화면 구성, 사용자입력정보검증등의기능제공 서비스그룹 설명 Presentation Layer 전자정부개발프레임워크실행환경 Business Logic Layer Persistence Layer Batch Layer Integration

More information

Web Service Computing

Web Service Computing Spring MVC 2015 Web Service Computing Request & Response HTTP(Hyper-Text Transfer Protocol) 웹서버가하는일은요청 (Request) 과응답 (Response) 의연속이다. 1) 브라우저에 www.google.co.kr 을입력한다면 2) 구글서버에페이지를요청하는것이고 3) 화면이잘나타난다면구글서버가응답을한것이다.

More information

I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r

I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r Jakarta is a Project of the Apache

More information

표준프레임워크로 구성된 컨텐츠를 솔루션에 적용하는 것에 문제가 없는지 확인

표준프레임워크로 구성된 컨텐츠를 솔루션에 적용하는 것에 문제가 없는지 확인 표준프레임워크로구성된컨텐츠를솔루션에적용하는것에문제가없는지확인 ( S next -> generate example -> finish). 2. 표준프레임워크개발환경에솔루션프로젝트추가. ( File -> Import -> Existring Projects into

More information

KYO_SCCD.PDF

KYO_SCCD.PDF 1. Servlets. 5 1 Servlet Model. 5 1.1 Http Method : HttpServlet abstract class. 5 1.2 Http Method. 5 1.3 Parameter, Header. 5 1.4 Response 6 1.5 Redirect 6 1.6 Three Web Scopes : Request, Session, Context

More information

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher( 실행할페이지.jsp); 다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp"); dispatcher.forward(request, response); - 위의예에서와같이 RequestDispatcher

More information

슬라이드 1

슬라이드 1 7. [ 실습 ] 예제어플리케이션개발 1. 실습개요 2. 프로젝트환경구성 3. 기본환경설정 4. 예제어플리케이션개발 5. 참조 - 539 - 1. 실습개요 (1/4) 7. [ 실습 ] 예제어플리케이션개발 스프링기반의 EGOV 프레임워크를사용하여구현된예제어플리케이션구현을통하여 Presentation Layer와 Business Layer의연계를살펴본다. 예제어플리케이션구현기능

More information

PowerPoint Template

PowerPoint Template JavaScript 회원정보 입력양식만들기 HTML & JavaScript Contents 1. Form 객체 2. 일반적인입력양식 3. 선택입력양식 4. 회원정보입력양식만들기 2 Form 객체 Form 객체 입력양식의틀이되는 태그에접근할수있도록지원 Document 객체의하위에위치 속성들은모두 태그의속성들의정보에관련된것

More information

14-Servlet

14-Servlet JAVA Programming Language Servlet (GenericServlet) HTTP (HttpServlet) 2 (1)? CGI 3 (2) http://jakarta.apache.org JSDK(Java Servlet Development Kit) 4 (3) CGI CGI(Common Gateway Interface) /,,, Client Server

More information

Intro to Servlet, EJB, JSP, WS

Intro to Servlet, EJB, JSP, WS ! Introduction to J2EE (2) - EJB, Web Services J2EE iseminar.. 1544-3355 ( ) iseminar Chat. 1 Who Are We? Business Solutions Consultant Oracle Application Server 10g Business Solutions Consultant Oracle10g

More information

Spring Boot/JDBC JdbcTemplate/CRUD 예제

Spring Boot/JDBC JdbcTemplate/CRUD 예제 Spring Boot/JDBC JdbcTemplate/CRUD 예제 오라클자바커뮤니티 (ojc.asia, ojcedu.com) Spring Boot, Gradle 과오픈소스인 MariaDB 를이용해서 EMP 테이블을만들고 JdbcTemplate, SimpleJdbcTemplate 을이용하여 CRUD 기능을구현해보자. 마리아 DB 설치는다음 URL 에서확인하자.

More information

Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 11 년 10 월 26 일수요일

Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 11 년 10 월 26 일수요일 Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 Introduce Me!!! Job Jeju National University Student Ubuntu Korean Jeju Community Owner E-Mail: ned3y2k@hanmail.net Blog: http://ned3y2k.wo.tc Facebook: http://www.facebook.com/gyeongdae

More information

혼자서일을다하는 JSP. 이젠일을 Servlet 과나눠서한다. JSP와서블릿의표현적인차이 - JSP는 <html> 내에서자바를사용할수있는수단을제공한다. - 서블릿은자바내에서 <html> 을작성할수있는수단을제공한다. - JSP나서블릿으로만웹페이지를작성하면자바와다양한코드가

혼자서일을다하는 JSP. 이젠일을 Servlet 과나눠서한다. JSP와서블릿의표현적인차이 - JSP는 <html> 내에서자바를사용할수있는수단을제공한다. - 서블릿은자바내에서 <html> 을작성할수있는수단을제공한다. - JSP나서블릿으로만웹페이지를작성하면자바와다양한코드가 혼자서일을다하는 JSP. 이젠일을 Servlet 과나눠서한다. JSP와서블릿의표현적인차이 - JSP는 내에서자바를사용할수있는수단을제공한다. - 서블릿은자바내에서 을작성할수있는수단을제공한다. - JSP나서블릿으로만웹페이지를작성하면자바와다양한코드가웹페이지내에뒤섞여있어서웹페이지의화면설계가점점어려워진다. - 서블릿이먼저등장하였으나, 자바내에

More information

API STORE 키발급및 API 사용가이드 Document Information 문서명 : API STORE 언어별 Client 사용가이드작성자 : 작성일 : 업무영역 : 버전 : 1 st Draft. 서브시스템 : 문서번호 : 단계 : Docum

API STORE 키발급및 API 사용가이드 Document Information 문서명 : API STORE 언어별 Client 사용가이드작성자 : 작성일 : 업무영역 : 버전 : 1 st Draft. 서브시스템 : 문서번호 : 단계 : Docum API STORE 키발급및 API 사용가이드 Document Information 문서명 : API STORE 언어별 Client 사용가이드작성자 : 작성일 : 2012.11.23 업무영역 : 버전 : 1 st Draft. 서브시스템 : 문서번호 : 단계 : Document Distribution Copy Number Name(Role, Title) Date

More information

<4D F736F F F696E74202D20C1A632C8B8C7D1B1B9BDBAC7C1B8B5BBE7BFEBC0DAB8F0C0D32D496E E D56432E BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20C1A632C8B8C7D1B1B9BDBAC7C1B8B5BBE7BFEBC0DAB8F0C0D32D496E E D56432E BC8A3C8AF20B8F0B5E55D> Inside Spring Web MVC 안영회 ahnyounghoe@gmail.com 차례 MVC 개요와오해 Spring Web MVC 개요 Demo 로이해하는 Spring Web MVC 대표적인컨트롤러활용 정리 한국 스프링 사용자 모임 MVC 개요와 오해 한국 스프링 사용자 모임 MVC 개요 MVC 에대한오해 컨트롤러는서블릿이다! 컨트롤러는액션이다! 비즈니스로직은컨트롤러다!

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 @ Lesson 2... ( ). ( ). @ vs. logic data method variable behavior attribute method field Flow (Type), ( ) member @ () : C program Method A ( ) Method B ( ) Method C () program : Java, C++, C# data @ Program

More information

JAVA PROGRAMMING 실습 08.다형성

JAVA PROGRAMMING 실습 08.다형성 2015 학년도 2 학기 1. 추상메소드 선언은되어있으나코드구현되어있지않은메소드 abstract 키워드사용 메소드타입, 이름, 매개변수리스트만선언 public abstract String getname(); public abstract void setname(string s); 2. 추상클래스 abstract 키워드로선언한클래스 종류 추상메소드를포함하는클래스

More information

Spring

Spring Spring MVC 프로젝트생성 2015 Web Service Computing 일반적인스프링의정의 스프링의정의 자바엔터프라이즈개발을편하게해주는오픈소스경량급애플리케이션프레임워크 스프링의기원 로드존슨 (Rod Johnson) 이라는유명 J2EE 개발자가출간한 Expert One-on- One J2EE Design and Development 이라는제목의책에소개된예제샘플

More information

<property name="configlocation" value="classpath:/egovframework/sqlmap/example/sql-map-config.xml"/> <property name="datasource" ref="datasource2"/> *

<property name=configlocation value=classpath:/egovframework/sqlmap/example/sql-map-config.xml/> <property name=datasource ref=datasource2/> * 표준프레임워크로구성된컨텐츠를솔루션에적용 1. sample( 게시판 ) 프로젝트생성 - egovframe Web Project next generate example finish 2. 프로젝트추가 - 프로젝트 Import 3. 프로젝트에 sample 프로젝트의컨텐츠를추가, 기능동작확인 ⓵ sample 프로젝트에서 프로젝트로복사 sample > egovframework

More information

JavaGeneralProgramming.PDF

JavaGeneralProgramming.PDF , Java General Programming from Yongwoo s Park 1 , Java General Programming from Yongwoo s Park 2 , Java General Programming from Yongwoo s Park 3 < 1> (Java) ( 95/98/NT,, ) API , Java General Programming

More information

Interstage5 SOAP서비스 설정 가이드

Interstage5 SOAP서비스 설정 가이드 Interstage 5 Application Server ( Solaris ) SOAP Service Internet Sample Test SOAP Server Application SOAP Client Application CORBA/SOAP Server Gateway CORBA/SOAP Gateway Client INTERSTAGE SOAP Service

More information

JUNIT 실습및발표

JUNIT 실습및발표 JUNIT 실습및발표 JUNIT 접속 www.junit.org DownLoad JUnit JavaDoc API Document 를참조 JUNIT 4.8.1 다운로드 설치파일 (jar 파일 ) 을다운로드 CLASSPATH 를설정 환경변수에서설정 실행할클래스에서 import JUnit 설치하기 테스트실행주석 @Test Test 를실행할 method 앞에붙임 expected

More information

3장

3장 C H A P T E R 03 CHAPTER 03 03-01 03-01-01 Win m1 f1 e4 e5 e6 o8 Mac m1 f1 s1.2 o8 Linux m1 f1 k3 o8 AJAX

More information

Spring Boot

Spring Boot 스프링부트 (Spring Boot) 1. 스프링부트 (Spring Boot)... 2 1-1. Spring Boot 소개... 2 1-2. Spring Boot & Maven... 2 1-3. Spring Boot & Gradle... 3 1-4. Writing the code(spring Boot main)... 4 1-5. Writing the code(commandlinerunner)...

More information

Spring Data JPA Many To Many 양방향 관계 예제

Spring Data JPA Many To Many 양방향 관계 예제 Spring Data JPA Many To Many 양방향관계예제 오라클자바커뮤니티 (ojc.asia, ojcedu.com) 엔티티매핑 (Entity Mapping) M : N 연관관계 사원 (Sawon), 취미 (Hobby) 는다 : 다관계이다. 사원은여러취미를가질수있고, 하나의취미역시여러사원에할당될수있기때문이다. 보통관계형 DB 에서는다 : 다관계는 1

More information

Microsoft PowerPoint - Smart CRM v4.0_TM 소개_20160320.pptx

Microsoft PowerPoint - Smart CRM v4.0_TM 소개_20160320.pptx (보험TM) 소개서 2015.12 대표전화 : 070 ) 7405 1700 팩스 : 02 ) 6012 1784 홈 페이지 : http://www.itfact.co.kr 목 차 01. Framework 02. Application 03. 회사 소개 01. Framework 1) Architecture Server Framework Client Framework

More information

PowerPoint Presentation

PowerPoint Presentation Class - Property Jo, Heeseung 목차 section 1 클래스의일반구조 section 2 클래스선언 section 3 객체의생성 section 4 멤버변수 4-1 객체변수 4-2 클래스변수 4-3 종단 (final) 변수 4-4 멤버변수접근방법 section 5 멤버변수접근한정자 5-1 public 5-2 private 5-3 한정자없음

More information

ibmdw_rest_v1.0.ppt

ibmdw_rest_v1.0.ppt REST in Enterprise 박찬욱 1-1- MISSING PIECE OF ENTERPRISE Table of Contents 1. 2. REST 3. REST 4. REST 5. 2-2 - Wise chanwook.tistory.com / cwpark@itwise.co.kr / chanwook.god@gmail.com ARM WOA S&C AP ENI

More information

<4D F736F F F696E74202D203130C0E52EBFA1B7AF20C3B3B8AE205BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D203130C0E52EBFA1B7AF20C3B3B8AE205BC8A3C8AF20B8F0B5E55D> 10 장. 에러처리 1. page 지시문을활용한에러처리 page 지시문의 errorpage 와 iserrorpage 속성 errorpage 속성 이속성이지정된 JSP 페이지내에서 Exception이발생하는경우새롭게실행할페이지를지정하기위하여사용 iserrorpage 속성 iserrorpage 는위와같은방법으로새롭게실행되는페이지에지정할속성으로현재페이지가 Exception

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 @ Lesson 3 if, if else, if else if, switch case for, while, do while break, continue : System.in, args, JOptionPane for (,, ) @ vs. logic data method variable Data Data Flow (Type), ( ) @ Member field

More information

PowerPoint Presentation

PowerPoint Presentation Spring MVC 기초 - 강사김현오 - 1. Spring MVC 개요 1.1 SpringMVC 개요 1.2 SpringMVC 시작하기 MVC 패턴 DispatcherServlet SpringMVC 요청처리과정 MVC 패턴 (1/2) Model 어플리케이션상태의캡슐화 상태쿼리에대한응답 어플리케이션의기능표현 변경을뷰에통지 View 모델을화면에시각적으로표현 모델에게업데이트요청

More information

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc NTAS and FRAME BUILDER Install Guide NTAS and FRAME BUILDER Version 2.5 Copyright 2003 Ari System, Inc. All Rights reserved. NTAS and FRAME BUILDER are trademarks or registered trademarks of Ari System,

More information

Microsoft PowerPoint - web-part03-ch19-node.js기본.pptx

Microsoft PowerPoint - web-part03-ch19-node.js기본.pptx 과목명: 웹프로그래밍응용 교재: 모던웹을 위한 JavaScript Jquery 입문, 한빛미디어 Part3. Ajax Ch19. node.js 기본 2014년 1학기 Professor Seung-Hoon Choi 19 node.js 기본 이 책에서는 서버 구현 시 node.js 를 사용함 자바스크립트로 서버를 개발 다른서버구현기술 ASP.NET, ASP.NET

More information

본 강의에 들어가기 전

본 강의에 들어가기 전 웹서버프로그래밍 2 JSP 개요 01. JSP 개요 (1) 서블릿 (Servlet) 과 JSP(Java Server Page) 서블릿은자바를이용한서버프로그래밍기술 초기웹프로그래밍기술인 CGI(Common Gateway Interface) 를대체하기위해개발되었으나, 느린처리속도, 많은메모리요구, 불편한화면제어등의한계로 PHP, ASP 등서버스크립트언어등장 JSP

More information

- JPA를사용하는경우의스프링설정파일에다음을기술한다. <bean id="entitymanagerfactory" class="org.springframework.orm.jpa.localentitymanagerfactorybean" p:persistenceunitname=

- JPA를사용하는경우의스프링설정파일에다음을기술한다. <bean id=entitymanagerfactory class=org.springframework.orm.jpa.localentitymanagerfactorybean p:persistenceunitname= JPA 와 Hibernate - 스프링의 JDBC 대신에 JPA를이용한 DB 데이터검색작업 - JPA(Java Persistence API) 는자바의 O/R 매핑에대한표준지침이며, 이지침에따라설계된소프트웨어를 O/R 매핑프레임워크 라고한다. - O/R 매핑 : 객체지향개념인자바와관계개념인 DB 테이블간에상호대응을시켜준다. 즉, 객체지향언어의인스턴스와관계데이터베이스의레코드를상호대응시킨다.

More information

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 (   ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각 JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( http://java.sun.com/javase/6/docs/api ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각선의길이를계산하는메소드들을작성하라. 직사각형의가로와세로의길이는주어진다. 대각선의길이는 Math클래스의적절한메소드를이용하여구하라.

More information

Network Programming

Network Programming Part 5 확장된 Network Programming 기술 1. Remote Procedure Call 2. Remote Method Invocation 3. Object Request Broker 2. Java RMI

More information

PowerPoint Presentation

PowerPoint Presentation Package Class 1 Heeseung Jo 목차 section 1 패키지개요와패키지의사용 section 2 java.lang 패키지의개요 section 3 Object 클래스 section 4 포장 (Wrapper) 클래스 section 5 문자열의개요 section 6 String 클래스 section 7 StringBuffer 클래스 section

More information

- 목차 - - ios 개발환경및유의사항. - 플랫폼 ios Project. - Native Controller와플랫폼화면연동. - 플랫폼 Web(js)-Native 간데이터공유. - 플랫폼확장 WN Interface 함수개발. - Network Manager clas

- 목차 - - ios 개발환경및유의사항. - 플랫폼 ios Project. - Native Controller와플랫폼화면연동. - 플랫폼 Web(js)-Native 간데이터공유. - 플랫폼확장 WN Interface 함수개발. - Network Manager clas 플랫폼사용을위한 ios Native Guide - 목차 - - ios 개발환경및유의사항. - 플랫폼 ios Project. - Native Controller와플랫폼화면연동. - 플랫폼 Web(js)-Native 간데이터공유. - 플랫폼확장 WN Interface 함수개발. - Network Manager class 개발. - Native Controller에서

More information

제이쿼리 (JQuery) 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호

제이쿼리 (JQuery) 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호 제이쿼리 () 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호 CSS와마찬가지로, 문서에존재하는여러엘리먼트를접근할수있다. 엘리먼트접근방법 $( 엘리먼트 ) : 일반적인접근방법

More information

Microsoft PowerPoint - 04-UDP Programming.ppt

Microsoft PowerPoint - 04-UDP Programming.ppt Chapter 4. UDP Dongwon Jeong djeong@kunsan.ac.kr http://ist.kunsan.ac.kr/ Dept. of Informatics & Statistics 목차 UDP 1 1 UDP 개념 자바 UDP 프로그램작성 클라이언트와서버모두 DatagramSocket 클래스로생성 상호간통신은 DatagramPacket 클래스를이용하여

More information

신림프로그래머_클린코드.key

신림프로그래머_클린코드.key CLEAN CODE 6 11st Front Dev. Team 6 1. 2. 3. checked exception 4. 5. 6. 11 : 2 4 : java (50%), javascript (35%), SQL/PL-SQL (15%) : Spring, ibatis, Oracle, jquery ? , (, ) ( ) 클린코드를 무시한다면 . 6 1. ,,,!

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 @ Lesson 1,..... @ 1 Green Project 1991 Oak Java 1995. 5 December '90 by Patrick Naughton, Mike Sheridan and James Gosling Embedded in various consumer electronic device 1992. 9. 3 Star 7 1993 www portability

More information

C# Programming Guide - Types

C# Programming Guide - Types C# Programming Guide - Types 최도경 lifeisforu@wemade.com 이문서는 MSDN 의 Types 를요약하고보충한것입니다. http://msdn.microsoft.com/enus/library/ms173104(v=vs.100).aspx Types, Variables, and Values C# 은 type 에민감한언어이다. 모든

More information

Ext JS À¥¾ÖÇø®ÄÉÀ̼ǰ³¹ß-³¹Àå.PDF

Ext JS À¥¾ÖÇø®ÄÉÀ̼ǰ³¹ß-³¹Àå.PDF CHAPTER 2 (interaction) Ext JS., HTML, onready, MessageBox get.. Ext JS HTML CSS Ext JS.1. Ext JS. Ext.Msg: : Ext Ext.get: DOM 22 CHAPTER 2 (config). Ext JS.... var test = new TestFunction( 'three', 'fixed',

More information

교육자료

교육자료 THE SYS4U DODUMENT Java Reflection & Introspection 2012.08.21 김진아사원 2012 SYS4U I&C All rights reserved. 목차 I. 개념 1. Reflection 이란? 2. Introspection 이란? 3. Reflection 과 Introspection 의차이점 II. 실제사용예 1. Instance의생성

More information

슬라이드 1

슬라이드 1 [ 실습 ] 예제어플리케이션개발 1. 실습개요 2. 프로젝트환경구성 3. 기본환경설정 4. 예제어플리케이션개발 5. 참조 - 1 - 1. 실습개요 (1/4) 스프링기반의 EGOV 프레임워크를사용하여구현된예제어플리케이션구현을통하여모바일 UX Layer와 Business Layer의연계를살펴본다. 예제어플리케이션구현기능 정보알림이등록, 수정, 삭제, 조회 Presentation

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 한국성서대학교컴퓨터소프트웨어학과 BoostCourse (Full-Stack Developer) 김석래 예약서비스 기본제공페이지 Spring Framework 시스템설정 (pom.xml) Pom.xml Spring DB Servlet JSON 아직확실히필요한지알수없음 dbcp MySQL DTO DTO DAO Controller Service View Config

More information

04장

04장 20..29 1: PM ` 199 ntech4 C9600 2400DPI 175LPI T CHAPTER 4 20..29 1: PM ` 200 ntech4 C9600 2400DPI 175LPI T CHAPTER 4.1 JSP (Comment) HTML JSP 3 home index jsp HTML JSP 15 16 17 18 19 20

More information

Microsoft PowerPoint - Java7.pptx

Microsoft PowerPoint - Java7.pptx HPC & OT Lab. 1 HPC & OT Lab. 2 실습 7 주차 Jin-Ho, Jang M.S. Hanyang Univ. HPC&OT Lab. jinhoyo@nate.com HPC & OT Lab. 3 Component Structure 객체 (object) 생성개념을이해한다. 외부클래스에대한접근방법을이해한다. 접근제어자 (public & private)

More information

Mobile Service > IAP > Android SDK [ ] IAP SDK TOAST SDK. IAP SDK. Android Studio IDE Android SDK Version (API Level 10). Name Reference V

Mobile Service > IAP > Android SDK [ ] IAP SDK TOAST SDK. IAP SDK. Android Studio IDE Android SDK Version (API Level 10). Name Reference V Mobile Service > IAP > Android SDK IAP SDK TOAST SDK. IAP SDK. Android Studio IDE 2.3.3 Android SDK Version 2.3.3 (API Level 10). Name Reference Version License okhttp http://square.github.io/okhttp/ 1.5.4

More information

요약 1

요약 1 Globalization Support Guide Using Oracle and Java Version 1.0 www.sds-epartner.com 2003.03 목차 요약 1. 해결과제 2. Multilingual Database 3. Multilingual Web Application 4. Multiple Time Zone 5. Multiple Currency

More information

슬라이드 1

슬라이드 1 전자정부개발프레임워크 1 일차실습 LAB 개발환경 - 1 - 실습목차 LAB 1-1 프로젝트생성실습 LAB 1-2 Code Generation 실습 LAB 1-3 DBIO 실습 ( 별첨 ) LAB 1-4 공통컴포넌트생성및조립도구실습 LAB 1-5 템플릿프로젝트생성실습 - 2 - LAB 1-1 프로젝트생성실습 (1/2) Step 1-1-01. 구현도구에서 egovframe>start>new

More information

제8장 자바 GUI 프로그래밍 II

제8장 자바 GUI 프로그래밍 II 제8장 MVC Model 8.1 MVC 모델 (1/7) MVC (Model, View, Controller) 모델 스윙은 MVC 모델에기초를두고있다. MVC란 Xerox의연구소에서 Smalltalk 언어를바탕으로사용자인터페이스를개발하기위한방법 MVC는 3개의구성요소로구성 Model : 응용프로그램의자료를표현하기위한모델 View : 자료를시각적으로 (GUI 방식으로

More information

<4D F736F F F696E74202D20B5A5C0CCC5CDBAA3C0CCBDBA5F3130C1D6C2F75F31C2F7BDC32E >

<4D F736F F F696E74202D20B5A5C0CCC5CDBAA3C0CCBDBA5F3130C1D6C2F75F31C2F7BDC32E > Chapter 8 데이터베이스응용개발 목차 사용자인터페이스와도구들 웹인터페이스와데이터베이스 웹기초 Servlet 과 JSP 대규모웹응용개발 ASP.Net 8 장. 데이터베이스응용개발 (Page 1) 1. 사용자인터페이스와도구들 대부분의데이터베이스사용자들은 SQL을사용하지않음 응용프로그램 : 사용자와데이터베이스를연결 데이터베이스응용의구조 Front-end Middle

More information

Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx

Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx 2018 학년도 1 학기 JAVA 프로그래밍 II 514760-1 2018 년봄학기 5/10/2018 박경신 Lab#1 (ImageTest) Lab#1 은영상파일 (Image) 을읽어서정보를출력 Java Tutorials Lesson: Working with Images https://docs.oracle.com/javase/tutorial/2d/images/index.html

More information

교육2 ? 그림

교육2 ? 그림 Interstage 5 Apworks EJB Application Internet Revision History Edition Date Author Reviewed by Remarks 1 2002/10/11 2 2003/05/19 3 2003/06/18 EJB 4 2003/09/25 Apworks5.1 [ Stateless Session Bean ] ApworksJava,

More information

Analytics > Log & Crash Search > Unity ios SDK [Deprecated] Log & Crash Unity ios SDK. TOAST SDK. Log & Crash Unity SDK Log & Crash Search. Log & Cras

Analytics > Log & Crash Search > Unity ios SDK [Deprecated] Log & Crash Unity ios SDK. TOAST SDK. Log & Crash Unity SDK Log & Crash Search. Log & Cras Analytics > Log & Crash Search > Unity ios SDK [Deprecated] Log & Crash Unity ios SDK. TOAST SDK. Log & Crash Unity SDK Log & Crash Search. Log & Crash Unity SDK... Log & Crash Search. - Unity3D v4.0 ios

More information

rmi_박준용_final.PDF

rmi_박준용_final.PDF (RMI) - JSTORM http://wwwjstormpekr (RMI)- Document title: Document file name: Revision number: Issued by: Document Information (RMI)- rmi finaldoc Issue Date: Status:

More information

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D313939392D382E687770>

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D313939392D382E687770> i ii iii iv v vi 1 2 3 4 가상대학 시스템의 국내외 현황 조사 가상대학 플랫폼 개발 이상적인 가상대학시스템의 미래상 제안 5 웹-기반 가상대학 시스템 전통적인 교수 방법 시간/공간 제약을 극복한 학습동기 부여 교수의 일방적인 내용전달 교수와 학생간의 상호작용 동료 학생들 간의 상호작용 가상대학 운영 공지사항,강의록 자료실, 메모 질의응답,

More information

Microsoft PowerPoint 세션.ppt

Microsoft PowerPoint 세션.ppt 웹프로그래밍 () 2006 년봄학기 문양세강원대학교컴퓨터과학과 세션변수 (Session Variable) (1/2) 쇼핑몰장바구니 장바구니에서는사용자가페이지를이동하더라도장바구니의구매물품리스트의내용을유지하고있어야함 PHP 에서사용하는일반적인변수는스크립트의수행이끝나면모두없어지기때문에페이지이동시변수의값을유지할수없음 이러한문제점을해결하기위해서 PHP 에서는세션 (session)

More information

var answer = confirm(" 확인이나취소를누르세요."); // 확인창은사용자의의사를묻는데사용합니다. if(answer == true){ document.write(" 확인을눌렀습니다."); else { document.write(" 취소를눌렀습니다.");

var answer = confirm( 확인이나취소를누르세요.); // 확인창은사용자의의사를묻는데사용합니다. if(answer == true){ document.write( 확인을눌렀습니다.); else { document.write( 취소를눌렀습니다.); 자바스크립트 (JavaScript) - HTML 은사용자에게인터페이스 (interface) 를제공하는언어 - 자바스크립트는서버로데이터를전송하지않고서할수있는데이터처리를수행한다. - 자바스크립트는 HTML 나 JSP 에서작성할수있고 ( 내부스크립트 ), 별도의파일로도작성이가능하다 ( 외 부스크립트 ). - 내부스크립트 - 외부스크립트

More information

제11장 프로세스와 쓰레드

제11장 프로세스와 쓰레드 제9장자바쓰레드 9.1 Thread 기초 (1/5) 프로그램 명령어들의연속 (a sequence of instruction) 프로세스 / Thread 실행중인프로그램 (program in execution) 프로세스생성과실행을위한함수들 자바 Thread 2 9.1 Thread 기초 (2/5) 프로세스단위작업의문제점 프로세스생성시오버헤드 컨텍스트스위치오버헤드

More information

thesis

thesis ( Design and Implementation of a Generalized Management Information Repository Service for Network and System Management ) ssp@nile nile.postech.ac..ac.kr DPE Lab. 1997 12 16 GMIRS GMIRS GMIRS prototype

More information

MasoJava4_Dongbin.PDF

MasoJava4_Dongbin.PDF JSTORM http://wwwjstormpekr Issued by: < > Revision: Document Information Document title: Document file name: MasoJava4_Dongbindoc Revision number: Issued by: < > SI, dbin@handysoftcokr

More information

2장 변수와 프로시저 작성하기

2장  변수와 프로시저 작성하기 Chapter. RequestDispatcher 활용 요청재지정이란? RequestDispatcher 활용 요청재지정구현예제 Chapter.9 : RequestDispatcher 활용 1. 요청재지정이란? 클라이언트로부터요청받은 Servlet 프로그램이응답을하지않고다른자원에수행흐름을넘겨다른자원의처리결과를대신응답하는것또는다른자원의수행결과를포함하여응답하는것을요청재지정이라고한다.

More information

MVVM 패턴의 이해

MVVM 패턴의 이해 Seo Hero 요약 joshua227.tistory. 2014 년 5 월 13 일 이문서는 WPF 어플리케이션개발에필요한 MVVM 패턴에대한내용을담고있다. 1. Model-View-ViewModel 1.1 기본개념 MVVM 모델은 MVC(Model-View-Contorl) 패턴에서출발했다. MVC 패턴은전체 project 를 model, view 로나누어

More information

J2EE Concepts

J2EE Concepts ! Introduction to J2EE (1) - J2EE Servlet/JSP/JDBC iseminar.. 1544-3355 ( ) iseminar Chat. 1 Who Are We? Business Solutions Consultant Oracle Application Server 10g Business Solutions Consultant Oracle10g

More information

gnu-lee-oop-kor-lec06-3-chap7

gnu-lee-oop-kor-lec06-3-chap7 어서와 Java 는처음이지! 제 7 장상속 Super 키워드 상속과생성자 상속과다형성 서브클래스의객체가생성될때, 서브클래스의생성자만호출될까? 아니면수퍼클래스의생성자도호출되는가? class Base{ public Base(String msg) { System.out.println("Base() 생성자 "); ; class Derived extends Base

More information

Microsoft PowerPoint 웹 연동 기술.pptx

Microsoft PowerPoint 웹 연동 기술.pptx 웹프로그래밍및실습 ( g & Practice) 문양세강원대학교 IT 대학컴퓨터과학전공 URL 분석 (1/2) URL (Uniform Resource Locator) 프로토콜, 호스트, 포트, 경로, 비밀번호, User 등의정보를포함 예. http://kim:3759@www.hostname.com:80/doc/index.html URL 을속성별로분리하고자할경우

More information

untitled

untitled Push... 2 Push... 4 Push... 5 Push... 13 Push... 15 1 FORCS Co., LTD A Leader of Enterprise e-business Solution Push (Daemon ), Push Push Observer. Push., Observer. Session. Thread Thread. Observer ID.

More information

목차 BUG offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate

목차 BUG offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate ALTIBASE HDB 6.1.1.5.6 Patch Notes 목차 BUG-39240 offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG-41443 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate 한뒤, hash partition

More information

C H A P T E R 2

C H A P T E R 2 C H A P T E R 2 Foundations of Ajax Chapter 2 1 32 var xmlhttp; function createxmlhttprequest() { if(window.activexobject) { xmlhttp = new ActiveXObject( Micr else if(window.xmlhttprequest) { xmlhttp =

More information

슬라이드 1

슬라이드 1 Pairwise Tool & Pairwise Test NuSRS 200511305 김성규 200511306 김성훈 200614164 김효석 200611124 유성배 200518036 곡진화 2 PICT Pairwise Tool - PICT Microsoft 의 Command-line 기반의 Free Software www.pairwise.org 에서다운로드후설치

More information

02 C h a p t e r Java

02 C h a p t e r Java 02 C h a p t e r Java Bioinformatics in J a va,, 2 1,,,, C++, Python, (Java),,, (http://wwwbiojavaorg),, 13, 3D GUI,,, (Java programming language) (Sun Microsystems) 1995 1990 (green project) TV 22 CHAPTER

More information

SOFTBASE XFRAME DEVELOPMENT GUIDE SERIES HTML 연동가이드 서울특별시구로구구로 3 동한신 IT 타워 1215 호 Phone Fax Co

SOFTBASE XFRAME DEVELOPMENT GUIDE SERIES HTML 연동가이드 서울특별시구로구구로 3 동한신 IT 타워 1215 호 Phone Fax Co SOFTBASE XFRAME DEVELOPMENT GUIDE SERIES 2012.02.18 서울특별시구로구구로 3 동한신 IT 타워 1215 호 Phone 02-2108-8030 Fax 02-2108-8031 www.softbase.co.kr Copyright 2010 SOFTBase Inc. All rights reserved 목차 1 장 : HTML 연동개요...

More information

슬라이드 1

슬라이드 1 - 1 - 전자정부모바일표준프레임워크실습 LAB 개발환경 실습목차 LAB 1-1 모바일프로젝트생성실습 LAB 1-2 모바일사이트템플릿프로젝트생성실습 LAB 1-3 모바일공통컴포넌트생성및조립도구실습 - 2 - LAB 1-1 모바일프로젝트생성실습 (1/2) Step 1-1-01. 구현도구에서 egovframe>start>new Mobile Project 메뉴를선택한다.

More information

어댑터뷰

어댑터뷰 04 커스텀어댑터뷰 (Custom Adapter View) 커스텀어댑터뷰 (Custom Adapter View) 커스텀어댑터뷰 (Custom Adatper View) 란? u 어댑터뷰의항목하나는단순한문자열이나이미지뿐만아니라, 임의의뷰가될수 있음 이미지뷰 u 커스텀어댑터뷰설정절차 1 2 항목을위한 XML 레이아웃정의 어댑터정의 3 어댑터를생성하고어댑터뷰객체에연결

More information

예제 2) Test.java class A intvar= 10; void method() class B extends A intvar= 20; 1"); void method() 2"); void method1() public class Test 3"); args) A

예제 2) Test.java class A intvar= 10; void method() class B extends A intvar= 20; 1); void method() 2); void method1() public class Test 3); args) A 제 10 장상속 예제 1) ConstructorTest.java class Parent public Parent() super - default"); public Parent(int i) this("hello"); super(int) constructor" + i); public Parent(char c) this(); super(char) constructor

More information

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx #include int main(void) { int num; printf( Please enter an integer "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 을 작성하면서 C 프로그램의

More information

파워포인트 템플릿

파워포인트 템플릿 ibizsoftware 정호열차장 ( 표준프레임워크오픈커뮤니티커미터 ) Agenda 1. ibatis 와 Hibernate 의개념및특징 2. Hibernate 와 JPA 쿼리종류 3. ibatis 와 Hibernate 동시사용을위한 Transaction 처리방안 4. @EntityListeners 활용방법 Agenda 5. Hibernate 사용시 Dynamic

More information

PowerPoint Presentation

PowerPoint Presentation public class SumTest { public static void main(string a1[]) { int a, b, sum; a = Integer.parseInt(a1[0]); b = Integer.parseInt(a1[1]); sum = a + b ; // 두수를더하는부분입니다 System.out.println(" 두수의합은 " + sum +

More information

@OneToOne(cascade = = "addr_id") private Addr addr; public Emp(String ename, Addr addr) { this.ename = ename; this.a

@OneToOne(cascade = = addr_id) private Addr addr; public Emp(String ename, Addr addr) { this.ename = ename; this.a 1 대 1 단방향, 주테이블에외래키실습 http://ojcedu.com, http://ojc.asia STS -> Spring Stater Project name : onetoone-1 SQL : JPA, MySQL 선택 http://ojc.asia/bbs/board.php?bo_table=lecspring&wr_id=524 ( 마리아 DB 설치는위 URL

More information

No Slide Title

No Slide Title J2EE J2EE(Java 2 Enterprise Edition) (Web Services) :,, SOAP: Simple Object Access Protocol WSDL: Web Service Description Language UDDI: Universal Discovery, Description & Integration 4. (XML Protocol

More information

Orcad Capture 9.x

Orcad Capture 9.x OrCAD Capture Workbook (Ver 10.xx) 0 Capture 1 2 3 Capture for window 4.opj ( OrCAD Project file) Design file Programe link file..dsn (OrCAD Design file) Design file..olb (OrCAD Library file) file..upd

More information

2파트-07

2파트-07 CHAPTER 07 Ajax ( ) (Silverlight) Ajax RIA(Rich Internet Application) Firefox 4 Ajax MVC Ajax ActionResult Ajax jquery Ajax HTML (Partial View) 7 3 GetOrganized Ajax GetOrganized Ajax HTTP POST 154 CHAPTER

More information

슬라이드 1

슬라이드 1 [ CRM Fair 2004 ] CRM 1. CRM Trend 2. Customer Single View 3. Marketing Automation 4. ROI Management 5. Conclusion 1. CRM Trend 1. CRM Trend Operational CRM Analytical CRM Sales Mgt. &Prcs. Legacy System

More information

Apache Ivy

Apache Ivy JBoss User Group The Agile Dependency Manager 김병곤 fharenheit@gmail.com 20100911 v1.0 소개 JBoss User Group 대표 통신사에서분산컴퓨팅기반개인화시스템구축 Process Designer ETL, Input/Output, Mining Algorithm, 통계 Apache Hadoop/Pig/HBase/Cassandra

More information

JAVA Bean & Session - Cookie

JAVA Bean & Session - Cookie JAVA Bean & Session - Cookie [ 우주최강미남 ] 발표내용소개 자바빈 (Java Bean) 자바빈의개요 자바빈의설계규약 JSP 에서자바빈사용하기 자바빈의영역 세션과쿠키 (Session & Cookie) 쿠키의개요 쿠키설정 (HTTP 서블릿 API) 세션의개요 JSP 에서의세션관리 Java Bean Q. 웹사이트를개발한다는것과자바빈?? 웹사이트라는것은크게디자이너와프로그래머가함께개발합니다.

More information

* Factory class for query and DML clause creation * tiwe * */ public class JPAQueryFactory implements JPQLQueryFactory private f

* Factory class for query and DML clause creation * tiwe * */ public class JPAQueryFactory implements JPQLQueryFactory private f JPA 에서 QueryDSL 사용하기위해 JPAQuery 인스턴스생성방법 http://ojc.asia, http://ojcedu.com 1. JPAQuery 를직접생성하기 JPAQuery 인스턴스생성하기 QueryDSL의 JPAQuery API를사용하려면 JPAQuery 인스턴스를생성하면된다. // entitymanager는 JPA의 EntityManage

More information

Microsoft PowerPoint - CSharp-10-예외처리

Microsoft PowerPoint - CSharp-10-예외처리 10 장. 예외처리 예외처리개념 예외처리구문 사용자정의예외클래스와예외전파 순천향대학교컴퓨터학부이상정 1 예외처리개념 순천향대학교컴퓨터학부이상정 2 예외처리 오류 컴파일타임오류 (Compile-Time Error) 구문오류이기때문에컴파일러의구문오류메시지에의해쉽게교정 런타임오류 (Run-Time Error) 디버깅의절차를거치지않으면잡기어려운심각한오류 시스템에심각한문제를줄수도있다.

More information

뇌를 자극하는 JSP & Servlet 슬라이드

뇌를 자극하는 JSP & Servlet 슬라이드 속성 & 리스너 JSP & Servlet 2/39 Contents 학습목표 클라이언트요청에의해서블릿이실행될때에컨테이너에의해제공되는내장객체의종류와역할, 그리고접근범위특성등을알아본다. 웹컴포넌트사이의데이터전달을위한내장객체에서의속성설정과이에따른이벤트처리방법에대해알아본다. 내용 서블릿의초기화환경을표현하는 ServletConfig 객체 웹애플리케이션의실행환경을표현하는

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 실습문제 Chapter 05 데이터베이스시스템... 오라클로배우는데이터베이스개론과실습 1. 실습문제 1 (5 장심화문제 : 각 3 점 ) 6. [ 마당서점데이터베이스 ] 다음프로그램을 PL/SQL 저장프로시져로작성하고실행해 보시오. (1) ~ (2) 7. [ 마당서점데이터베이스 ] 다음프로그램을 PL/SQL 저장프로시져로작성하고실행해 보시오. (1) ~ (5)

More information

Design Issues

Design Issues 11 COMPUTER PROGRAMMING INHERIATANCE CONTENTS OVERVIEW OF INHERITANCE INHERITANCE OF MEMBER VARIABLE RESERVED WORD SUPER METHOD INHERITANCE and OVERRIDING INHERITANCE and CONSTRUCTOR 2 Overview of Inheritance

More information

1. SNS Topic 생성여기를클릭하여펼치기... Create Topic 실행 Topic Name, Display name 입력후 Create topic * Topic name : 특수문자는 hyphens( - ), underscores( _ ) 만허용한다. Topi

1. SNS Topic 생성여기를클릭하여펼치기... Create Topic 실행 Topic Name, Display name 입력후 Create topic * Topic name : 특수문자는 hyphens( - ), underscores( _ ) 만허용한다. Topi 5 주차 - AWS 실습 - SNS 시나리오 1. SNS Topic 생성 2. 3. 4. 5. Subscriptions 생성및 Confirm [ Email Test ] Message 발송 코드로보기 번외 ) SMS 발송하기 실습준비 HTML 파일, AWS 계정및 secretaccesskey, accesskeyid 간단설명 1. 2. 3. 4. SNS : 이메일,

More information

07 자바의 다양한 클래스.key

07 자바의 다양한 클래스.key [ 07 ] . java.lang Object, Math, String, StringBuffer Byte, Short, Integer, Long, Float, Double, Boolean, Character. java.util Random, StringTokenizer Calendar, GregorianCalendar, Date. Collection, List,

More information

SK IoT IoT SK IoT onem2m OIC IoT onem2m LG IoT SK IoT KAIST NCSoft Yo Studio tidev kr 5 SK IoT DMB SK IoT A M LG SDS 6 OS API 7 ios API API BaaS Backend as a Service IoT IoT ThingPlug SK IoT SK M2M M2M

More information

PowerPoint Presentation

PowerPoint Presentation 객체지향프로그래밍 인터페이스, 람다식, 패키지 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 홈네트워킹 public interface RemoteControl { public void turnon(); // 가전제품을켠다. public void turnoff(); // 가전제품을끈다. 인터페이스를구현 public class Television

More information

DocsPin_Korean.pages

DocsPin_Korean.pages Unity Localize Script Service, Page 1 Unity Localize Script Service Introduction Application Game. Unity. Google Drive Unity.. Application Game. -? ( ) -? -?.. 준비사항 Google Drive. Google Drive.,.. - Google

More information