金木研动漫图片呆萌:使用Spring MVC3构建Web应用详细教程

来源:百度文库 编辑:中财网 时间:2024/10/05 14:04:25

本文将指导大家如何使用Spring MVC3去构建一个Web应用。在Spring MVC中,所有的用户请求都会被派发到控制器模块,控制器然后再根据业务逻辑去调用数据访问层获得数据,最后通过JSP视图返回。

  在动手之前,我们先准备好我们的环境,需要的是JDK 1.5以上以及Eclipse IDE,当然还要下载最新版本的Spring 3,本文还要下载最新版本的ant,以便我们学习如何通过ant去构建应用。

  Spring MVC3构建Web应用第一步

  首先在Eclipse中利用新建菜单,建立一个Dynamic Web Project(动态Web工程),命名为SampleSpringMVC,接下来,我们要建立一个ant.xml的文件,这个文件会方便我们把做好的程序打包成war文件,这个可以有如下几步去实现:

  1、点文件—新建—文件,如下图:

  2、输入ant.xml作为文件名,并点完成。如下图:

  3、打开ant.xml文件,编辑内容如下:

#div_code img{border:0px;}1
2  
3
4  
5
6    
7    
8    
9    
10    
11    
12  
13    
14        
15                    
16                

17  
18        
19            
20        

21        
22    

23  
24    
25        Building...
26        
27        
28            
29            
30        

31    

32  
33    
34        Archiving...
35        
36            
37                
38            

39        

40    

41  
42    
43        Deploying...
44        
45            
46                
47            

48        

49    

50  
51

Spring MVC3构建Web应用第二步

  建立一个ant.properties文件,该文件会存放一些值的属性,并且这些值也会是ant.xml中用到的。请按如下步骤实现:

  1)点文件—新建-文件

  2) 将文件命名为ant.properties,并点完成,如下图:

  3)打开ant.properties,修改tomcat.home的目录为你安装tomcat的实际目录。

#div_code img{border:0px;}1tomcat.home=C:/Tools/apache-tomcat-6.0.2
2tomcat.lib=$...{tomcat.home}/lib

 

  下载下面列表的.jar文件,并放到SampleSpringMVC/war/WEB-INF/lib下。

#div_code img{border:0px;}1commons-logging.jar
2jstl-api-1.2.jar
3jstl.jar
4org.springframework.asm-3.0.5.RELEASE.jar
5org.springframework.beans-3.0.5.RELEASE.jar
6org.springframework.context-3.0.5.RELEASE.jar
7org.springframework.core-3.0.5.RELEASE.jar
8org.springframework.expression-3.0.5.RELEASE.jar
9org.springframework.web-3.0.5.RELEASE.jar
10org.springframework.web.servlet-3.0.5.RELEASE.jar
11standard.jar

 

  按如下修改web.xml:

#div_code img{border:0px;}1  
2  
34    xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
6  
7    SampleSpringMVC
8  
9    
10        SampleSpringMVC
11        org.springframework.web.servlet.DispatcherServlet
12        1
13    

14  
15    
16                SampleSpringMVC
17                *.htm
18        
    
19  
20    
21        index.jsp
22    

23  
24

 

  创建index.jsp,这个只需要在war/WEB-INF下建立即可,并且将内容设置为如下:

#div_code img{border:0px;}1<%@ page language="java" session="false" contentType="text/html; charset=UTF-8"%>
2<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
3
4    
5        Adobocode : Sample Spring MVC
6    
7    
8        

Adobocode : Hello World


9        

10        ">Person List
11    
12

Spring MVC3构建Web应用第二步

  建立一个ant.properties文件,该文件会存放一些值的属性,并且这些值也会是ant.xml中用到的。请按如下步骤实现:

  1)点文件—新建-文件

  2) 将文件命名为ant.properties,并点完成,如下图:

  3)打开ant.properties,修改tomcat.home的目录为你安装tomcat的实际目录。

#div_code img{border:0px;}1tomcat.home=C:/Tools/apache-tomcat-6.0.2
2tomcat.lib=$...{tomcat.home}/lib

 

  下载下面列表的.jar文件,并放到SampleSpringMVC/war/WEB-INF/lib下。

#div_code img{border:0px;}1commons-logging.jar
2jstl-api-1.2.jar
3jstl.jar
4org.springframework.asm-3.0.5.RELEASE.jar
5org.springframework.beans-3.0.5.RELEASE.jar
6org.springframework.context-3.0.5.RELEASE.jar
7org.springframework.core-3.0.5.RELEASE.jar
8org.springframework.expression-3.0.5.RELEASE.jar
9org.springframework.web-3.0.5.RELEASE.jar
10org.springframework.web.servlet-3.0.5.RELEASE.jar
11standard.jar

 

  按如下修改web.xml:

#div_code img{border:0px;}1  
2  
34    xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
6  
7    SampleSpringMVC
8  
9    
10        SampleSpringMVC
11        org.springframework.web.servlet.DispatcherServlet
12        1
13    

14  
15    
16                SampleSpringMVC
17                *.htm
18        
    
19  
20    
21        index.jsp
22    

23  
24

 

  创建index.jsp,这个只需要在war/WEB-INF下建立即可,并且将内容设置为如下:

#div_code img{border:0px;}1<%@ page language="java" session="false" contentType="text/html; charset=UTF-8"%>
2<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
3
4    
5        Adobocode : Sample Spring MVC
6    
7    
8        

Adobocode : Hello World


9        

10        ">Person List
11    
12

Spring MVC3构建Web应用第三步

  在SampleSpringMVC/war/WEB-INF中建立文件SampleSpringMVC-servlet.xml,并将内容修改如下:

#div_code img{border:0px;}1
2  
3
4  
56    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
7    xmlns:p="http://www.springframework.org/schema/p"
8    xmlns:context="http://www.springframework.org/schema/context"
9    xsi:schemaLocation="
10  
11http://www.springframework.org/schema/beans
12  
13http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
14  
15http://www.springframework.org/schema/context
16  
17http://www.springframework.org/schema/context/spring-context-3.0.xsd">
18  
19    
20  
21    
22  
23    
24  
25    
26  
27    
28        org.springframework.web.servlet.view.JstlView
29        /WEB-INF/jsp/
30        .jsp
31    

32  
33

 

  这里,我们利用了spring 3 mvc的新特性,自动扫描,通过context:component-scan base-package,设置了paul.syney.controller和paul.sydney.service两个包下的文件只要使用 spring 3的标准注释都可以被扫描到。

  在SampleSpringMVC/war/WEB-INF下建立目录jsp;

  在SampleSpringMVC/war/WEB-INF下建立目录classes;

  在SampleSpringMVC/war/WEB-INF/jsp下建立一个新的jsp文件叫personDisplay,并写入如下代码:

#div_code img{border:0px;}1
2  
3<%@ page language="java" session="false"
4    contentType="text/html; charset=UTF-8"%>
5<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
6  
7
8
9    
10        Adobocode : Sample Spring MVC using JSTL iteration
11    
12    
13        

Adobocode : Person List


14        
15            
16                
17                
18                
19                
20            
21            
22            

23                
29                
30                
31                
32            
33            
34        
Id Name Age Address

24                    
25                                    
26                            

27                    $...{p.id}
28                
$...{p.name} $...{p.age} $...{p.address}

35    

 

  在SampleSpringMVC/war/WEB-INF/jsp下建立一个新的jsp文件叫personForm,修改代码如下:

#div_code img{border:0px;}1  
2  
3<%@ page language="java" session="false" contentType="text/html; charset=UTF-8"%>
4<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
5<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
6
7    
8        Adobocode : Sample Spring MVC using Forms
9    
10  
11    
12        

Adobocode : Person Form


13        
14            
15            

16                
17                    
18                        
19                        
20                    
21                    
22                        
23                        
24                    
25                    
26                        
27                        
28                    
29                    
30                        
31                        
35                    
36                
Name
Age
Address

32                            
33                            
34                        

37            

38        

39    
40

Spring MVC3构建Web应用第三步

  在SampleSpringMVC/war/WEB-INF中建立文件SampleSpringMVC-servlet.xml,并将内容修改如下:

#div_code img{border:0px;}1
2  
3
4  
56    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
7    xmlns:p="http://www.springframework.org/schema/p"
8    xmlns:context="http://www.springframework.org/schema/context"
9    xsi:schemaLocation="
10  
11http://www.springframework.org/schema/beans
12  
13http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
14  
15http://www.springframework.org/schema/context
16  
17http://www.springframework.org/schema/context/spring-context-3.0.xsd">
18  
19    
20  
21    
22  
23    
24  
25    
26  
27    
28        org.springframework.web.servlet.view.JstlView
29        /WEB-INF/jsp/
30        .jsp
31    

32  
33

 

  这里,我们利用了spring 3 mvc的新特性,自动扫描,通过context:component-scan base-package,设置了paul.syney.controller和paul.sydney.service两个包下的文件只要使用 spring 3的标准注释都可以被扫描到。

  在SampleSpringMVC/war/WEB-INF下建立目录jsp;

  在SampleSpringMVC/war/WEB-INF下建立目录classes;

  在SampleSpringMVC/war/WEB-INF/jsp下建立一个新的jsp文件叫personDisplay,并写入如下代码:

#div_code img{border:0px;}1
2  
3<%@ page language="java" session="false"
4    contentType="text/html; charset=UTF-8"%>
5<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
6  
7
8
9    
10        Adobocode : Sample Spring MVC using JSTL iteration
11    
12    
13        

Adobocode : Person List


14        
15            
16                
17                
18                
19                
20            
21            
22            

23                
29                
30                
31                
32            
33            
34        
Id Name Age Address

24                    
25                                    
26                            

27                    $...{p.id}
28                
$...{p.name} $...{p.age} $...{p.address}

35    

 

  在SampleSpringMVC/war/WEB-INF/jsp下建立一个新的jsp文件叫personForm,修改代码如下:

#div_code img{border:0px;}1  
2  
3<%@ page language="java" session="false" contentType="text/html; charset=UTF-8"%>
4<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
5<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
6
7    
8        Adobocode : Sample Spring MVC using Forms
9    
10  
11    
12        

Adobocode : Person Form


13        
14            
15            

16                
17                    
18                        
19                        
20                    
21                    
22                        
23                        
24                    
25                    
26                        
27                        
28                    
29                    
30                        
31                        
35                    
36                
Name
Age
Address

32                            
33                            
34                        

37            

38        

39    
40

Spring MVC3构建Web应用第四步

  现在我们开始设计控制器,鼠标右击src目录,选择新建-包,如下图:

  并将包的名命名为paul.sydney.controller,在这个包中,新建立一个类,命名为PersonDisplay,将代码修改如下:

#div_code img{border:0px;}1  package paul.sydney.controller;
2  
3import org.springframework.beans.factory.annotation.Autowired;
4import org.springframework.stereotype.Controller;
5import org.springframework.ui.ModelMap;
6import org.springframework.web.bind.annotation.RequestMapping;
7import org.springframework.web.bind.annotation.RequestParam;
8  
9import paul.sydney.service.DummyService;
10  
11/** *//**
12 * PersonDisplay class, display controller for the 'personDisplay.jsp'
13 * Copyright : adobocode.com , 2010
14 * @author Paul Sydney Orozco | xtrycatchx@gmail.com
15 *
16 */
17@Controller
18public class PersonDisplay ...{
19  
20     private final DummyService dummyService;
21  
22    @Autowired
23    public PersonDisplay(DummyService dummyService) ...{
24        this.dummyService = dummyService;
25    }
26  
27    @RequestMapping("/personDisplay.htm")
28    public ModelMap defaultHandler() ...{
29        return new ModelMap("personList", this.dummyService.getDummyList());
30    }
31 }

 

  这里,使用注解@Controller表示这个是一个控制器,而 @RequestMapping("/personDisplay.htm")则表示对于personDisplay.htm这样的请求,使用 defaultHandler这个方法去处理。而在defaultHandler中,又调用了逻辑服务层的

  dummyService.getDummyList()方法获得人员列表,最后把列表存放到一个ModelMap中去(可以先理解为Map的一种数据结构)。

  同样地,在paul.sydney.controller包中,新建一个类PersonForm,并将代码修改如下:

#div_code img{border:0px;}1package paul.sydney.controller;
2  
3import org.springframework.beans.factory.annotation.Autowired;
4import org.springframework.stereotype.Controller;
5import org.springframework.ui.ModelMap;
6import org.springframework.validation.BindingResult;
7import org.springframework.web.bind.annotation.ModelAttribute;
8import org.springframework.web.bind.annotation.RequestMapping;
9import org.springframework.web.bind.annotation.RequestMethod;
10import org.springframework.web.bind.annotation.RequestParam;
11import org.springframework.web.bind.annotation.SessionAttributes;
12import org.springframework.web.bind.support.SessionStatus;
13  
14import paul.sydney.model.Person;
15import paul.sydney.service.DummyService;
16@Controller
17@RequestMapping("/personForm.htm")
18@SessionAttributes("person")
19public class PersonForm ...{
20  
21    private final DummyService dummyService;
22  
23    @Autowired
24    public PersonForm(DummyService dummyService) ...{
25        this.dummyService = dummyService;
26    }
27  
28    @RequestMapping(method = RequestMethod.GET)
29    public String setupForm(@RequestParam("personId") int id, ModelMap model) ...{
30        Person person = this.dummyService.retrievePerson(id);
31        model.addAttribute("person", person);
32        return "personForm";
33    }
34  
35    @RequestMapping(method = RequestMethod.POST)
36    public String processSubmit(@ModelAttribute("person") Person person, BindingResult result, SessionStatus status) ...{
37           this.dummyService.savePerson(person);
38            status.setComplete();
39            return "redirect:personDisplay.htm";
40    }
41}

 

  这里,首先通过依赖注入,注入了服务层逻辑dummyService,然后在setupForm中,根据传入的参数personId,通过服务层逻辑 dummyService找出这个人,然后将其保存到一个Model中去,返回给视图层personForm.jsp显示;而processSubmit 是调用服务层逻辑保存用户的资料(通过this.dummyService.savePerson(person)实现),最后使用redirect跳转到personDisplay.htm。

Spring MVC3构建Web应用第四步

  现在我们开始设计控制器,鼠标右击src目录,选择新建-包,如下图:

  并将包的名命名为paul.sydney.controller,在这个包中,新建立一个类,命名为PersonDisplay,将代码修改如下:

#div_code img{border:0px;}1  package paul.sydney.controller;
2  
3import org.springframework.beans.factory.annotation.Autowired;
4import org.springframework.stereotype.Controller;
5import org.springframework.ui.ModelMap;
6import org.springframework.web.bind.annotation.RequestMapping;
7import org.springframework.web.bind.annotation.RequestParam;
8  
9import paul.sydney.service.DummyService;
10  
11/** *//**
12 * PersonDisplay class, display controller for the 'personDisplay.jsp'
13 * Copyright : adobocode.com , 2010
14 * @author Paul Sydney Orozco | xtrycatchx@gmail.com
15 *
16 */
17@Controller
18public class PersonDisplay ...{
19  
20     private final DummyService dummyService;
21  
22    @Autowired
23    public PersonDisplay(DummyService dummyService) ...{
24        this.dummyService = dummyService;
25    }
26  
27    @RequestMapping("/personDisplay.htm")
28    public ModelMap defaultHandler() ...{
29        return new ModelMap("personList", this.dummyService.getDummyList());
30    }
31 }

 

  这里,使用注解@Controller表示这个是一个控制器,而 @RequestMapping("/personDisplay.htm")则表示对于personDisplay.htm这样的请求,使用 defaultHandler这个方法去处理。而在defaultHandler中,又调用了逻辑服务层的

  dummyService.getDummyList()方法获得人员列表,最后把列表存放到一个ModelMap中去(可以先理解为Map的一种数据结构)。

  同样地,在paul.sydney.controller包中,新建一个类PersonForm,并将代码修改如下:

#div_code img{border:0px;}1package paul.sydney.controller;
2  
3import org.springframework.beans.factory.annotation.Autowired;
4import org.springframework.stereotype.Controller;
5import org.springframework.ui.ModelMap;
6360docimg_501_import org.springframework.validation.BindingResult;
7360docimg_502_import org.springframework.web.bind.annotation.ModelAttribute;
8360docimg_503_import org.springframework.web.bind.annotation.RequestMapping;
9360docimg_504_import org.springframework.web.bind.annotation.RequestMethod;
10360docimg_505_import org.springframework.web.bind.annotation.RequestParam;
11360docimg_506_import org.springframework.web.bind.annotation.SessionAttributes;
12360docimg_507_import org.springframework.web.bind.support.SessionStatus;
13360docimg_508_  
14360docimg_509_import paul.sydney.model.Person;
15360docimg_510_import paul.sydney.service.DummyService;
16360docimg_511_@Controller
17360docimg_512_@RequestMapping("/personForm.htm")
18360docimg_513_@SessionAttributes("person")
19360docimg_514_360docimg_515_public class PersonForm ...{
20360docimg_516_  
21360docimg_517_    private final DummyService dummyService;
22360docimg_518_  
23360docimg_519_    @Autowired
24360docimg_520_360docimg_521_    public PersonForm(DummyService dummyService) ...{
25360docimg_522_        this.dummyService = dummyService;
26360docimg_523_    }
27360docimg_524_  
28360docimg_525_    @RequestMapping(method = RequestMethod.GET)
29360docimg_526_360docimg_527_    public String setupForm(@RequestParam("personId") int id, ModelMap model) ...{
30360docimg_528_        Person person = this.dummyService.retrievePerson(id);
31360docimg_529_        model.addAttribute("person", person);
32360docimg_530_        return "personForm";
33360docimg_531_    }
34360docimg_532_  
35360docimg_533_    @RequestMapping(method = RequestMethod.POST)
36360docimg_534_360docimg_535_    public String processSubmit(@ModelAttribute("person") Person person, BindingResult result, SessionStatus status) ...{
37360docimg_536_           this.dummyService.savePerson(person);
38360docimg_537_            status.setComplete();
39360docimg_538_            return "redirect:personDisplay.htm";
40360docimg_539_    }
41360docimg_540_}

 

  这里,首先通过依赖注入,注入了服务层逻辑dummyService,然后在setupForm中,根据传入的参数personId,通过服务层逻辑 dummyService找出这个人,然后将其保存到一个Model中去,返回给视图层personForm.jsp显示;而processSubmit 是调用服务层逻辑保存用户的资料(通过this.dummyService.savePerson(person)实现),最后使用redirect跳转到personDisplay.htm。

Spring MVC3构建Web应用第五步

  构建业务实体模型。在src目录中,新建包命名为paul.sydney.model,在这个包下,再新建一个实体类,命名为Person,修改代码如下:

#div_code img{border:0px;}1360docimg_541_ package paul.sydney.model;
2360docimg_542_  
3360docimg_543_360docimg_544_/** *//**
4360docimg_545_ * Copyright : adobocode.com , 2010
5360docimg_546_ * @author Paul Sydney Orozco | xtrycatchx@gmail.com
6360docimg_547_ */
7360docimg_548_360docimg_549_public class Person ...{
8360docimg_550_  
9360docimg_551_    private int id;
10360docimg_552_    private String name;
11360docimg_553_    private int age;
12360docimg_554_    private String address;
13360docimg_555_  
14360docimg_556_360docimg_557_    public int getId() ...{
15360docimg_558_        return id;
16360docimg_559_    }
17360docimg_560_360docimg_561_    public void setId(int id) ...{
18360docimg_562_        this.id = id;
19360docimg_563_    }
20360docimg_564_  
21360docimg_565_360docimg_566_    public String getName() ...{
22360docimg_567_        return name;
23360docimg_568_    }
24360docimg_569_360docimg_570_    public void setName(String name) ...{
25360docimg_571_        this.name = name;
26360docimg_572_    }
27360docimg_573_360docimg_574_    public int getAge() ...{
28360docimg_575_        return age;
29360docimg_576_    }
30360docimg_577_360docimg_578_    public void setAge(int age) ...{
31360docimg_579_        this.age = age;
32360docimg_580_    }
33360docimg_581_360docimg_582_    public String getAddress() ...{
34360docimg_583_        return address;
35360docimg_584_    }
36360docimg_585_360docimg_586_    public void setAddress(String address) ...{
37360docimg_587_        this.address = address;
38360docimg_588_    }
39360docimg_589_  
40360docimg_590_    @Override
41360docimg_591_360docimg_592_    public String toString()...{
42360docimg_593_        StringBuilder sb = new StringBuilder();
43360docimg_594_        sb.append("\nname : " + this.name);
44360docimg_595_        sb.append("\nage : " + this.age);
45360docimg_596_        sb.append("\naddress : " + this.address);
46360docimg_597_        return sb.toString();
47360docimg_598_  
48360docimg_599_    }
49360docimg_600_  
50360docimg_601_}

 

  构建业务逻辑层。同样在src目录下新建一个包,命名为paul.sydney.service,并且新建一个类DummyService,代码如下:

#div_code img{border:0px;}1360docimg_602_paul.sydney.service;
2360docimg_603_  
3360docimg_604_import java.util.ArrayList;
4360docimg_605_  
5360docimg_606_import paul.sydney.model.Person;
6360docimg_607_  
7360docimg_608_import java.util.List;
8360docimg_609_  
9360docimg_610_import org.springframework.stereotype.Service;
10360docimg_611_  
11360docimg_612_360docimg_613_/** *//**
12360docimg_614_ * Copyright : adobocode.com , 2010
13360docimg_615_ * @author Paul Sydney Orozco | xtrycatchx@gmail.com
14360docimg_616_ */
15360docimg_617_@Service
16360docimg_618_360docimg_619_public class DummyService ...{
17360docimg_620_  
18360docimg_621_360docimg_622_    /** *//**
19360docimg_623_     * This method supposed to be returning a Collection of Person objects from a DAO layer
20360docimg_624_     * For this tutorial, let us just hard-code this List of Person objects
21360docimg_625_     */
22360docimg_626_360docimg_627_    public List getDummyList() ...{
23360docimg_628_        List list = new ArrayList();
24360docimg_629_        Person p1 = new Person();
25360docimg_630_        p1.setId(12345);
26360docimg_631_        p1.setName("Paul");
27360docimg_632_        p1.setAge(27);
28360docimg_633_        p1.setAddress("Dalaguete, Cebu");
29360docimg_634_  
30360docimg_635_        Person p2 = new Person();
31360docimg_636_        p2.setId(54321);
32360docimg_637_        p2.setName("Sydney");
33360docimg_638_        p2.setAge(25);
34360docimg_639_        p2.setAddress("Cebu City");
35360docimg_640_  
36360docimg_641_        list.add(p1);
37360docimg_642_        list.add(p2);
38360docimg_643_        return list;
39360docimg_644_    }
40360docimg_645_  
41360docimg_646_360docimg_647_    /** *//**
42360docimg_648_     * This method supposed to be returning Person object from a DAO layer
43360docimg_649_     * For this tutorial, let us just hard-code the Person instance
44360docimg_650_     */
45360docimg_651_360docimg_652_    public Person retrievePerson(int id) ...{
46360docimg_653_        Person person = new Person();
47360docimg_654_        person.setId(56789);
48360docimg_655_        person.setName("Nikki");
49360docimg_656_        person.setAge(63);
50360docimg_657_        person.setAddress("Dalaguete, Cebu");
51360docimg_658_        return person;
52360docimg_659_    }
53360docimg_660_  
54360docimg_661_360docimg_662_    /** *//**
55360docimg_663_     * This method supposed to be persisting the passed Person object
56360docimg_664_     * For this tutorial, let us include the persisting DAO layer
57360docimg_665_     * and assume the method successful saved or updated the Person object
58360docimg_666_     */
59360docimg_667_360docimg_668_    public void savePerson(Person person) ...{
60360docimg_669_        System.out.println("\n\nSaving" + person);
61360docimg_670_    }
62360docimg_671_}

 

  在这里,只是简单的在一个List中存放了多个person对象而已。

  最后,项目的结构如下图:

360docimg_672_

  接着,我们右击ant.xml,选择Run As->Ant Build,如下图:

360docimg_673_

Spring MVC3构建Web应用第五步

  构建业务实体模型。在src目录中,新建包命名为paul.sydney.model,在这个包下,再新建一个实体类,命名为Person,修改代码如下:

#div_code img{border:0px;}1360docimg_674_ package paul.sydney.model;
2360docimg_675_  
3360docimg_676_360docimg_677_/** *//**
4360docimg_678_ * Copyright : adobocode.com , 2010
5360docimg_679_ * @author Paul Sydney Orozco | xtrycatchx@gmail.com
6360docimg_680_ */
7360docimg_681_360docimg_682_public class Person ...{
8360docimg_683_  
9360docimg_684_    private int id;
10360docimg_685_    private String name;
11360docimg_686_    private int age;
12360docimg_687_    private String address;
13360docimg_688_  
14360docimg_689_360docimg_690_    public int getId() ...{
15360docimg_691_        return id;
16360docimg_692_    }
17360docimg_693_360docimg_694_    public void setId(int id) ...{
18360docimg_695_        this.id = id;
19360docimg_696_    }
20360docimg_697_  
21360docimg_698_360docimg_699_    public String getName() ...{
22360docimg_700_        return name;
23360docimg_701_    }
24360docimg_702_360docimg_703_    public void setName(String name) ...{
25360docimg_704_        this.name = name;
26360docimg_705_    }
27360docimg_706_360docimg_707_    public int getAge() ...{
28360docimg_708_        return age;
29360docimg_709_    }
30360docimg_710_360docimg_711_    public void setAge(int age) ...{
31360docimg_712_        this.age = age;
32360docimg_713_    }
33360docimg_714_360docimg_715_    public String getAddress() ...{
34360docimg_716_        return address;
35360docimg_717_    }
36360docimg_718_360docimg_719_    public void setAddress(String address) ...{
37360docimg_720_        this.address = address;
38360docimg_721_    }
39360docimg_722_  
40360docimg_723_    @Override
41360docimg_724_360docimg_725_    public String toString()...{
42360docimg_726_        StringBuilder sb = new StringBuilder();
43360docimg_727_        sb.append("\nname : " + this.name);
44360docimg_728_        sb.append("\nage : " + this.age);
45360docimg_729_        sb.append("\naddress : " + this.address);
46360docimg_730_        return sb.toString();
47360docimg_731_  
48360docimg_732_    }
49360docimg_733_  
50360docimg_734_}

 

  构建业务逻辑层。同样在src目录下新建一个包,命名为paul.sydney.service,并且新建一个类DummyService,代码如下:

#div_code img{border:0px;}1360docimg_735_paul.sydney.service;
2360docimg_736_  
3360docimg_737_import java.util.ArrayList;
4360docimg_738_  
5360docimg_739_import paul.sydney.model.Person;
6360docimg_740_  
7360docimg_741_import java.util.List;
8360docimg_742_  
9360docimg_743_import org.springframework.stereotype.Service;
10360docimg_744_  
11360docimg_745_360docimg_746_/** *//**
12360docimg_747_ * Copyright : adobocode.com , 2010
13360docimg_748_ * @author Paul Sydney Orozco | xtrycatchx@gmail.com
14360docimg_749_ */
15360docimg_750_@Service
16360docimg_751_360docimg_752_public class DummyService ...{
17360docimg_753_  
18360docimg_754_360docimg_755_    /** *//**
19360docimg_756_     * This method supposed to be returning a Collection of Person objects from a DAO layer
20360docimg_757_     * For this tutorial, let us just hard-code this List of Person objects
21360docimg_758_     */
22360docimg_759_360docimg_760_    public List getDummyList() ...{
23360docimg_761_        List list = new ArrayList();
24360docimg_762_        Person p1 = new Person();
25360docimg_763_        p1.setId(12345);
26360docimg_764_        p1.setName("Paul");
27360docimg_765_        p1.setAge(27);
28360docimg_766_        p1.setAddress("Dalaguete, Cebu");
29360docimg_767_  
30360docimg_768_        Person p2 = new Person();
31360docimg_769_        p2.setId(54321);
32360docimg_770_        p2.setName("Sydney");
33360docimg_771_        p2.setAge(25);
34360docimg_772_        p2.setAddress("Cebu City");
35360docimg_773_  
36360docimg_774_        list.add(p1);
37360docimg_775_        list.add(p2);
38360docimg_776_        return list;
39360docimg_777_    }
40360docimg_778_  
41360docimg_779_360docimg_780_    /** *//**
42360docimg_781_     * This method supposed to be returning Person object from a DAO layer
43360docimg_782_     * For this tutorial, let us just hard-code the Person instance
44360docimg_783_     */
45360docimg_784_360docimg_785_    public Person retrievePerson(int id) ...{
46360docimg_786_        Person person = new Person();
47360docimg_787_        person.setId(56789);
48360docimg_788_        person.setName("Nikki");
49360docimg_789_        person.setAge(63);
50360docimg_790_        person.setAddress("Dalaguete, Cebu");
51360docimg_791_        return person;
52360docimg_792_    }
53360docimg_793_  
54360docimg_794_360docimg_795_    /** *//**
55360docimg_796_     * This method supposed to be persisting the passed Person object
56360docimg_797_     * For this tutorial, let us include the persisting DAO layer
57360docimg_798_     * and assume the method successful saved or updated the Person object
58360docimg_799_     */
59360docimg_800_360docimg_801_    public void savePerson(Person person) ...{
60360docimg_802_        System.out.println("\n\nSaving" + person);
61360docimg_803_    }
62360docimg_804_}

 

  在这里,只是简单的在一个List中存放了多个person对象而已。

  最后,项目的结构如下图:

360docimg_805_

  接着,我们右击ant.xml,选择Run As->Ant Build,如下图:

360docimg_806_

Spring MVC3构建Web应用第五步

  构建业务实体模型。在src目录中,新建包命名为paul.sydney.model,在这个包下,再新建一个实体类,命名为Person,修改代码如下:

#div_code img{border:0px;}1360docimg_807_ package paul.sydney.model;
2360docimg_808_  
3360docimg_809_360docimg_810_/** *//**
4360docimg_811_ * Copyright : adobocode.com , 2010
5360docimg_812_ * @author Paul Sydney Orozco | xtrycatchx@gmail.com
6360docimg_813_ */
7360docimg_814_360docimg_815_public class Person ...{
8360docimg_816_  
9360docimg_817_    private int id;
10360docimg_818_    private String name;
11360docimg_819_    private int age;
12360docimg_820_    private String address;
13360docimg_821_  
14360docimg_822_360docimg_823_    public int getId() ...{
15360docimg_824_        return id;
16360docimg_825_    }
17360docimg_826_360docimg_827_    public void setId(int id) ...{
18360docimg_828_        this.id = id;
19360docimg_829_    }
20360docimg_830_  
21360docimg_831_360docimg_832_    public String getName() ...{
22360docimg_833_        return name;
23360docimg_834_    }
24360docimg_835_360docimg_836_    public void setName(String name) ...{
25360docimg_837_        this.name = name;
26360docimg_838_    }
27360docimg_839_360docimg_840_    public int getAge() ...{
28360docimg_841_        return age;
29360docimg_842_    }
30360docimg_843_360docimg_844_    public void setAge(int age) ...{
31360docimg_845_        this.age = age;
32360docimg_846_    }
33360docimg_847_360docimg_848_    public String getAddress() ...{
34360docimg_849_        return address;
35360docimg_850_    }
36360docimg_851_360docimg_852_    public void setAddress(String address) ...{
37360docimg_853_        this.address = address;
38360docimg_854_    }
39360docimg_855_  
40360docimg_856_    @Override
41360docimg_857_360docimg_858_    public String toString()...{
42360docimg_859_        StringBuilder sb = new StringBuilder();
43360docimg_860_        sb.append("\nname : " + this.name);
44360docimg_861_        sb.append("\nage : " + this.age);
45360docimg_862_        sb.append("\naddress : " + this.address);
46360docimg_863_        return sb.toString();
47360docimg_864_  
48360docimg_865_    }
49360docimg_866_  
50360docimg_867_}

 

  构建业务逻辑层。同样在src目录下新建一个包,命名为paul.sydney.service,并且新建一个类DummyService,代码如下:

#div_code img{border:0px;}1360docimg_868_paul.sydney.service;
2360docimg_869_  
3360docimg_870_import java.util.ArrayList;
4360docimg_871_  
5360docimg_872_import paul.sydney.model.Person;
6360docimg_873_  
7360docimg_874_import java.util.List;
8360docimg_875_  
9360docimg_876_import org.springframework.stereotype.Service;
10360docimg_877_  
11360docimg_878_360docimg_879_/** *//**
12360docimg_880_ * Copyright : adobocode.com , 2010
13360docimg_881_ * @author Paul Sydney Orozco | xtrycatchx@gmail.com
14360docimg_882_ */
15360docimg_883_@Service
16360docimg_884_360docimg_885_public class DummyService ...{
17360docimg_886_  
18360docimg_887_360docimg_888_    /** *//**
19360docimg_889_     * This method supposed to be returning a Collection of Person objects from a DAO layer
20360docimg_890_     * For this tutorial, let us just hard-code this List of Person objects
21360docimg_891_     */
22360docimg_892_360docimg_893_    public List getDummyList() ...{
23360docimg_894_        List list = new ArrayList();
24360docimg_895_        Person p1 = new Person();
25360docimg_896_        p1.setId(12345);
26360docimg_897_        p1.setName("Paul");
27360docimg_898_        p1.setAge(27);
28360docimg_899_        p1.setAddress("Dalaguete, Cebu");
29360docimg_900_  
30360docimg_901_        Person p2 = new Person();
31360docimg_902_        p2.setId(54321);
32360docimg_903_        p2.setName("Sydney");
33360docimg_904_        p2.setAge(25);
34360docimg_905_        p2.setAddress("Cebu City");
35360docimg_906_  
36360docimg_907_        list.add(p1);
37360docimg_908_        list.add(p2);
38360docimg_909_        return list;
39360docimg_910_    }
40360docimg_911_  
41360docimg_912_360docimg_913_    /** *//**
42360docimg_914_     * This method supposed to be returning Person object from a DAO layer
43360docimg_915_     * For this tutorial, let us just hard-code the Person instance
44360docimg_916_     */
45360docimg_917_360docimg_918_    public Person retrievePerson(int id) ...{
46360docimg_919_        Person person = new Person();
47360docimg_920_        person.setId(56789);
48360docimg_921_        person.setName("Nikki");
49360docimg_922_        person.setAge(63);
50360docimg_923_        person.setAddress("Dalaguete, Cebu");
51360docimg_924_        return person;
52360docimg_925_    }
53360docimg_926_  
54360docimg_927_360docimg_928_    /** *//**
55360docimg_929_     * This method supposed to be persisting the passed Person object
56360docimg_930_     * For this tutorial, let us include the persisting DAO layer
57360docimg_931_     * and assume the method successful saved or updated the Person object
58360docimg_932_     */
59360docimg_933_360docimg_934_    public void savePerson(Person person) ...{
60360docimg_935_        System.out.println("\n\nSaving" + person);
61360docimg_936_    }
62360docimg_937_}

 

  在这里,只是简单的在一个List中存放了多个person对象而已。

  最后,项目的结构如下图:

360docimg_938_

  接着,我们右击ant.xml,选择Run As->Ant Build,如下图:

360docimg_939_

Spring MVC3构建Web应用第五步

  构建业务实体模型。在src目录中,新建包命名为paul.sydney.model,在这个包下,再新建一个实体类,命名为Person,修改代码如下:

#div_code img{border:0px;}1360docimg_940_ package paul.sydney.model;
2360docimg_941_  
3360docimg_942_360docimg_943_/** *//**
4360docimg_944_ * Copyright : adobocode.com , 2010
5360docimg_945_ * @author Paul Sydney Orozco | xtrycatchx@gmail.com
6360docimg_946_ */
7360docimg_947_360docimg_948_public class Person ...{
8360docimg_949_  
9360docimg_950_    private int id;
10360docimg_951_    private String name;
11360docimg_952_    private int age;
12360docimg_953_    private String address;
13360docimg_954_  
14360docimg_955_360docimg_956_    public int getId() ...{
15360docimg_957_        return id;
16360docimg_958_    }
17360docimg_959_360docimg_960_    public void setId(int id) ...{
18360docimg_961_        this.id = id;
19360docimg_962_    }
20360docimg_963_  
21360docimg_964_360docimg_965_    public String getName() ...{
22360docimg_966_        return name;
23360docimg_967_    }
24360docimg_968_360docimg_969_    public void setName(String name) ...{
25360docimg_970_        this.name = name;
26360docimg_971_    }
27360docimg_972_360docimg_973_    public int getAge() ...{
28360docimg_974_        return age;
29360docimg_975_    }
30360docimg_976_360docimg_977_    public void setAge(int age) ...{
31360docimg_978_        this.age = age;
32360docimg_979_    }
33360docimg_980_360docimg_981_    public String getAddress() ...{
34360docimg_982_        return address;
35360docimg_983_    }
36360docimg_984_360docimg_985_    public void setAddress(String address) ...{
37360docimg_986_        this.address = address;
38360docimg_987_    }
39360docimg_988_  
40360docimg_989_    @Override
41360docimg_990_360docimg_991_    public String toString()...{
42360docimg_992_        StringBuilder sb = new StringBuilder();
43360docimg_993_        sb.append("\nname : " + this.name);
44360docimg_994_        sb.append("\nage : " + this.age);
45360docimg_995_        sb.append("\naddress : " + this.address);
46360docimg_996_        return sb.toString();
47360docimg_997_  
48360docimg_998_    }
49360docimg_999_  
50360docimg_1000_}

 

  构建业务逻辑层。同样在src目录下新建一个包,命名为paul.sydney.service,并且新建一个类DummyService,代码如下:

#div_code img{border:0px;}1360docimg_1001_paul.sydney.service;
2360docimg_1002_  
3360docimg_1003_import java.util.ArrayList;
4360docimg_1004_  
5360docimg_1005_import paul.sydney.model.Person;
6360docimg_1006_  
7360docimg_1007_import java.util.List;
8360docimg_1008_  
9360docimg_1009_import org.springframework.stereotype.Service;
10360docimg_1010_  
11360docimg_1011_360docimg_1012_/** *//**
12360docimg_1013_ * Copyright : adobocode.com , 2010
13360docimg_1014_ * @author Paul Sydney Orozco | xtrycatchx@gmail.com
14360docimg_1015_ */
15360docimg_1016_@Service
16360docimg_1017_360docimg_1018_public class DummyService ...{
17360docimg_1019_  
18360docimg_1020_360docimg_1021_    /** *//**
19360docimg_1022_     * This method supposed to be returning a Collection of Person objects from a DAO layer
20360docimg_1023_     * For this tutorial, let us just hard-code this List of Person objects
21360docimg_1024_     */
22360docimg_1025_360docimg_1026_    public List getDummyList() ...{
23360docimg_1027_        List list = new ArrayList();
24360docimg_1028_        Person p1 = new Person();
25360docimg_1029_        p1.setId(12345);
26360docimg_1030_        p1.setName("Paul");
27360docimg_1031_        p1.setAge(27);
28360docimg_1032_        p1.setAddress("Dalaguete, Cebu");
29360docimg_1033_  
30360docimg_1034_        Person p2 = new Person();
31360docimg_1035_        p2.setId(54321);
32360docimg_1036_        p2.setName("Sydney");
33360docimg_1037_        p2.setAge(25);
34360docimg_1038_        p2.setAddress("Cebu City");
35360docimg_1039_  
36360docimg_1040_        list.add(p1);
37360docimg_1041_        list.add(p2);
38360docimg_1042_        return list;
39360docimg_1043_    }
40360docimg_1044_  
41360docimg_1045_360docimg_1046_    /** *//**
42360docimg_1047_     * This method supposed to be returning Person object from a DAO layer
43360docimg_1048_     * For this tutorial, let us just hard-code the Person instance
44360docimg_1049_     */
45360docimg_1050_360docimg_1051_    public Person retrievePerson(int id) ...{
46360docimg_1052_        Person person = new Person();
47360docimg_1053_        person.setId(56789);
48360docimg_1054_        person.setName("Nikki");
49360docimg_1055_        person.setAge(63);
50360docimg_1056_        person.setAddress("Dalaguete, Cebu");
51360docimg_1057_        return person;
52360docimg_1058_    }
53360docimg_1059_  
54360docimg_1060_360docimg_1061_    /** *//**
55360docimg_1062_     * This method supposed to be persisting the passed Person object
56360docimg_1063_     * For this tutorial, let us include the persisting DAO layer
57360docimg_1064_     * and assume the method successful saved or updated the Person object
58360docimg_1065_     */
59360docimg_1066_360docimg_1067_    public void savePerson(Person person) ...{
60360docimg_1068_        System.out.println("\n\nSaving" + person);
61360docimg_1069_    }
62360docimg_1070_}

 

  在这里,只是简单的在一个List中存放了多个person对象而已。

  最后,项目的结构如下图:

360docimg_1071_

  接着,我们右击ant.xml,选择Run As->Ant Build,如下图:

360docimg_1072_

Spring MVC3构建Web应用第六步

  接着在编辑对话菜单中,记得选择build,war-archiving及deploy,如下图:

360docimg_1073_

  最后点RUN,运行脚本,然后我们就可以在浏览器中运行了,如下图:

360docimg_1074_

  点Person List,可以看到如下的人员列表:

360docimg_1075_

  点其中的一个ID,可以进入如下页面:

360docimg_1076_

  这里可以修改个人信息,并点保存,跳转到人员列表页面,并可以看到所做的更改。

  总结:

  Spring MVC3中大量使用了注解去简化了编程,本文只是做了一个初步入门的导学。

Spring MVC3构建Web应用第六步

  接着在编辑对话菜单中,记得选择build,war-archiving及deploy,如下图:

360docimg_1077_

  最后点RUN,运行脚本,然后我们就可以在浏览器中运行了,如下图:

360docimg_1078_

  点Person List,可以看到如下的人员列表:

360docimg_1079_

  点其中的一个ID,可以进入如下页面:

360docimg_1080_

  这里可以修改个人信息,并点保存,跳转到人员列表页面,并可以看到所做的更改。

  总结:

  Spring MVC3中大量使用了注解去简化了编程,本文只是做了一个初步入门的导学。