金木研动漫图片呆萌:使用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;}12
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
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.22tomcat.lib=$...{tomcat.home}/lib
下载下面列表的.jar文件,并放到SampleSpringMVC/war/WEB-INF/lib下。
#div_code img{border:0px;}1commons-logging.jar2jstl-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;}12
3
5 xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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
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.22tomcat.lib=$...{tomcat.home}/lib
下载下面列表的.jar文件,并放到SampleSpringMVC/war/WEB-INF/lib下。
#div_code img{border:0px;}1commons-logging.jar2jstl-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;}12
3
5 xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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
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;}12
3
4
5
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
29
30
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;}12
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
11
12
13
Adobocode : Person List
14
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;}12
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
9
10
11
12
Adobocode : Person Form
13
14
15
38
39
40
Spring MVC3构建Web应用第三步
在SampleSpringMVC/war/WEB-INF中建立文件SampleSpringMVC-servlet.xml,并将内容修改如下:
#div_code img{border:0px;}12
3
4
5
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
29
30
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;}12
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
11
12
13
Adobocode : Person List
14
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;}12
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
9
10
11
12
Adobocode : Person Form
13
14
15
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
23360docimg_628_ List
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
23360docimg_761_ List
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
23360docimg_894_ List
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
23360docimg_1027_ List
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中大量使用了注解去简化了编程,本文只是做了一个初步入门的导学。