基于注解的SpringMVC简单介绍_第1页
基于注解的SpringMVC简单介绍_第2页
基于注解的SpringMVC简单介绍_第3页
基于注解的SpringMVC简单介绍_第4页
基于注解的SpringMVC简单介绍_第5页
免费预览已结束,剩余5页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、SpringMVC是一个基于DispatcherServlet的MVC框架,每一个请求最先访问的都 是 DispatcherServlet,DispatcherServlet 负责转发每一个 Request 请求给相应的 Handler, Handler处理 以后再返回相应的视图(View)和模型(Model),返回的视图和 模型都可以不指定,即可以只返回 Model或只返回View或都不返回。DispatcherServlet 是继承自 HttpServlet 的,既然 SpringMVC 是基于DispatcherServlet 的, 那么我们先来配置一下 DispatcherServle

2、t ,好让它能 够管理 我们希望它管理的内容。 HttpServlet 是在 web.xml 文件中声明 的。01 02 blog 03 0 org.springframework.web.servlet.DispatcherServlet4 05 106 07 08 blog 09 10 *.do 11 上面声明了一个名 为blog的DispatcherServlet,该Servlet将处理所有以“ .do结尾 的请求。在初始化DispatcherServlet的时候,SpringMVC默认会到/WEB-INF目录 下寻找一个叫servlet- name-servlet.xml的配置文件,来

3、初始化里面的bean对象, 该文件中对应的bean对象会覆盖spring配置文件中声明的同名的bean对象。如上面的就会在 /WEB-INF 目 录下寻找一个叫 blog-servlet.xml 的文件;当然也可以在 Servlet 中声明配置文件的位 置。01 02 03 blog0 org.springframework.web.servlet.DispatcherServlet4 0506contextConfigLocation0708/WEB-INF/blog-servlet.xml0910111 12 1314 blog15 *.do16DispatcherServlet会利用一些

4、特殊的bean来处理Request请求和生成相应的视图 返回。关于视图的返回, Controller 只负责传回来一个值,然后到底返回的是什 么视图,是 由视图解析器控制的,在jsp中常用的视图解析器是InternalResourceViewResovler,它会要求一个前缀和一个后缀1 3 4 5 在上述视图解析器中,如果Controller返回的是blog/index,那么通过视图解析器解 析之后的视图就是/WEB-INF/blog/index.jsp 。要使用注解的SpringMVC需要在SpringMVC的配置文件中进行声明,具体方式为 先引入mvc命名空间,然后利用mvc:annot

5、ation-driven /进行声明。01 beans xmlns=/schema/beansxmlns:xsi=/2001/XMLSchema-instancexmlns:context=/schema/contextxmlns:mvc=/sche3ma/mvc xsi:schemaLocation=/schema/beans04d

6、/schema/beans/spring-beans-3.0.xs0506 0.xsd/schema/context/schema/context/spring-context-3./schema/mvc0 /schema/mvc/spring-mvc-3.0.xsd09101112 主要是 说说 Contr

7、oller.一个类使用了 Controller进行标记的都是Controller1 Controller2 public class BlogController 4有了 Controller 之后,那么到底是怎 样请求一个 Controller 具体的方法的呢,那是通 过RequestMappin冰标记 的,RequestMappin回以标记在类上面,也可以标记 在方法上,当方法上和类上都标记了RequestMappingl勺时候,那么对应的方 法 对应的Url就是类上的加方法上的,如下面的index方法,其对应的URL应为类上的/blog加上index方法上的/index,所以应为/blo

8、g/index,所以当请求 /blog/index.do 的时候就会访问 BlogController 的 index方法。01Controller02RequestMapping(/blog)03public class BlogController 040506RequestMapping(/index)0708public String index(Map map) return blog/index;0910在上面的代码中,如果index方法上没有RequestMapping注解,而只有BlogController 类上有,且该类只有一个方法的 时候,直接请求类上的 URL 就会调 用

9、里面的方法,即直接请求/blog.do的时候就会调用index方法。在RequestMapping中还可以指定一个属性 method,其主要对应 的值有 RequestMethod.GET和RequestMethod.POST,利用该属性可以严格的控制某一方 法只能被 标记的请求路径 对应的请求方法才能 访问 ,如指定 method 的值为 GET, 则表示只有通过GET方式才能访问该方法,默认是都可以访问。在 SpringMVC 中常用的注解 还有PathVariable RequestParan, PathVariable标 记在方法的参数上,利用它 标记的参数可以利用 请求路径 传值,看

10、下面一个例子1 RequestMapping(value=/comment/blogId, method=RequestMethod.POST) public void comment(Comment comment,PathVariableint blogId, HttpSession session, HttpServletResponse response) throws IOException 4在该例子中,blogId是被PathVariable标记为请求路径变量的,如果请求的是/blog/comment/1.do的时候就表 示blogId的值为1.同样RequestParam也是用

11、来给参数传值的,但是它是从头request的参数里面取值,相当于 request.getParameter 参数名)方法。在Controller的方法中,如果需要 WEB元素HttpServletRequest,HttpServletResponse和HttpSession,只需要在给方法一个对应的参数,那么在访 问的时候SpringMVC就会自动给其传值,但是需要注意的是在传入Session的 时 候如果是第一次 访问系统的时候就调用session会报错,因为这个时候session还没 有生成。接下来讨论一下方法的返回值,主要有一下情况:返回一个ModelAndView,其中Model是一个

12、Map,里面存放的是一对对的键 值对,其可以直接在页面上使用,View是一个字符串,表示的是某一个View 的名称返回一个View,也就是一个字符串,这个时候如果需要给页面传值,可以给 方法一个Map参数,该Map就相当于一个Model,往该Model里面存入键值 对就可以在页面上进行访问了返回一个Model也就是一个Map,这个时候将解析默认的生成的view nameb 什么也不返回,这个时候可以利用HttpServletResponse进行返回,也可以 直接使用printStream进行返回下面是一个简单的实例01RequestMa ppin g(/ow ner/i ndex)02 Pub

13、lic String userIndex(MapvString, Objectmap,PathVariableStringowner, Htt pServletRequest request) throwsP arserExce pti on 030405060708List categories = categoryService.fi nd(ow ner); int offset = Util.getOffset(request);P agerp ager = blogService.fi nd(ow ner,0, offset, maxResults);int totalRecords

14、= p ager.getTotalRecords();List blogs = p ager.getData();Util.shortBlog(blogs);List messages = messageService.fi nd(ow ner, 0,5).getData();11 Util.shortMessage(messages, 20);091012map.put(messages, messages);13map.put(totalRecords, totalRecords);14List stores = storeService.find(owner, 0, 5).getData();15map

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论