zoukankan      html  css  js  c++  java
  • 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
      版权声明:本文版权归作者和博客园共有,欢迎转载,但请在文章显眼位置标明文章出处。未经本人书面同意,将其作为他用,本人保留追究责任的所有权利。

     

     

  • 相关阅读:
    hiveserver2 with kerberos authentication
    python Basic usage
    python Quicksort demo
    Python HeapSort
    mrunit for wordcount demo
    CCDH证书
    Hadoop question list
    Hadoop Yarn core concepts
    Hadoop Resource
    Hadoop could not find or load main class
  • 原文地址:https://www.cnblogs.com/itred/p/4495832.html
Copyright © 2011-2022 走看看