SpringMVC一路总结(
SpringMVC一路总结(三)
在博文《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一路总结(的更多相关文章
- SpringMVC一路总结(三)
在博文<SpringMVC一路总结(一)>和<SpringMVC一路总结(二)>中,该框架的应用案例都是是基于xml的形式实现的.然而,对于大型项目而言,这种xml的配置会增加 ...
- SpringMVC一路总结(二)
冰冻三尺非一日之寒.对技术的学习尤其得遵循这么一个理.在<SpringMVC一路总结(一)>中,清楚的总结了SpringMVC的入门案例,对于这类入门demo,理清套路,整理思绪是最为重要 ...
- SpringMVC一路总结(一)(转)
itRed You are never too old to set another goal or to dream a new dream. SpringMVC一路总结(一) SpringMVC听 ...
- SpringMVC一路总结(一)
SpringMVC听闻已久,早在去年就被学长问到关于SpringMVC的基础知识,当时也没在意.主要是工作中也没有用到关于SpringMVC的技术,因此免于没有时间和精力的借口就没有接触和学习Spri ...
- SpringMVC1
itRed You are never too old to set another goal or to dream a new dream. SpringMVC一路总结(一) SpringMVC听 ...
- JAVA过滤器与SpringMVC拦截器之间的区别
今天学习和认识了一下,过滤器和SpringMVC的拦截器的区别,学到了不少的东西,以前一直以为拦截器就是过滤器实现的,现在想想还真是一种错误啊, 而且看的比较粗浅,没有一个全局而又细致的认识,由于已至 ...
- Java过滤器与SpringMVC拦截器之间的关系与区别
今天学习和认识了一下,过滤器和SpringMVC的拦截器的区别,学到了不少的东西,以前一直以为拦截器就是过滤器实现的,现在想想还真是一种错误啊,而且看的比较粗浅,没有一个全局而又细致的认识,由于已至深 ...
- Spring+Mybatis+SpringMVC+Maven+MySql搭建实例
林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 摘要:本文主要讲了如何使用Maven来搭建Spring+Mybatis+SpringMVC+M ...
- Java过滤器,SpringMVC拦截器之间的一顺序点关系
由于最近做的项目中有一部分是接口远程调用,用到了接入权限和业务权限的鉴定,需要采用SpringMVC的拦截器,以前用Struts2的时候用过拦截器,而SpringMVC的拦截器功能之前没研究过,所以这 ...
随机推荐
- 单链表的实现---SingleLinkedList
单链表的实现,定义为SingleLinkedList class Node<AnyType>{ //结点Node类 public AnyType data; public Node< ...
- 基于struct2完整的用户登录
第一lib在导入struct2相应jar包 在web.xml组态struct2过滤器 <filter> <filter-name>struts2</filter-name ...
- iOS开发多线程篇—多线程简介
iOS开发多线程篇-多线程简介 一.进程和线程 1.什么是进程 进程是指在系统中正在执行的一个应用程序 每一个进程之间是独立的.每一个进程均执行在其专用且受保护的内存空间内 比方同一时候打开QQ.Xc ...
- 轻松搭建Windows8云平台开发环境
原文:轻松搭建Windows8云平台开发环境 Windows Store应用是基于Windows 8操作系统的新一代Windows应用程序,其开发平台以及运行模式和以往传统平台略有不同.为了帮助更多开 ...
- 最小二乘法拟合java实现源程序(转)
因为我所在的项目要用到最小二乘法拟合,所有我抽时间将C++实现的程序改为JAVA实现,现在贴出来,供大家参考使用./** * <p>函数功能:最小二乘法曲线拟合</p> * @ ...
- OpenCV——Delaunay三角 [转载]
从这个博客转载 http://blog.csdn.net/raby_gyl/article/details/17409717 请其它同学转载时注明原始文章的出处! Delaunay三角剖分是1934年 ...
- Windows 8本地化多语言支持
原文:Windows 8本地化多语言支持 在Win8平台处理本地化多语言的支持相对比较容易的,但比WP8稍微复杂一点,并不像WP8平台那样大部分工作都有VS IDE处理,Win8平台的操作基本需要开发 ...
- 在内存中建立 MySQL 的临时目录(转)
MySQL 系统会在内存(MEMORY)和磁盘(MyISAM)中建立临时表,如何能知道在磁盘中建立了多少临时表以及在内存中建立多少临时表呢?你可以通过下面命令获知: ? 1 2 3 4 5 6 7 m ...
- 第四章——SQLServer2008-2012资源及性能监控(1)
原文:第四章--SQLServer2008-2012资源及性能监控(1) 性能优化的第一步是发现问题,而发现问题通常又有两类:突发问题的侦测和常规问题的侦测,对于常规问题的侦测,通常需要有一个长效的性 ...
- SQL Server 2008 R2 性能计数器详细列表(五)
原文:SQL Server 2008 R2 性能计数器详细列表(五) SQL Server:SQL Statistics 对象: 监视编译和发送到 SQL Server 实例的请求类型 SQL Ser ...