Web MVC Action Web MVC Struts Web Work
Від техніки Web MVC проектування з Action-класами до Web MVC фреймворків Struts, Web. Work та Spring (Action-oriented Web Frameworks) Stripes 2007 -2009 Java Web MVC Frameworks
Web MVC проектування із фреймворками Struts, Spring , Web. Work (1/3) Від техніки Web MVC проек • Клас диспетчерських сервлетів: тування з Action-класами до – Struts: Web MVC фреймворків org. apache. struts. action. Action. Servlet – Spring: org. springframework. web. servlet. Dispatcher. Servlet – Web. Work: • com. opensymphony. webwork. dispatcher. Servlet. Dispatcher (до Web. Work 2. 2); • com. opensymphony. webwork. dispatcher. Filter. Dispatcher (починаючи з Web. Work 2. 2). Web. Work 2. 2 made a key changes: The Servlet. Dispatcher was deprecated and replaced with a Filter. Dispatcher. – Filter APIs – [javax. servlet. Filter]. – Фільтри можуть утворювати ланцюжки, забезпечуючи послідовну обробку об'єктів request та response. Java Web MVC Frameworks 6
Struts-проект strutscontact src com war ttp Contact. java Contact. Service. java Init. Action. java Remove. Contact. Action. java Add. Contact. Action. java WEB-INF lib . . . classes. . . struts-config. xml web. xml contact. List. jsp index. jsp Java Web MVC Frameworks 9
Spring-проект cont_spr web. xml Java Web MVC Frameworks 10
Struts 2 Java Web MVC Frameworks 11
http: //struts. apache. org/announce-2005. html Java Web MVC Frameworks 13
Додаток. Struts- та Spring- варіанти (аналоги) проекту contacts Java Web MVC Frameworks 14
Struts-проект strutscontact Java Web MVC Frameworks 15
Spring-проект cont-spr Java Web MVC Frameworks 16
<? xml version="1. 0" encoding="UTF-8"? > Файли <web-app> <servlet> web. xml <servlet-name>dispatch. Servlet </servlet-name> <servlet-class> org. apache. struts. action. Action. Servlet </servlet-class> <init-param> <param-name>config</param-name> <param-value> /WEB-INF/struts-config. xml </param-value> </init-param> Struts </servlet> <servlet-mapping> <servlet-name>dispatch. Servlet </servlet-name> <? xml version="1. 0" encoding="UTF-8"? > <url-pattern>*. do</url-pattern> <web-app. . . > <!--- увага! Скорочено ---> </servlet-mapping> <servlet> </web-app> <servlet-name> dispatch. Servlet </servlet-name> <servlet-class> org. springframework. web. servlet. Dispatcher. Servlet </servlet-class> Spring </servlet> <servlet-mapping> <servlet-name> dispatch. Servlet </servlet-name> <url-pattern>*. do</url-pattern> </servlet-mapping> Java Web MVC Frameworks 17 </web-app>
Конфігураційний файл Struts-фреймворку – struts-config. xml (1/2) <? xml version="1. 0" encoding="UTF-8" ? > <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1. 1//EN" "http: //jakarta. apache. org/struts/dtds/struts-config_1_1. dtd"> <struts-config> <action-mappings> <action Mapping path="/add. Contact. Action" (початок) type="com. ttp. Add. Contact. Action"> <forward name="contact. List" path="/contact. List. jsp"/> </action> Java Web MVC Frameworks 18
Конфігураційний файл Struts-фреймворку – struts-config. xml (2/2) <action Mapping (завершення) path="/remove. Contact. Action" type="com. ttp. Remove. Contact. Action"> <forward name="contact. List" path="/contact. List. jsp"/> </action> <action path="/index" type="com. ttp. Init. Action"> <forward name="contact. List" path="/contact. List. jsp"/> </action-mappings> </struts-config> Java Web MVC Frameworks 19
Конфігураційний файл Spring-фреймворку – dispatch. Servlet-servlet. xml (1/2) <? xml version="1. 0" encoding="UTF-8"? > <beans xmlns="http: //www. springframework. org/schema/beans" xmlns: xsi="http: //www. w 3. org/2001/XMLSchema-instance" xsi: schema. Location= "http: //www. springframework. org/schema/beans/springbeans-2. 5. xsd"> Mapping <bean name = "/add. Contact. Action. do" class="com. ttp. Create. Contact. Controller"> </bean> <bean name = "/remove. Contact. Action. do" class= "com. ttp. Delete. Contact. Controller"> </bean> Використовується Bean. Name. Url. Handler. Mapping <bean name="/index. do" (Handler Mapping за замовчуванням) class="com. ttp. Init. Controller"> </bean> Java Web MVC Frameworks 20
Конфігураційний файл Spring-фреймворку – dispatch. Servlet-servlet. xml (2/2) <!--- продовження ---> <bean id="view. Resolver" class="org. springframework. web. servlet. view. Internal. Resource. View. Resolver"> <property name="view. Class" value="org. springframework. web. servlet. view. Jstl. View"> </property> <property name="prefix" value="/WEB-INF/jsp/"> </property> <property name="suffix" value=". jsp"></property> </beans> Java Web MVC Frameworks 21
Класи-обробники у проекті Contacts (на основі техніки action-класів) та Struts-проекті (порівняння) public class Remove. Contact. Action implements Action { public String perform(Http. Servlet. Request request, Http. Servlet. Response response) { int contact. Id = Integer. parse. Int(request. get. Parameter("id")); Http. Session session = request. get. Session(); З проекту Contacts Contact. Service contact. Serv =(Contact. Service) (на основі техніки session. get. Attribute("contact. Service"); action-класів) contact. Serv. remove. Contact(contact. Id); session. set. Attribute("contact. Service", contact. Serv); return "/contact. List. jsp"; } public class Remove. Contact. Action extends Action { } public Action. Forward execute( Action. Mapping mapping, Action. Form form, Http. Servlet. Request request, Http. Servlet. Response response) throws Exception { return mapping. find. Forward("contact. List"); } } Java Web MVC Frameworks Struts 22
Класи-обробники у Struts- та Spring-проектах (порівняння) public class Remove. Contact. Action extends Action { public Action. Forward execute( Action. Mapping mapping, Action. Form form, Http. Servlet. Request request, Http. Servlet. Response response) throws Exception Struts { int contact. Id = Integer. parse. Int(request. get. Parameter("id")); Http. Session session = request. get. Session(); Contact. Service contact. Serv = (Contact. Service) session. get. Attribute("contact. Service"); contact. Serv. remove. Contact(contact. Id); session. set. Attribute("contact. Service", contact. Serv); return mapping. find. Forward("contact. List"); } } public class Delete. Contact. Controller implements Controller { public Model. And. View handle. Request( Http. Servlet. Request request, Http. Servlet. Response response) throws Servlet. Exception, IOException { return new Model. And. View("contact. List"); } } Java Web MVC Frameworks Spring 23
Struts class Init. Action import javax. servlet. http. Http. Session; import javax. servlet. http. Http. Servlet. Request; import javax. servlet. http. Http. Servlet. Response; import org. apache. struts. action. Action. Form; import org. apache. struts. action. Action. Forward; import org. apache. struts. action. Action. Mapping; public class Init. Action extends Action { public Action. Forward execute( Action. Mapping mapping, Action. Form form, Http. Servlet. Request request, Http. Servlet. Response response) throws Exception { return mapping. find. Forward("contact. List"); } } Java Web MVC Frameworks 24
Struts class Add. Contact. Action (1/2) import javax. servlet. http. Http. Session; import javax. servlet. http. Http. Servlet. Request; import javax. servlet. http. Http. Servlet. Response; import org. apache. struts. action. Action. Form; import org. apache. struts. action. Action. Forward; import org. apache. struts. action. Action. Mapping; public class Add. Contact. Action extends Action { protected Contact create. Contact(Http. Servlet. Request request) { Contact contact = new Contact(); contact. set. Name(request. get. Parameter("name")); contact. set. Addr(request. get. Parameter("addr")); return contact; } Java Web MVC Frameworks 25
Struts class Add. Contact. Action (2/2) public Action. Forward execute( Action. Mapping mapping, Action. Form form, Http. Servlet. Request request, Http. Servlet. Response response) throws Exception { Contact new. Contact = create. Contact(request); Http. Session session = request. get. Session(); Contact. Service contact. Serv = (Contact. Service) session. get. Attribute("contact. Service"); contact. Serv. add. Contact(new. Contact); session. set. Attribute("contact. Service", contact. Serv); return mapping. find. Forward("contact. List"); } } // end class Add. Contact. Action Java Web MVC Frameworks 26
Spring class Init. Controller package com. ttp; import java. io. IOException; import org. springframework. web. servlet. mvc. Controller; import org. springframework. web. servlet. Model. And. View; import javax. servlet. Servlet. Exception; import javax. servlet. http. Http. Servlet. Request; import javax. servlet. http. Http. Servlet. Response; public class Init. Controller implements Controller { public Model. And. View handle. Request( Http. Servlet. Request request, Http. Servlet. Response response) throws Servlet. Exception, IOException { return new Model. And. View("contact. List"); } } Java Web MVC Frameworks 27
Spring class Create. Contact. Controller (1/2) package com. ttp; import java. io. IOException; import javax. servlet. Servlet. Exception; import javax. servlet. http. Http. Servlet. Request; import javax. servlet. http. Http. Servlet. Response; import javax. servlet. http. Http. Session; import org. springframework. web. servlet. Model. And. View; import org. springframework. web. servlet. mvc. Controller; public class Create. Contact. Controller implements Controller { public Model. And. View handle. Request( Http. Servlet. Request request, Http. Servlet. Response response) throws Servlet. Exception, IOException { Java Web MVC Frameworks 28
Spring class Create. Contact. Controller (2/2) Contact new. Contact = create. Contact(request); Http. Session session = request. get. Session(); Contact. Service contact. Serv = (Contact. Service) session. get. Attribute("contact. Service"); contact. Serv. add. Contact(new. Contact); session. set. Attribute("contact. Service", contact. Serv); return new Model. And. View("contact. List"); } protected Contact create. Contact( Http. Servlet. Request request) { Contact contact = new Contact(); contact. set. Name(request. get. Parameter("name")); contact. set. Addr(request. get. Parameter("addr")); return contact; } } Java Web MVC Frameworks 29
- Slides: 29