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. BUCK-BOOST反激变压器设计

    Buck-Boost电路中,最低电压为其最恶劣情况 以下图为例: 注:1.Np为初级绕组匝数,Ns为次级绕组匝数: 2.Vmos为MOS最大耐压值,1为整流管压降,Vl为漏,Vl=100V,Vmos选 ...

  2. NVIDIA显卡设置

    在玩3D游戏时,因为我的显卡不是特别给力,所以针对性能做出牺牲质量换取性能的调整. 简单设置 简单的方法是,3D设置-通过预览调整图像设置,根据偏重点来设置平衡:性能或者质量. 高级设置 如果你想自行 ...

  3. UIWrapContent(NGUI长列表优化利器)

    NGUI长列表优化利器 优化原理 NGUI3.7.x以上版本 有个新组件 UIWrapContent ,当我们的列表内容很多时,可以进行优化.它不是一次生成全部的child,而是只有固定数量的chil ...

  4. 入门训练 Fibonacci数列

      入门训练 Fibonacci数列   时间限制:1.0s   内存限制:256.0MB 问题描述 Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1. 当n比较大时, ...

  5. 使用uboot的tftp下载bootloader、内核、文件系统

    开发板 jz2440 下载uboot.bin tftp 0x30000000 u-boot.bin nand erase bootloader nand write bootloader 下载内核 t ...

  6. uwsgi+flask环境中安装matplotlib

    uwsgi+flask的python有自身的virtual environment,可以通过如下命令进入 . venv/bin/activate 虽然通过sudo apt-get install py ...

  7. Maven私服Nexus3.x环境构建操作记录

    Maven介绍Apache Maven是一个创新的软件项目管理和综合工具.Maven提供了一个基于项目对象模型(POM)文件的新概念来管理项目的构建,可以从一个中心资料片管理项目构建,报告和文件.Ma ...

  8. Mysql备份系列(3)--innobackupex备份mysql大数据(全量+增量)操作记录

    在日常的linux运维工作中,大数据量备份与还原,始终是个难点.关于mysql的备份和恢复,比较传统的是用mysqldump工具,今天这里推荐另一个备份工具innobackupex.innobacku ...

  9. 今天看了shell大神的写的一个统计脚本

    通过nginx日志统计接口耗时排行 grep '/bigbox?' access_log | awk '{print $7"&process="$NF}'| sed -r ...

  10. js/jquery判断浏览器的方法小结

    在网站前端开发中,浏览器兼容性是前端开发框架要解决的第一个问题,要解决兼容性问题就得首先准确判断出浏览器的类型及其版本,而判断浏览器的版本一般只能通过分析浏览器的userAgent才能知道.今天我们把 ...