SpringMVC一路总结(三)

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

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

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

                                                  案    例                                                     

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

     在web.xml中进行相关配置,本例的SpingMVC-servlet.xml配置文件放在了src目录下,所以须要在web.xml中进行相关的配置。配置以下:mvc

<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/>替代,可是我仍是建议须要知道这两个基本类。app

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

说到控制器,固然不可少!在制定包下新建一个控制器,由于这个包必须在使用注解能够扫描的包目录下才能够。学习

源码以下:url

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);
    }
}

 

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

    @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
  
相关文章
相关标签/搜索