---恢复内容开始---

SpringMVC通过实现MVC模式,很好地将数据、业务与展现进行了分离。从MVC的角度来说,SpringMVC和Struts2非常类似,但SpringMVC采用了可插拔的组件结构,更加具有可扩展性和灵活性。自Spring3.0版本以后,SpringMVC已经全面超越了Struts2,成为目前最流行的MVC框架。

使用SpringMVC有“基于XML配置文件”和“基于注解”两种形式,本书采用了目前使用较为广泛的“基于注解”形式。

SpringMVC的获取

Spring MVC属于Spring FrameWork的后续产品。我们可以找到开发Spring所使用的spring-framework-4.2.5.RELEASE-dist.zip,将其解压,其中的libs目录也包含了开发SpringMVC框架所依赖的jar包,具体如下:

序号 文件名 简介
1-4 spring-aop-4.xx.RELEASE.jar spring-beans-4.xx.RELEASE.jar spring-context-4.xx.RELEASE.jar spring-core-4.xx.RELEASE.jar 这四个jar包已经在Spring中讲解过,在此不再赘述。
5 spring-expression-4.xx.RELEASE.jar Spring表达式语言需要的类库
6 spring-web-4.xx.RELEASE.jar 在Web应用开发过程中,用到Spring框架时所需的核心类库
7 spring-webmvc-4.xx.RELEASE.jar Spring MVC框架相关的所有类。如国际化、标签、Theme、FreeMarker等相关类

和开发Spring一样,为了支持SpringMVC处理日志,我们还需要commons-logging-1.1.3.jar

以上8个jar包,就是我们使用SpringMVC时需要导入的包。

说明:

以上8个jar包是开发SpringMVC的基础,但随着学习的深入,以后可能会逐步导入更多的jar包。若项目因为缺少jar包而运行失败,Eclipse等开发工具都会给出错误提示,读者可以根据提示内容,查找并加入所需的jar包。

26.2 开发第一个SpringMVC程序

我们先通过一个简单的示例,演示一下使用SpringMVC的基本流程。

(1)创建一个Web项目(项目名SpingMVCDemo),并导入上述8个jar包;

(2)src目录下创建SpringMVC的配置文件:springmvc.xml。(在使用安装了Spring Tool Suite的Eclipse中,具体的创建步骤:鼠标右键src →new →Spring Bean Configuration File →输入配置文件名“springmvc.xml” →finish,然后再在Namespaces中选择“beans”、“context”及“mvc”,如图)

图26-01

(3)web.xml中配置前置控制器DispatcherServlet,用于拦截与<url-pattern>相匹配的请求,如下,

web.xml

复制
  1. <servlet>
  2. <servlet-name>springDispatcherServlet</servlet-name>
  3. <servlet-class>
  4. org.springframework.web.servlet.DispatcherServlet
  5. </servlet-class>
  6. <init-param>
  7. <param-name>contextConfigLocation</param-name>
  8. <param-value>classpath:springmvc.xml</param-value>
  9. </init-param>
  10. <load-on-startup>1</load-on-startup>
  11. </servlet>
  12. <servlet-mapping>
  13. <servlet-name>springDispatcherServlet</servlet-name>
  14. <url-pattern>/</url-pattern>
  15. </servlet-mapping>

其中,

通过<url-pattern>指定了DispatcherServlet拦截的请求是:所有请求(“/”)。拦截后即交给SpringMVC处理。

SpringMVC中常见的<url-pattern>值如下表,

<url-pattern>值 含义
/ 所有请求,注意不能是/* ;“/”:所有请求;“/user”:以“user”开头的所有请求;“/user/pay.action”:“/user/pay.action”这个唯一的请求。此方式会导致静态资源(css,js,图片等)无法正常显示,后续会讲解处理办法。
*.do或*.action等 固定后缀的请求路径。如*.action表示/save.action、/user/save.action等所有以“.action”结尾的请求。

通过<load-on-startup>设置让DispatcherServlet随着服务(如Tomcat)的启动而同时启动。

通过contextConfigLocation<param-value>值,指定了SpringMVC配置文件的路径是:资源路径(如src目录)中的springmvc.xml文件。若不设置此<init-param>,则会根据SpringMVC的“默认约定”,自动加载认加WEB-INF目录中的<servlet-name>-servlet.xml

例如,本web.xml中配置DispatcherServlet<servlet-name>是“springDispatcherServlet”,则默认路径就是WEB-INF/springDispatcherServlet-servlet.xml

配置完contextConfigLocation后,SpringMVC就会随着服务(如Tomcat)的启动而自动初始化。

(4)开发前端请求页面

index.jsp

复制
  1. <body>
  2. <a href="firstSpringMVC">My First SpringMVC Demo</a>
  3. </body>

如上,我们使用超链接向web.xml中的<url-pattern>发送一个可以被拦截的请求,然后交由SpringMVC处理。

(5)开发请求处理类

FirstSpringDemo.java

复制
  1. package org.lanqiao.handler;
  2. import org.springframework.stereotype.Controller;
  3. import org.springframework.web.bind.annotation.RequestMapping;
  4. @Controller
  5. public class FirstSpringDemo
  6. {
  7. @RequestMapping("/firstSpringMVC")
  8. public String welcomeToSpringMVC()
  9. {
  10. return "success";
  11. }
  12. }

如上,使用@Controller注解来标识本类是一个SpringMVC Controller 对象; 使用@RequestMapping注解来映射请求的URL。

例如,在index.jsp发出的请求“/firstSPringMVC”,将会被映射到@RequestMapping("/firstSPringMVC")所标识的方法来处理。

(6)编写SpringMVC配置文件

我们在“步骤(2)”时,已经将SpringMVC的路径设置到了src下,并且命名为springmvc.xml

springmvc.xml

复制
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:context="http://www.springframework.org/schema/context"
  5. xmlns:mvc="http://www.springframework.org/schema/mvc"
  6. xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd
  7. http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
  8. http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd">
  9. <!-- 配置需要扫描的包 -->
  10. <context:component-scan base-package="org.lanqiao.handler">
  11. </context:component-scan>
  12. <!-- 配置试图解析器:把请求处理类的返回值,加工成最终的视图路径-->
  13. <bean class="org.springframework.web.servlet.
  14. view.InternalResourceViewResolver">
  15. <property name="prefix" value="/views/"></property>
  16. <property name="suffix" value=".jsp"></property>
  17. </bean>
  18. </beans>

其中,

通过<context:component-scan>,将“请求处理类(FirstSpringDemo.java)”所在的包交给SpringMVC扫描。SpringMVC在接受到请求后,就会去在该包内寻找标记有@Controller的处理类,再在找到的处理类中寻找标记有@RequestMapping的处理方法。若找到请求路径和处理方法相匹配,就会用该处理方法来处理此请求。

例如,前台<a href="firstSPringMVC">…</a>发送一个路径为“firstSPringMVC”的请求;而在<context:component-scan>所在包中,恰好有一个请求处理类(FirstSpringDemo.java)的welcomeToSpringMVC()方法被标识为了@RequestMapping("/firstSPringMVC"),其中参数“/firstSPringMVC”正好与发送的请求“firstSPringMVC”代表同一个路径,SpringMVC就会用此welcomeToSpringMVC()方法来处理该请求。

通过<bean>指定视图解析器为“InternalResourceViewResolver”类型。 此解析器会把“请求处理类中处理方法的返回值”按照“前缀+方法返回值+后缀”的形式进行加工,并把加工后的返回值作为目的路径进行跳转。

此解析器的常见<property>属性值如下表,

属性 简介
prefix 给“请求处理类中处理方法的返回值”加上前缀,前缀就是该<property>的value值
suffix 给“请求处理类中处理方法的返回值”加上后缀,后缀就是该<property>的value值

例如,请求处理类FirstSpringDemo.java 的处理方法welcomeToSpringMVC()的返回值是“success”,就会给“success”加上前缀“/views/”和后缀“.jsp”,即加工后的返回值是“/views/success.jsp”。最后就会跳转到“/views/success.jsp”页面。

(7)开发前端结果显示页面

success.jsp

复制
  1. <body>
  2. Welcome to SpringMVC
  3. </body>

部署项目并执行index.jsp,结果如下,

图26-02

点击超链接My First SpringMVC Demo,结果如下,

图26-03

可以发现,该请求跳转到了超链接所指向的“firstSpingMVC”路径, 再通过“请求转发”跳转到了结果页/views/success.jsp

---恢复内容结束---

SpringMVC框架 SpringMVC的获取01的更多相关文章

  1. JavaWeb_(SpringMVC框架)SpringMVC&Spring&MyBatis整合

    JavaWeb_(SpringMVC框架)测试SpringMVC&Spring&MyBatis三大整合 传送门 1.整合ssm 3大框架 过程 a)导包 -> spring_Ja ...

  2. JavaWeb_(SpringMVC框架)SpringMVC入门

    Spring MVC又叫SpringWebMVC是一个轻量级的基于请求响应的表现层框架.它是Spring框架的一部分.SpringMVC与Struts2都可以替代原始Servlet技术. Spring ...

  3. SpringMVC 框架系列之初识与入门实例

    微信公众号:compassblog 欢迎关注.转发,互相学习,共同进步! 有任何问题,请后台留言联系! 1.SpringMVC 概述 (1). MVC:Model-View-Control Contr ...

  4. SpringMVC框架之第二篇

    6.参数绑定(重点) Springmvc作为表现层框架,是连接页面和service层的桥梁,它负责所有请求的中转.怎么从请求中接收参数是重点,这也体现了我们刚开始说的Springmvc的第一个作用:“ ...

  5. SpringMVC框架 课程笔记

    SpringMVC框架 课程笔记 第0章 SpringMVC框架的核心内容 1.SpringMVC 概述 2.SpringMVC 的 HelloWorld 3.使用 @RequestMapping 映 ...

  6. SpringMVC 02: SpringMVC响应get和post请求 + 5种获取前端数据的方式

    响应get和post请求 SpringMVC中使用@RequestMapping注解完成对get请求和post请求的响应 项目结构和配置文件与SpringMVC博客集中的"SpringMVC ...

  7. 教你搭建SpringMVC框架( 更新中、附源码)

    一.项目目录结构 二.SpringMVC需要使用的jar包 commons-logging-1.2.jar junit-4.10.jar log4j-api-2.0.2.jar log4j-core- ...

  8. SpringMVC框架图解析

    Spring框架提供了构造Web应用程序的全能MVC模块.Spring MVC分离了控制器.模型对象.分派器以及处理程序对象的角色,这种分离让它们更容易进行制定.是一个标准的MVC框架. 那你猜一猜哪 ...

  9. (文件)图片上传,Spring或SpringMVC框架

    spring或springMVC框架图片(文件)上传 页面部分,用一个简单的form表单提交文件,将图片或文件提交到服务端.一个输入框,用于输入图片的最终名称,一个file文件选择,用于选择图片. 页 ...

随机推荐

  1. Maven编译并打包Mahout CDH版源码

    目录 1. 问题描述 最近在使用Mahout里的推荐算法进行实验,由于业务需求,需要修改Mahout源码,将原本输出到HDFS上的结果输出到HBase中.由于Mahout发布的源码都是Maven项目, ...

  2. 解决MongoDB分页查询之count查询慢的问题

    一.概述 问题描述:在项目中优化动态查询分页接口时,发现count查询很慢(数据量大概30万),那如何解决这个问题呢? 解决方法:添加索引,多个查询条件可以添加复合索引 二.测试对比 1. 未加索引时 ...

  3. tar使用

    [tar使用] 1..tar.gz文件 压缩:tar -czvf dstFileName.tar.gz a.txt b.txt …… 解压:tar -xzvf fileName.tar.gz 2..t ...

  4. 网页中给超链接添加"是否确认"的方法

    最近在做数据库, 需要给一个"删除"链接增加是否确认的弹出框, 在网上查到了两种方法: 1, 先看看最麻烦的一种 <html xmlns="http://www.w ...

  5. Shiro和Spring 集合实现同一个账号只能一个人在线使用,其它人在使用进行剔除(八)

    1.实现原理其实就是自定义过滤器,然后登录时,A登录系统后,B也登录了,这个时候获取此账号之前的session给删除,然后将新的session放入到缓存里面去,一个账户对应一个有序的集合 编写自定义过 ...

  6. How To Check Member In Window VS With CplusPlus?

    实例说明 下面这个实例代码, 快速举例了在Win32应用程序下,对于内存的泄漏检查. 其中的原理,目前本人还是不太的理解. 只是记录了使用方法. 以后,看情况,会更新的. #ifdef _WIN32 ...

  7. cmake条件编译

    CMake的条件编译基于if elseif endif.3.0版本具体语法如下 if(expression) # then section. COMMAND1(ARGS ...) COMMAND2(A ...

  8. DataTable记录

    DataTable dt2 = dt.Copy();//复制结构和数据 //复制结构,不要数据 DataTable dt2 = new DataTable(); for (int i = 0; i & ...

  9. Redis 安装配制

    Redis 安装配制 redis 安装分为单机安装.伪集群安装.集群安装. Redis 下载地址:http://www.redis.cn/download.html Redis 在线测试工具:http ...

  10. 【美食技术】家庭自制DIY鸡蛋饼和疙瘩汤早餐视频教程

    鸡蛋饼制作方法 食材准备面粉 150g鸡蛋饼  鸡蛋饼鸡蛋 2个盐 适量水 适量(约300ml)油 20g荵花适量也可根据自己喜好准备一些调味料. 做法 鸡蛋饼是一种家常点心,做法很多,这里提供3种. ...