1.下载jar包

http://repo.spring.io/libs-release-local/org/springframework/spring/4.2.3.RELEASE/

2.下载源码

jar包中有源码

3.找到测试demo

http://jinnianshilongnian.iteye.com/blog/

4.找到学习笔记

http://www.open-open.com/doc/

5.初识springMvc

学习一个新的框架,首先要对它有一个大概的认识,便于后面的学习,首先要明白两个问题

1)它是干什么的?

我一开始是藐视它的,因为还没测试体会,我都不会用,难或不难和我有什么关系呢,自己学习一定要保证好心态,社区里有很多关于:它是什么的大篇的概念性论述,稍微看了下,和strut2都是C层框架,至于它的实现原理,执行流程,以及优缺点,随着学习,在慢慢去体会它的神奇

2)如何使用?

  废话不多说,下面直接上第一个入门demo,代码是注解式的

1.首先是web.xml的配置:

  <!-- springmvc核心 -->
  <servlet>
      <servlet-name>springmvc</servlet-name>
      <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
      <!-- 指定springMvc配置文的件位置 ,这个是在src下,如果不指定,则默认是WEB-INF/[DispatcherServlet的Servlet-name的名字]-servlet.xml配置文件-->
      <init-param>
          <param-name>contextConfigLocation</param-name>
          <param-value>classpath:springmvc.xml</param-value>
      </init-param>
      <!-- 监听该springMvc启动,初始化这个servlet -->
      <load-on-startup>1</load-on-startup>
  </servlet>

  <servlet-mapping>
      <servlet-name>springmvc</servlet-name>
      <url-pattern>/</url-pattern>
  </servlet-mapping>

2.springMvc配置文件

<!-- 扫描Controller所在的包 -->
    <context:component-scan base-package="zpark.*"/>

    <!-- 注册处理器映射器/处理器适配器 -->
    <mvc:annotation-driven conversion-service="conversionService"/>
    <!-- 视图解析器
        解析规则: 前缀+逻辑名+后缀
     -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/"/>
        <property name="suffix" value=".jsp"/>
    </bean>
    

3.controller

/**
 * @Controller :注解用在类上,标识这个类是一个控制器
 * @RequestMapping 注解加在类上相当于struts2中的namespace
 */
@Controller
@RequestMapping("/hello")
public class HelloController {

    /**
     * @RequestMapping 注解加在方法上,代表方法的访问路径
     *      属性一:value要求一个string数组
     */
    @RequestMapping(value={"/test","/aaa","/bbb"})   //localhost:9999/springmvc/hello/test
    public String  test(){
        System.out.println("test hello invoking ~~");
        return "index";//="/index.jsp"
    }

}

4.浏览器访问controller:

localhost:9999/springmvc/hello/test

很开心,第一个demo直接访问成功了,现在我们对这个demo进行分析:

从web.xml开始:

它的入口是 :DispatcherServlet类,看了一下它最终是继承自 HttpServlet类,这一点也验证了springMvc的上下文是一个serlvet

它是如何执行的这个流程呢:参考了一些资料,我自己画了一个流程图,自己总结的印象深刻些么:

RequestMappingHandlerMapping:映射器,它的作用是,实现类上拥有@Controller或@RequestMapping注解的bean,即发现action,并将它们作为处理器。

requestmappinghandleradapter: 适配器,找到拥有@RequestMapping注解的方法

今天先写到这里

springMvc的第一个demo的更多相关文章

  1. SpringMVC(流程+第一个Demo)

    一.流程图 用户发送请求至前端控制器DispatcherServlet DispatcherServlet收到请求调用HandlerMapping处理器映射器. 处理器映射器根据请求url找到具体的处 ...

  2. angular开发者吐槽react+redux的复杂:“一个demo证明你的开发效率低下”

    曾经看到一篇文章,写的是jquery开发者吐槽angular的复杂.作为一个angular开发者,我来吐槽一下react+redux的复杂. 例子 为了让大家看得舒服,我用最简单的一个demo来展示r ...

  3. 初识nginx之第一个demo

    商城项目做了一个多月了,想到必须用到负载均衡,简单了解了一下nginx,首先分享第一个demo,五月份上线后,会继续分享一系列相关知识. 在nginx根目录下,用了一个园友的批处理文件nginx.ba ...

  4. Android 通知栏Notification的整合 全面学习 (一个DEMO让你完全了解它)

    在android的应用层中,涉及到很多应用框架,例如:Service框架,Activity管理机制,Broadcast机制,对话框框架,标题栏框架,状态栏框架,通知机制,ActionBar框架等等. ...

  5. 如何在WTL和MFC中使用duilib及如何静态使用duilib库!(初级讲解 附带一个Demo)

    关于duilib的历史,我也就不多说了,能看到这篇文章的人都是有一定了解才能找到这个的. 我直接说下对这个库的基本使用吧. 我个人对一些好技术都是比较感兴趣的. 因为个人原因 喜欢接触一个好技术. 所 ...

  6. 白盒测试之gtest第一个demo

    认识gtest工具后,关于它的使用,下面将用一个demo程序演示一下gtest的用法以及成果展示. 一.需要测试的C++代码: #include "myfunction.h" // ...

  7. 在VS中实现webService的一个demo(图解)

    在VS中实现webService的一个demo(图解) 先创建一个web项目,创建好web项目后,添加新建项——web服务 在新建好的web服务文件中写如下代码: 生成当前解决方案. 新建一个winf ...

  8. Cocos2d-x 学习(1)—— 通过Cocos Studio创建第一个Demo

    近期在工作上有了比較大的转变,自学情绪也慢慢高涨,本来一直在研究unity的技术.由于换了工作会開始接触cocos2d-x.但并不意味着停止研究unity,以后有时间还是会继续的. 公司的cocos2 ...

  9. 使用android的mediaplayer做成 一个demo,欢迎测试使用

    附件是为一个定制视频产品而简单的写了一个demo,用来说明android的mediaplayer是如何使用的. http://files.cnblogs.com/guobaPlayer/palyerD ...

随机推荐

  1. oracle操作之传输表空间

    一.传输表空间概述 什么是传输表空间,传输表空间技术始于oracle9i,不论是数据字典管理的表空间还是本地管理的表空间,都可以使用传输表空间技术:传输表空间不需要在源数据库和目标数据库之间具有同样的 ...

  2. .Net程序员之Python基础教程学习----字符串的使用 [Second Day]

         在The FirstDay 里面学习了列表的元组的使用,今天开始学习字符串的使用.字符串的使用主要要掌握,字符串的格式化(C语言中我们应该都知道,Python和C语言差别不大),字符串的基本 ...

  3. z-index学习知识小结

    一.z-index七阶层叠顺序表 1.层叠顺序的大小比较: background/border < 负z-index < block块状水平盒子 < float浮动盒子 < i ...

  4. Caffe源码解析1:Blob

    转载请注明出处,楼燚(yì)航的blog,http://www.cnblogs.com/louyihang-loves-baiyan/ 首先看到的是Blob这个类,Blob是作为Caffe中数据流通的 ...

  5. [转]forever: 让nodejs应用后台执行

    在LINUX中我们可以使用这种简单的方式让node.js在后台运行: nohup node your_app.js & forever可以让我们做得更好,并且可以跨平台的在windows和Li ...

  6. 精通CSS version2笔记之⒈选择器

    1.常用的选择器:①元素选择器   指定希望应用样式的元素.比如:p {color:#fff;}②后代选择器   寻找特定元素或者元素的后代. 比如:body p{color:#ccc;}   这个选 ...

  7. tyvj[1089]smrtfun

    描述  现有N个物品,第i个物品有两个属性A_i和B_i.在其中选取若干个物品,使得sum{A_i + B_i}最大,同时sum{A_i},sum{B_i}均非负(sum{}表示求和). 输入格式   ...

  8. Emacs杂谈(一)Emacs环境 c++ 快捷键

    最近头脑发热(抽),重装了电脑,改成linux的ubuntu系统,熟悉一下环境,顺便转载相关emacs知识. //插播一则通知:似乎linux上vector不能用,会内存炸错,若有人可以解答,请用评论 ...

  9. linux进入软连接所指向的原目录

    软连接就是一个快捷方式,建立软连接的方法 ln -s source-path-or-file link-file 建立硬连接 ln source-path-or-file link-file linu ...

  10. JavaScript Number 对象

    JavaScript Number 对象 Number 对象 Number 对象是原始数值的包装对象. Number 创建方式 new Number(). 语法 var num = new Numbe ...