ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:25.12KB ,
资源ID:16440995      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/16440995.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(使用Spring 25基于注解驱动的Spring MVCWord格式.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

使用Spring 25基于注解驱动的Spring MVCWord格式.docx

1、RequestMapping(/forum.do)publicclassBbtForumControllerAutowiredprivateBbtForumServicebbtForumService;RequestMapping/publicStringlistAllBoard()bbtForumService.getAllBoard();System.out.println(calllistAllBoardmethod.);returnlistBoard;从上面代码中,我们可以看出 BbtForumController 和一般的类并没有区别,它没有实现任何特殊的接口,因而是一个地道的 PO

2、JO。让这个 POJO 与众不同的魔棒就是 Spring MVC 的注解!在 处使用了两个注解,分别是 Controller 和 RequestMapping。在“使用 Spring 2.5 基于注解驱动的 IoC” 这篇文章里,笔者曾经指出过 Controller、Service 以及 Repository 和 Component 注解的作用是等价的:将一个类成为 Spring 容器的 Bean。由于 Spring MVC 的 Controller 必须事先是一个 Bean,所以 Controller 注解是不可缺少的。真正让 BbtForumController 具备 Spring MVC

3、 Controller 功能的是 RequestMapping 这个注解。RequestMapping 可以标注在类定义处,将 Controller 和特定请求关联起来;还可以标注在方法签名处,以便进一步对请求进行分流。在 处,我们让 BbtForumController 关联“/forum.do”的请求,而 处,我们具体地指定 listAllBoard() 方法来处理请求。所以在类声明处标注的 RequestMapping 相当于让 POJO 实现了 Controller 接口,而在方法定义处的 RequestMapping 相当于让 POJO 扩展 Spring 预定义的 Controll

4、er(如 SimpleFormController 等)。为了让基于注解的 Spring MVC 真正工作起来,需要在 Spring MVC 对应的 xxx-servlet.xml 配置文件中做一些手脚。在此之前,还是先来看一下 web.xml 的配置吧:清单 2. web.xml:启用 Spring 容器和 Spring MVC 框架web-appxmlns=xmlns:xsi=http:/www.w3.org/2001/XMLSchema-instancexsi:schemaLocation=version=2.5SpringAnnotationMVCSample!-Spring服务层的配

5、置文件-context-paramcontextConfigLocationparam-valueclasspath:applicationContext.xml/context-param-Spring容器启动监听器-listenerlistener-classorg.springframework.web.context.ContextLoaderListener/listener-class/listener-SpringMVC的Servlet,它将加载WEB-INF/annomvc-servlet.xml的配置文件,以启动SpringMVC模块-servletservlet-namea

6、nnomvcservlet-classorg.springframework.web.servlet.DispatcherServlet/servlet-classload-on-startup2/servletservlet-mappingurl-pattern*.do/servlet-mapping/web-appweb.xml 中定义了一个名为 annomvc 的 Spring MVC 模块,按照 Spring MVC 的契约,需要在 WEB-INF/annomvc-servlet.xml 配置文件中定义 Spring MVC 模块的具体配置。annomvc-servlet.xml 的配

7、置内容如下所示:清单 3. annomvc-servlet.xmlbeansxmlns=/www.springframework.org/schema/beansp=/www.springframework.org/schema/pcontext=/www.springframework.org/schema/context/www.springframework.org/schema/beanshttp:/www.springframework.org/schema/beans/spring-beans-2.5.xsd/www.springframework.org/schema/conte

8、xt/www.springframework.org/schema/context/spring-context-2.5.xsd-:对web包中的所有类进行扫描,以完成Bean创建和自动依赖注入的功能-context:component-scanbase-package=com.baobaotao.web/-:启动SpringMVC的注解功能,完成请求和注解POJO的映射-beanclass=org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter-:对模型视图名称的解析,即在模型视图名称添加前后

9、缀-org.springframework.web.servlet.view.InternalResourceViewResolverp:prefix=/WEB-INF/jsp/p:suffix=.jsp/beans因为 Spring 所有功能都在 Bean 的基础上演化而来,所以必须事先将 Controller 变成 Bean,这是通过在类中标注 Controller 并在 annomvc-servlet.xml 中启用组件扫描机制来完成的,如 所示。在 处,配置了一个 AnnotationMethodHandlerAdapter,它负责根据 Bean 中的 Spring MVC 注解对 B

10、ean 进行加工处理,使这些 Bean 变成控制器并映射特定的 URL 请求。而 处的工作是定义模型视图名称的解析规则,这里我们使用了 Spring 2.5 的特殊命名空间,即 p 命名空间,它将原先需要通过 元素配置的内容转化为 属性配置,在一定程度上简化了 的配置。启动 Tomcat,发送 http:/localhost/forum.do URL 请求,BbtForumController 的 listAllBoard() 方法将响应这个请求,并转向 WEB-INF/jsp/listBoard.jsp 的视图页面。让一个 Controller 处理多个 URL 请求在低版本的 Spring

11、 MVC 中,我们可以通过继承 MultiActionController 让一个 Controller 处理多个 URL 请求。使用 RequestMapping 注解后,这个功能更加容易实现了。请看下面的代码:清单 3. 每个请求处理参数对应一个 URLControllerRequestMapping(/listAllBoard.do)/listBoardTopic.dopublicStringlistBoardTopic(inttopicId)bbtForumService.getBoardTopics(topicId);calllistBoardTopicmethod.listTopi

12、c在这里,我们分别在 和 处为 listAllBoard() 和 listBoardTopic() 方法标注了 RequestMapping 注解,分别指定这两个方法处理的 URL 请求,这相当于将 BbtForumController 改造为 MultiActionController。这样 /listAllBoard.do 的 URL 请求将由 listAllBoard() 负责处理,而 /listBoardTopic.do?topicId=1 的 URL 请求则由 listBoardTopic() 方法处理。对于处理多个 URL 请求的 Controller 来说,我们倾向于通过一个 U

13、RL 参数指定 Controller 处理方法的名称(如 method=listAllBoard),而非直接通过不同的 URL 指定 Controller 的处理方法。使用 RequestMapping 注解很容易实现这个常用的需求。来看下面的代码:清单 4. 一个 Controller 对应一个 URL,由请求参数决定请求处理方法/bbtForum.do指定控制器对应URL请求/如果URL请求中包括method=listAllBoard的参数,由本方法进行处理RequestMapping(params=如果URL请求中包括method=listBoardTopic在类定义处标注的 Reque

14、stMapping 让 BbtForumController 处理所有包含 /bbtForum.do 的 URL 请求,而 BbtForumController 中的请求处理方法对 URL 请求的分流规则在 和 处定义分流规则按照 URL 的 method 请求参数确定。所以分别在类定义处和方法定义处使用 RequestMapping 注解,就可以很容易通过 URL 参数指定 Controller 的处理方法了。RequestMapping 注解中除了 params 属性外,还有一个常用的属性是 method,它可以让 Controller 方法处理特定 HTTP 请求方式的请求,如让一个方法

15、处理 HTTP GET 请求,而另一个方法处理 HTTP POST 请求,如下所示:清单 4. 让请求处理方法处理特定的 HTTP 请求方法method=createTopic,method=RequestMethod.POST)publicStringcreateTopic()callcreateTopicmethod.createTopic这样只有当 /bbtForum.do?method=createTopic 请求以 HTTP POST 方式提交时,createTopic() 方法才会进行处理。处理方法入参如何绑定 URL 参数按契约绑定Controller 的方法标注了 Reques

16、tMapping 注解后,它就能处理特定的 URL 请求。我们不禁要问:请求处理方法入参是如何绑定 URL 参数的呢?在回答这个问题之前先来看下面的代码:清单 5. 按参数名匹配进行绑定/topicId入参是如何绑定URL请求参数的?当我们发送 http:/localhost/bbtForum.do?method=listBoardTopic&topicId=10 的 URL 请求时,Spring 不但让 listBoardTopic() 方法处理这个请求,而且还将 topicId 请求参数在类型转换后绑定到 listBoardTopic() 方法的 topicId 入参上。而 listBoa

17、rdTopic() 方法的返回类型是 String,它将被解析为逻辑视图的名称。也就是说 Spring 在如何给处理方法入参自动赋值以及如何将处理方法返回值转化为 ModelAndView 中的过程中存在一套潜在的规则,不熟悉这个规则就不可能很好地开发基于注解的请求处理方法,因此了解这个潜在规则无疑成为理解 Spring MVC 框架基于注解功能的核心问题。我们不妨从最常见的开始说起:请求处理方法入参的类型可以是 Java 基本数据类型或 String 类型,这时方法入参按参数名匹配的原则绑定到 URL 请求参数,同时还自动完成 String 类型的 URL 请求参数到请求处理方法参数类型的转

18、换。下面给出几个例子:listBoardTopic(int topicId):和 topicId URL 请求参数绑定;listBoardTopic(int topicId,String boardName):分别和 topicId、boardName URL 请求参数绑定;特别的,如果入参是基本数据类型(如 int、long、float 等),URL 请求参数中一定要有对应的参数,否则将抛出 TypeMismatchException 异常,提示无法将 null 转换为基本数据类型。另外,请求处理方法的入参也可以一个 JavaBean,如下面的 User 对象就可以作为一个入参:清单 6. User.java:一个 JavaBeanpackagecom.b

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1