基于注解的SpringMVC简单介绍.doc_第1页
基于注解的SpringMVC简单介绍.doc_第2页
基于注解的SpringMVC简单介绍.doc_第3页
基于注解的SpringMVC简单介绍.doc_第4页
基于注解的SpringMVC简单介绍.doc_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

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

文档简介

SpringMVC是一个基于DispatcherServlet的MVC框架,每一个请求最先访问的都是 DispatcherServlet,DispatcherServlet负责转发每一个Request请求给相应的Handler,Handler处理 以后再返回相应的视图(View)和模型(Model),返回的视图和模型都可以不指定,即可以只返回Model或只返回View或都不返回。DispatcherServlet是继承自HttpServlet的,既然SpringMVC是基于DispatcherServlet的, 那么我们先来配置一下DispatcherServlet,好让它能够管理我们希望它管理的内容。HttpServlet是在web.xml文件中声明 的。0102blog0304org.springframework.web.servlet.DispatcherServlet051060708blog0910*.do11上面声明了一个名为blog的DispatcherServlet,该Servlet将处理所有以“.do”结尾的请求。在初始化 DispatcherServlet的时候,SpringMVC默认会到/WEB-INF目录下寻找一个叫servlet- name-servlet.xml的配置文件,来初始化里面的bean对象,该文件中对应的bean对象会覆盖spring配置文件中声明的同名的 bean对象。如上面的就会在/WEB-INF目录下寻找一个叫blog-servlet.xml的文件;当然也可以在Servlet中声明配置文件的位 置。010203blog04org.springframework.web.servlet.DispatcherServlet0506contextConfigLocation0708/WEB-INF/blog-servlet.xml0910111121314blog15*.do16DispatcherServlet会利用一些特殊的bean来处理Request请求和生成相应的视图返回。关于视图的返回,Controller只负责传回来一个值,然后到底返回的是什么视图,是由视图解析器控制的,在jsp中常用的视图解析器是InternalResourceViewResovler,它会要求一个前缀和一个后缀1345在上述视图解析器中,如果Controller返回的是blog/index,那么通过视图解析器解析之后的视图就是/WEB-INF/blog/index.jsp。要使用注解的SpringMVC需要在SpringMVC的配置文件中进行声明,具体方式为先引入mvc命名空间,然后利用进行声明。01beans xmlns=/schema/beans02xmlns:xsi=/2001/XMLSchema-instance xmlns:context=/schema/context03xmlns:mvc=/schema/mvc xsi:schemaLocation=/schema/beans04/schema/beans/spring-beans-3.0.xsd05/schema/context06/schema/context/spring-context-3.0.xsd07 /schema/mvc08/schema/mvc/spring-mvc-3.0.xsd09101112主要是说说Controller.一个类使用了Controller进行标记的都是Controller1Controller2public class BlogController 34有了Controller之后,那么到底是怎样请求一个Controller具体的方法的呢,那是通过RequestMapping来标记 的,RequestMapping可以标记在类上面,也可以标记在方法上,当方法上和类上都标记了RequestMapping的时候,那么对应的方 法对应的Url就是类上的加方法上的,如下面的index方法,其对应的URL应为类上的/blog加上index方法上的/index,所以应为 /blog/index,所以当请求/blog/index.do的时候就会访问BlogController的index方法。01Controller02RequestMapping(/blog)03public class BlogController 040506RequestMapping(/index)07public String index(Map map) 08return blog/index;0910在上面的代码中,如果index方法上没有RequestMapping注解,而只有BlogController类上有,且该类只有一个方法的时候,直接请求类上的URL就会调用里面的方法,即直接请求/blog.do的时候就会调用index方法。在RequestMapping中还可以指定一个属性method,其主要对应的值有RequestMethod.GET和 RequestMethod.POST,利用该属性可以严格的控制某一方法只能被标记的请求路径对应的请求方法才能访问,如指定method的值为 GET,则表示只有通过GET方式才能访问该方法,默认是都可以访问。在SpringMVC中常用的注解还有PathVariable,RequestParam,PathVariable标记在方法的参数上,利用它标记的参数可以利用请求路径传值,看下面一个例子1RequestMapping(value=/comment/blogId, method=RequestMethod.POST)2public void comment(Comment comment,PathVariable int blogId, HttpSession session, HttpServletResponse response) throws IOException 34在该例子中,blogId是被PathVariable标记为请求路径变量的,如果请求的是/blog/comment/1.do的时候就表 示blogId的值为1. 同样RequestParam也是用来给参数传值的,但是它是从头request的参数里面取值,相当于request.getParameter( 参数名)方法。在Controller的方法中,如果需要WEB元素HttpServletRequest,HttpServletResponse和 HttpSession,只需要在给方法一个对应的参数,那么在访问的时候SpringMVC就会自动给其传值,但是需要注意的是在传入Session的 时候如果是第一次访问系统的时候就调用session会报错,因为这个时候session还没有生成。接下来讨论一下方法的返回值,主要有一下情况: 返回一个ModelAndView,其中Model是一个Map,里面存放的是一对对的键值对,其可以直接在页面上使用,View是一个字符串,表示的是某一个View的名称 返回一个View,也就是一个字符串,这个时候如果需要给页面传值,可以给方法一个Map参数,该Map就相当于一个Model,往该Model里面存入键值对就可以在页面上进行访问了 返回一个Model也就是一个Map,这个时候将解析默认的生成的view name。 什么也不返回,这个时候可以利用HttpServletResponse进行返回,也可以直接使用printStream进行返回下面是一个简单的实例 01RequestMapping(/owner/index)02public String userIndex(Map map,PathVariable String owner, HttpServletRequest request) throws ParserException 03List categories = categoryService.find(owner);04int offset = Util.getOffset(request);05Pager pager = blogService.find(owner, 0, offset, maxResults);06int totalRecords = pager.getTotalRecords();07List blogs = pager.getData();08Util.shortBlog(blogs);0910List messages = messageService.find(owner, 0, 5).getData();11Util.shortMessage(messages, 20);12map.put(messages, messages);13map.put(totalRecords, totalRecords);14List stores = storeService.find(owner, 0, 5).getData();15map.put(max

温馨提示

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

最新文档

评论

0/150

提交评论