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一路总结(一)>和<SpringMVC一路总结(二)>中,该框架的应用案例都是是基于xml的形式实现的.然而,对于大 ...
- SpringMVC一路总结(一)(转)
itRed You are never too old to set another goal or to dream a new dream. SpringMVC一路总结(一) SpringMVC听 ...
- SpringMVC一路总结(二)
冰冻三尺非一日之寒.对技术的学习尤其得遵循这么一个理.在<SpringMVC一路总结(一)>中,清楚的总结了SpringMVC的入门案例,对于这类入门demo,理清套路,整理思绪是最为重要 ...
- 使用IntelliJ IDEA开发SpringMVC网站(三)数据库配置
原文:使用IntelliJ IDEA开发SpringMVC网站(三)数据库配置 摘要 讲解在IntelliJ IDEA中,如何进行Mysql数据库的配置 目录[-] 文章已针对IDEA 15做了一定的 ...
- SpringMVC一路总结(一)
SpringMVC听闻已久,早在去年就被学长问到关于SpringMVC的基础知识,当时也没在意.主要是工作中也没有用到关于SpringMVC的技术,因此免于没有时间和精力的借口就没有接触和学习Spri ...
- SpringMVC学习笔记(三)
一.SpringMVC使用注解完成 1.首先,导入SpringMVC需要的jar包. 2.添加Web.xml配置文件中关于SpringMVC的配置 <!--configure the setti ...
- springmvc学习(三)
第一点---------使用 @RequestMapping 映射请求• Ant 风格资源地址支持 3 种匹配符:?:匹配文件名中的一个字符 *:匹配文件名中的任意字符 **:** 匹配多层路径 @R ...
- SpringMVC框架(三)from标签(转)
原文地址:http://blog.csdn.net/kutim/article/details/46682547 spring表单标签 <%@taglib uri="http:// ...
- SpringMVC学习(三)———— springmvc的数据校验的实现
一.什么是数据校验? 这个比较好理解,就是用来验证客户输入的数据是否合法,比如客户登录时,用户名不能为空,或者不能超出指定长度等要求,这就叫做数据校验. 数据校验分为客户端校验和服务端校验 客户端校验 ...
随机推荐
- ASP.NET是如何在IIS下工作的
ASP.NET与IIS是紧密联系的,由于IIS6.0与IIS7.0的工作方式的不同,导致ASP.NET的工作原理也发生了相应的变化. IIS6(IIS7的经典模式)与IIS7的集成模式的不同 IIS6 ...
- Java基础Map接口+Collections
1.Map中我们主要讲两个接口 HashMap 与 LinkedHashMap (1)其中LinkedHashMap是有序的 怎么存怎么取出来 我们讲一下Map的增删改查功能: /* * Ma ...
- JavaScript 开发规范
本篇主要介绍JS的命名规范.注释规范以及框架开发的一些问题. 目录 1. 命名规范:介绍变量.函数.常量.构造函数.类的成员等等的命名规范 2. 注释规范:介绍单行注释.多行注释以及函数注释 3. 框 ...
- Node-Webkit打包
1.node-webkit是什么? NW.js is an app runtime based on Chromium and node.js. You can write native apps i ...
- EntityFramework.Extended 支持 MySql
EntityFramework.Extended 默认不支持 MySql,需要配置如下代码: [DbConfigurationType(typeof(DbContextConfiguration))] ...
- 最长回文子串-LeetCode 5 Longest Palindromic Substring
题目描述 Given a string S, find the longest palindromic substring in S. You may assume that the maximum ...
- 免费开源的DotNet任务调度组件Quartz.NET(.NET组件介绍之五)
很多的软件项目中都会使用到定时任务.定时轮询数据库同步,定时邮件通知等功能..NET Framework具有“内置”定时器功能,通过System.Timers.Timer类.在使用Timer类需要面对 ...
- SQL面试笔试经典题(Part 1)
本文是在Cat Qi的原贴的基础之上,经本人逐题分别在MySql数据库中实现的笔记,持续更新... 参考原贴:http://www.cnblogs.com/qixuejia/p/3637735.htm ...
- can't run roscore 并且 sudo 指令返回 unable to resolve host
I'm using ubuntu14 LTS. Problems: 1. When run roscore, got a mistake and an advice to ping the local ...
- Linux目录结构