在博文《SpringMVC一路总结(一)》和《SpringMVC一路总结(二)》中,该框架的应用案例都是是基于xml的形式实现的。然而,对于大型项目而言,这种xml的配置会增加项目模块之间的耦合性,增加配置文件的配置难度,因此,从效率上来讲,这是一种并不被看好的方式。

尽管这种xml形式的配置在项目中用的比较少,但是,这种形式的配置可以很清楚的了解到SpringMVC 入门的一些基础知识,学起来可以感觉到很轻松。只有在了解了这种基于xml的实现SpringMVC 之后,我们再来看注解实现就会显得更加轻松。正是因为配置很麻烦,增加程序中模块间的耦合度,所以,今天的主要任务就是利用注解的形式实现一个很简单的SpringMVC,这样一来,入门注解样例,了解SpringMVC的基础注解形式,待实现案例之后,就会很明显感觉到SpringMVC相比较XML形式而言,更加方便,更加贴合实际应用。

对于SpringMVC中的注解关键字不是本文的重点,我们在用的过程中会总结一些,不断的应用,不断的总结。如果想要一次性的了解SpringMVC中的注解关键字,可以查看相关API。本博文为本人学习的总结,请尊重劳动成果。欢迎转载,请保留博文出处:http://www.cnblogs.com/itred ;本人邮箱: it_red@sina.com 。

案    例

新建一个web工程,加入相关JAR包;

在web.xml中进行相关配置,本例的SpingMVC-servlet.xml配置文件放在了src目录下,因此需要在web.xml中进行相关的配置。配置如下:

<servlet>
<servlet-name>SpringMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:SpringMVC-servlet.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>SpringMVC</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>

然后就像最开始学习xml配置SpringMVC一样,新建SpringMVC-servlet.xml;因为从现在开始就要学会用注解的形式来应用SpringMVC,所以牢记几个类。在spring的包中,有一个webmvc的JAR包,其下有一个注解方式处理适配器类org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter和一个默认的的注解处理映射类org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping。 这两个类是必须要知道的,因为这两个类的加载,或者说在SpringMVC-servlet.xml文件中的两个bean,就是由于他们,才会开启Spring的注解,一个是根据包找类,一个是根据类去找方法。虽然说,在启用注解时可以通过一行代码<mvc:annotation-driven/>替代,但是我还是建议需要知道这两个基本类。

还有一个需要注意的地方就是控制器所属的包,因为这里不再是一个一个的去用xml进行配置,所以需要进行扫描控制器,在SpingMVC-servlet.xml中的扫描语句是:<context:component-scan base-package="com.red.controller" /> 。到这里,配置基本完成,对!你没看错,以前利用xml进行配置时所需要的配置比现在这个可多了很多。即使后面新建控制器时,也不需要再进行配置了。

说到控制器,当然不可少!在制定包下新建一个控制器,因为这个包必须在使用注解可以扫描的包目录下才可以。

源码如下:

package com.red.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView; @Controller
public class AnnoController {
@RequestMapping(value = "/user/adduser", method = RequestMethod.GET)
public ModelAndView addUser() {
System.out.println("add user");
String result = "addUser";
return new ModelAndView("/index", "result", result);
} @RequestMapping(value = "/user/deluser", method = RequestMethod.GET)
public ModelAndView delUser() {
System.out.println("del user");
String result = "del user";
return new ModelAndView("/index", "result", result);
}
}

下面对上面控制器中所用到的注解进行总结:

    @Controller 标识在类名之上,说明该类就是一个控制器;其实以后在用的过程中,只要是控制器就加上,而且当程序中的内容比较多时,也不会出错;

    @RequestMapping(value = "/user/adduser", method = RequestMethod.GET)  方法的映射,value中的值就是浏览器可以访问的URL,而对于method是指的是请求方法,一旦在这里指定了该方法的请求方式,那么其它的就不可用,因此,它是严格的区分POST和GET方法;当然在某种情况下,需要同时满足POST和GET方法,这里就直接省略method的设置,直接忽略掉这部分;同时也可以将value = "/user/adduser"这部分的值直接修改为:"/user/adduser"。只在括号中写入访问的路径就行,同样可以实现一样的功能。

在这里,会看到,每个方法都得去写一遍@RequestMapping(),但是每个里面都有相同的一部分,因此可以将相同部分的路径抽取出来,这样一来可以很清楚的看到这个模块究竟是什么,在类名的前面@Controller后加上@RequestMapping(“模块名称”),因此,对于团队开发而言,可以很清楚的对每个部分进行分配。

  实现效果如下:(这里是用的GET方式,POST方式请自测)

  方法一:

  

  方法二:

  

  控制台输出:

  

总    结

对于技术的学习,还是得就其本身。不能知道简单的应用就行了,这样始终都不会理解人这样设计的缘由。光浮夸于其表面,不能沉下心来,静静体会其高明之处,就必然不能真正学会这门技术。

案例下载链接

      感谢奋斗中的自己!

  邮箱:it_red@sina.com
个人博客: http://itred.cnblogs.com
版权声明:本文版权归作者和博客园共有,欢迎转载,但请在文章显眼位置标明文章出处。未经本人书面同意,将其作为他用,本人保留追究责任的所有权利。

SpringMVC一路总结(三)的更多相关文章

  1. SpringMVC一路总结(

    SpringMVC一路总结(三) 在博文<SpringMVC一路总结(一)>和<SpringMVC一路总结(二)>中,该框架的应用案例都是是基于xml的形式实现的.然而,对于大 ...

  2. SpringMVC一路总结(一)(转)

    itRed You are never too old to set another goal or to dream a new dream. SpringMVC一路总结(一) SpringMVC听 ...

  3. SpringMVC一路总结(二)

    冰冻三尺非一日之寒.对技术的学习尤其得遵循这么一个理.在<SpringMVC一路总结(一)>中,清楚的总结了SpringMVC的入门案例,对于这类入门demo,理清套路,整理思绪是最为重要 ...

  4. 使用IntelliJ IDEA开发SpringMVC网站(三)数据库配置

    原文:使用IntelliJ IDEA开发SpringMVC网站(三)数据库配置 摘要 讲解在IntelliJ IDEA中,如何进行Mysql数据库的配置 目录[-] 文章已针对IDEA 15做了一定的 ...

  5. SpringMVC一路总结(一)

    SpringMVC听闻已久,早在去年就被学长问到关于SpringMVC的基础知识,当时也没在意.主要是工作中也没有用到关于SpringMVC的技术,因此免于没有时间和精力的借口就没有接触和学习Spri ...

  6. SpringMVC学习笔记(三)

    一.SpringMVC使用注解完成 1.首先,导入SpringMVC需要的jar包. 2.添加Web.xml配置文件中关于SpringMVC的配置 <!--configure the setti ...

  7. springmvc学习(三)

    第一点---------使用 @RequestMapping 映射请求• Ant 风格资源地址支持 3 种匹配符:?:匹配文件名中的一个字符 *:匹配文件名中的任意字符 **:** 匹配多层路径 @R ...

  8. SpringMVC框架(三)from标签(转)

    原文地址:http://blog.csdn.net/kutim/article/details/46682547 spring表单标签   <%@taglib uri="http:// ...

  9. SpringMVC学习(三)———— springmvc的数据校验的实现

    一.什么是数据校验? 这个比较好理解,就是用来验证客户输入的数据是否合法,比如客户登录时,用户名不能为空,或者不能超出指定长度等要求,这就叫做数据校验. 数据校验分为客户端校验和服务端校验 客户端校验 ...

随机推荐

  1. Oracle分析函数入门

    一.Oracle分析函数入门 分析函数是什么?分析函数是Oracle专门用于解决复杂报表统计需求的功能强大的函数,它可以在数据中进行分组然后计算基于组的某种统计值,并且每一组的每一行都可以返回一个统计 ...

  2. 设计爬虫Hawk背后的故事

    本文写于圣诞节北京下午慵懒的午后.本文偏技术向,不过应该大部分人能看懂. 五年之痒 2016年,能记入个人年终总结的事情没几件,其中一个便是开源了Hawk.我花不少时间优化和推广它,得到的评价还算比较 ...

  3. Hyper-V无法文件拖拽解决方案~~~这次用一个取巧的方法架设一个FTP来访问某个磁盘,并方便的读写文件

    异常处理汇总-服 务 器 http://www.cnblogs.com/dunitian/p/4522983.html 服务器相关的知识点:http://www.cnblogs.com/dunitia ...

  4. Python标准库--typing

    作者:zhbzz2007 出处:http://www.cnblogs.com/zhbzz2007 欢迎转载,也请保留这段声明.谢谢! 1 模块简介 Python 3.5 增加了一个有意思的库--typ ...

  5. iOS系列文章

    本博客全为原创,如果借鉴了其他文章会在博文的下面进行说明.欢迎转载,但要在文章中给出原文链接,谢谢. 有链接的说明已经发布,没有链接的说明还没有发布. 并不是所有的博文都在这里罗列,有兴趣的可以看博客 ...

  6. C++中的引用

    一,C++中引用的基础知识 1.引用的基本概念 1.所谓的引用其实就是对变量起“别名”.引用和变量对应得是相同的内存,修改引用的值,变量的值也会改变,和指针类似. 2.引用在定义的时候必须要初始化,初 ...

  7. Angular企业级开发(1)-AngularJS简介

    AngularJS介绍 AngularJS是一个功能完善的JavaScript前端框架,同时是基于MVC(Model-View-Controller理念的框架,使用它能够高效的开发桌面web app和 ...

  8. JQuery(2)

    JQuery下拉框操作: 取值赋值操作 body代码: <select id="sel"> <option value="北京">北京& ...

  9. React Native环境配置之Windows版本搭建

    接近年底了,回想这一年都做了啥,学习了啥,然后突然发现,这一年买了不少书,看是看了,就没有完整看完的.悲催. 然后,最近项目也不是很紧了,所以抽空学习了H5.自学啃书还是很无趣的,虽然Head Fir ...

  10. TFS2013 设置签出独占锁

    转载自: http://www.cnblogs.com/zhang888/p/4280251.html