




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、使用SpringMVC3构建Web应用详细教程2010年12月29日00:00 it168网站原创 作者:廖煜嵘/译 编辑:董建伟 评论:5条本文 Tag: Java 开发 Java Spring web 开发 Java 框架【IT168应用】本文将指导大家如何使用Spring MVC3去构建一个Web应用。在Spring MVC中, 所有的用户请求都会被派发到控制器模块,控制器然后再根据业务逻辑去调用数据访问层获得数据, 最后通过JSP视图返回。在动手之前,我们先准备好我们的环境,需要的是JDK 1.5以上以及Eclipse IDE,当然还要下 载最新版本的Spring 3,本文还要下载最新
2、版本的ant,以便我们学习如何通过ant去构建应用。Spring MVC3构建Web应用第一步首先在Eclipse中利用新建菜单,建立一个Dynamic Web Project(动态Web工程),命名为 SampleSpringMVC,接下来,我们要建立一个ant.xml的文件,这个文件会方便我们把做好的程序打包 成war文件,这个可以有如下几步去实现:1、点文件一新建一文件,如下图:PrintEdit Source Re factor Navigate Search Project Run Window HelpOpenFfe,. Jav-s ProjectProject-Mow* Rena
3、me,ReFresbCchvfirt Line Delimiters ToSwitch WorkspaceRestJfftImportCtrH-W,l牛5PackageInterfaceEnumAnnotatkjnSource FelderJava Wcwlkinfl SetFolderk Untitled Text File:JUnitlectCasze砾馆沔克惭S喙道w用w.加LJizm顷 ffc IJUt+ShiFt-W2、输入ant.xml作为文件名,并点完成。如下图:12345678910111213141516171819202122233、打开ant.xml文件,编辑内容如下:2
4、4252627282930313233343536373839404142434445464748495051target name=build description=Compile main source tree java filesBuilding.Archiving.war destfile=$name.war webxml=$war.dir/WEBTNF/web.xml”Deploying.Spring MVC3构建Web应用第二步建立一个perties文件,该文件会存放一些值的属性,并且这些值也会是ant.xml中用 到的。请按如下步骤头现:1)点文件一新建-文件2)将文件命名为
5、perties,并点完成,如下图:3)打开perties,修改tomcat.home的目录为你安装tomcat的实际目录。tomcat.home=C:/Tools/apache-tomcat-6.0.2tomcat.lib=$tomcat.home/lib下载下面列表的.jar文件,并放到SampleSpringMVC/war/WEB-INF/lib下。commons-logging.jarjstl-api-1.2.jarjstl.jarorg.springframework.asm-3.0.5.RELEASE.jarorg.springframework.beans-3.0.5.RELEAS
6、E.jarorg.springframework.context-3.0.5.RELEASE.jarorg.springframework.core-3.0.5.RELEASE.jarorg.springframework.expression-3.0.5.RELEASE.jarorg.springframework.web-3.0.5.RELEASE.jarorg.springframework.web.servlet-3.0.5.RELEASE.jarstandard.jar按如下修改web.xml:267SampleSpringMVC8SampleSpringMVCorg.springf
7、ramework.web.servlet.DispatcherServlet114SampleSpringMVC*.htm19index.jsp2324 创建index.jsp,这个只需要在war/WEB-INF下建立即可,并且将内容设置为如下:Adobocode : Sample Spring MVCAdobocode : Hello Worlda href=Person ListSpring MVC3构建Web应用第三步在 SampleSpringMVC/war/WEB-INF 中建立文件 SampleSpringMVC-servlet.xml,并将内容修改如 下:1 2418 2021
8、22242526org.springframework.web.servlet.view.JstlView/WEB-INF/jsp/.jsp3233 这里,我们利用了 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 下建立目录
9、classes;在 SampleSpringMVC/war/WEB-INF/jsp 下建立一个新的 jsp 文件叫 personDisplay,并写入如下 代码:1 27891011121314151617181920212223242526272829303132333435123456789101112Adobocode : Sample Spring MVC using JSTL iterationAdobocode : Person ListIdNameAgeAddressa href=$p.id=1 ,一, $p.age$p.address在SampleSpringMVC/war/W
10、EB-INF/jsp下建立一个新的jsp文件叫personForm,修改代码如下:Adobocode : Sample Spring MVC using FormsAdobocode : Person FormNameAgeAddressSpring MVC3构建Web应用第四步现在我们开始设计控制器,鼠标右击src目录,选择新建-包,如下图:Edit Source Refactor Navigate Search Project Run Window HelpPackage ExplorerHierarchypersonDisply.jsp巨pers.onForrn.)3 SampleSpr
11、ingMVE+竺:& 3出 :HV Go IntorOpen in New Window Open Type HierarchyF4Show In aAlt+ShiFt+W1iaTi 1 Qrl+C你的,New云 CI355 InterFace簸利腕频道 HYPERLINK Java ProjectPraject,并将包的名命名为paul.sydney.controller,在这个包中,新建立一个类,命名为PersonDisplay, 将代码修改如下:package paul.sydney.controller;importimportimportimportimportorg.springf
12、ramework.beans.factory.annotation.Autowired;org.springframework.stereotype.Controller;org.springframework.ui.ModelMap;org.springframework.web.bind.annotation.RequestMapping;org.springframework.web.bind.annotation.RequestParam;paul.sydney.service.DummyService;import1011 日/*PersonDisplay class, displa
13、y controller for the personDisplay.jspCopyright : , 2010author Paul Sydney Orozco | HYPERLINK mailto:xtrycatchx xtrycatchx1213141516*/Controller18日public class PersonDisplay (171920private final DummyService dummyService;2122Autowired232425public PersonDisplay(DummyService dummyService) ( this.dummy
14、Service = dummyService;262728RequestMapping(/personDisplay.htm) public ModelMap defaultHandler() (123456789101112131415161718192021222324252627282930313233342930return new ModelMap(personList”, this.dummyService.getDummyList(); 这里,使用注解Controller表示这个是一个控制器,而RequestMapping(/personDisplay.htm)则表示对于 per
15、sonDisplay.htm 这样的请求,使用 defaultHandler这个方法去处理。而在defaultHandler中,又调用了逻辑服务层的dummyService.getDummyList()方法获得人员列表,最后把列表存放到一个ModelMap中去(可以 先理解为Map的一种数据结构)。同样地,在paul.sydney.controller包中,新建一个类PersonForm,并将代码修改如下: package paul.sydney.controller;import org.springframework.beans.factory.annotation.Autowired;i
16、mport org.springframework.stereotype.Controller;import org.springframework.ui.ModelMap;import org.springframework.validation.BindingResult;import org.springframework.web.bind.annotation.ModelAttribute;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.a
17、nnotation.RequestMethod;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.SessionAttributes;import org.springframework.web.bind.support.SessionStatus;paul.sydney.model.Person;paul.sydney.service.DummyService;importimportControllerRequestMappin
18、g(/personForm.htm)SessionAttributes(person)public class PersonForm (private final DummyService dummyService;Autowiredpublic PersonForm(DummyService dummyService) ( this.dummyService = dummyService; RequestMapping(method = RequestMethod.GET)public String setupForm(RequestParam(personId) int id, Model
19、Map model) (Person person = this.dummyService.retrievePerson(id);model.addAttribute(person”, person);return personForm;RequestMapping(method = RequestMethod.POST)public String processSubmit(ModelAttribute(person) Person person, BindingResult result,IIISessionStatus status) (this.dummyService.savePer
20、son(person);status.setComplete();return redirectipersonDisplay.htm;40L41这里,首先通过依赖注入,注入了服务层逻辑dummyService,然后在setupForm中,根据传入 的参数personId,通过服务层逻辑dummyService找出这个人,然后将其保存到一个Model中去,返 回给视图层personForm.jsp显示;而processSubmit是调用服务层逻辑保存用户的资料(通过 this.dummyService.savePerson(person)实现),最后使用 redirect 跳转到 personD
21、isplay.htm。Spring MVC3构建Web应用第五步构建业务实体模型。在src目录中,新建包命名为paul.sydney.model,在这个包下,再新建一 个实体类,命名为Person,修改代码如下:package paul.sydney.model;日/*I * Copyright : , 2010* author Paul Sydney Orozco | HYPERLINK mailto:xtrycatchx xtrycatchx*/7日public class Person (8I private int id;IprivateString name;privateint a
22、ge;privateString address;1314卓public int getId() (return id; TOC o 1-5 h z 17卓 public void setId(int id) (this.id = id;IpublicString getName()(return name;publicvoid setName(String name) ( = name;publicint getAge() (卜申卜申卜 L$L L890123456789012345678902 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5retur
23、n age;public void setAge(int age) ( this.age = age;public String getAddress() ( return address;public void setAddress(String address) ( this.address = address;Overridepublic String toString()(StringBuilder sb = new StringBuilder(); sb.append(nname : + ); sb.append(nage : + this.age); sb.append(naddr
24、ess : + this.address); return sb.toString();构建业务逻辑层。同样在src目录下新建一个包,命名为paul.sydney.service,并且新建一个 类DummyService,代码如下:paul.sydney.service;3 import java.util.ArrayList; import paul.sydney.model.Person;6import java.util.List;:import org_rkrvice;10日/*I * Copyright : , 2010* author Paul Sydney Orozco | HY
25、PERLINK mailto:xtrycatchx xtrycatchx*/Servicepublic class DummyService (1718 早 /*19* This method supposed to be returning a Collection of Person objects from a DAO layerI * For this tutorial, let us just hard-code this List of Person objects卜 */22$ public List getDummyList() (IList list = new ArrayL
26、ist();IPerson p1 = new Person();Ip1.setId(12345);Ip1.setName(Paul);Ip1.setAge(27);Ip1.setAddress(Dalaguete, Cebu);IIPerson p2 = new Person();Ip2.setId(54321);Ip2.setName(Sydney);Ip2.setAge(25);Ip2.setAddress(Cebu City);IIlist.add(p1);Ilist.add(p2);Ireturn list;39卜40 I41424344 I45字4647IIIIIIE55565758
27、 I59字60/*This method supposed to be returning Person object from a DAO layerFor this tutorial, let us just hard-code the Person instance*/public Person retrievePerson(int id) (Person person = new Person();person.setId(56789);person.setName(Nikki);person.setAge(63);person.setAddress(Dalaguete, Cebu);
28、return person;/* This method supposed to be persisting the passed Person objectFor this tutorial, let us include the persisting DAO layerand assume the method successful saved or updated the Person object*/public void savePerson(Person person) (out.61卜62 在这里,只是简单的在一个List中存放了多个person对象而已。最后,项目的结构如下图:
29、h 卜忙冲hf|-2ZZ Sample Spr in gMVC :paul sydney.icontroller 十! Per sonD is pl ay. java f Per sonForm.javai &-e paul ydne/.modelPerson.javs白甲paul .Sydney+ DunrimySe t;vice .java+ JRE System Library 输成 i Web App Libraries& build- war- & MET A-I NFMANIFEST. MF白,狩 WEB-INF classes| | w.servicepers OnDisplay
30、 .jsp personForn.jspB-& lib4commons-logging, jarjstl-spi-l.S.jar jstl.jarI cirg.springFrannerk.asm-S.0.5.RELEASE.jar srg.springFramewQrkbeans-SiO5,RELEA5E小rI cirg.sprinqFramewpjlconteX3.0.5.RELEASE.jararg. sprinqFram 已r 段cor 已:3.0.5.RELEA5E.ja rarg.springFrsmeworfe;expreseion-3.0.5.RELEA5E.jar;arg.springFramework.w日bk3.0.5.RELEASE.jar&rq.sgringF总暗ww爸血mb.servlet-.0.5.RELEASE .jar standard, jarSampleS pringMV Cser.vlet. xml m- v?eb.xml- 园 index.jspU pertiesanLxml你的技
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《机器学习技术应用》课件-pro1-1-1 校园消费数据分析流程的设计
- 《行业会计实务》课件-项目四 4.4.2 周转房的核算
- 吻合口溃疡的临床护理
- 组织新质生产力活动
- 2025年二手车交易合同范本
- 2025年监理工程师之合同管理综合检测试卷B卷含答案
- 2025年一级建造师之一建矿业工程实务押题练习试题A卷含答案
- 2025年房地产经纪人之业务操作基础试题库和答案要点
- 2025中外合作企业合同及章程详解
- 顺向型房室折返性心动过速的临床护理
- 深度学习赋能:单幅图像超分辨率重建算法的探索与突破
- 生物制药质量标准研究-深度研究
- 2024年云南师范大学实验中学招聘考试真题
- 铸造行业安全培训课件
- 2025年电力人工智能多模态大模型创新技术及应用报告-西安交通大学
- 应急物业合同范本
- 企业变更 备案 申请书
- 人教部编版八年级道德与法治上册:8.2《坚持国家利益至上》听课评课记录3
- 《“长赐”轮搁浅苏伊士运河事故探析及预防对策探究》7700字
- 2025年天翼云高级运维工程师认证参考试题库(含答案)
- 2025届甘肃省定西市安定区中考生物对点突破模拟试卷含解析
评论
0/150
提交评论