SpringMVC框架 SpringMVC的获取01
---恢复内容开始---
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
<servlet>
<servlet-name>springDispatcherServlet</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springDispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</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
…
<body>
<a href="firstSpringMVC">My First SpringMVC Demo</a>
</body>
…
如上,我们使用超链接向web.xml中的<url-pattern>
发送一个可以被拦截的请求,然后交由SpringMVC处理。
(5)开发请求处理类
FirstSpringDemo.java
package org.lanqiao.handler;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class FirstSpringDemo
{
@RequestMapping("/firstSpringMVC")
public String welcomeToSpringMVC()
{
return "success";
}
}
如上,使用@Controller
注解来标识本类是一个SpringMVC Controller
对象; 使用@RequestMapping
注解来映射请求的URL。
例如,在index.jsp发出的请求“/firstSPringMVC”,将会被映射到@RequestMapping("/firstSPringMVC")
所标识的方法来处理。
(6)编写SpringMVC配置文件
我们在“步骤(2)”时,已经将SpringMVC的路径设置到了src
下,并且命名为springmvc.xml。
springmvc.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd">
<!-- 配置需要扫描的包 -->
<context:component-scan base-package="org.lanqiao.handler">
</context:component-scan>
<!-- 配置试图解析器:把请求处理类的返回值,加工成最终的视图路径-->
<bean class="org.springframework.web.servlet.
view.InternalResourceViewResolver">
<property name="prefix" value="/views/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
</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
…
<body>
Welcome to SpringMVC
</body>
…
部署项目并执行index.jsp,结果如下,
图26-02
点击超链接My First SpringMVC Demo,结果如下,
图26-03
可以发现,该请求跳转到了超链接所指向的“firstSpingMVC”路径, 再通过“请求转发”跳转到了结果页/views/success.jsp。
---恢复内容结束---
SpringMVC框架 SpringMVC的获取01的更多相关文章
- JavaWeb_(SpringMVC框架)SpringMVC&Spring&MyBatis整合
JavaWeb_(SpringMVC框架)测试SpringMVC&Spring&MyBatis三大整合 传送门 1.整合ssm 3大框架 过程 a)导包 -> spring_Ja ...
- JavaWeb_(SpringMVC框架)SpringMVC入门
Spring MVC又叫SpringWebMVC是一个轻量级的基于请求响应的表现层框架.它是Spring框架的一部分.SpringMVC与Struts2都可以替代原始Servlet技术. Spring ...
- SpringMVC 框架系列之初识与入门实例
微信公众号:compassblog 欢迎关注.转发,互相学习,共同进步! 有任何问题,请后台留言联系! 1.SpringMVC 概述 (1). MVC:Model-View-Control Contr ...
- SpringMVC框架之第二篇
6.参数绑定(重点) Springmvc作为表现层框架,是连接页面和service层的桥梁,它负责所有请求的中转.怎么从请求中接收参数是重点,这也体现了我们刚开始说的Springmvc的第一个作用:“ ...
- SpringMVC框架 课程笔记
SpringMVC框架 课程笔记 第0章 SpringMVC框架的核心内容 1.SpringMVC 概述 2.SpringMVC 的 HelloWorld 3.使用 @RequestMapping 映 ...
- SpringMVC 02: SpringMVC响应get和post请求 + 5种获取前端数据的方式
响应get和post请求 SpringMVC中使用@RequestMapping注解完成对get请求和post请求的响应 项目结构和配置文件与SpringMVC博客集中的"SpringMVC ...
- 教你搭建SpringMVC框架( 更新中、附源码)
一.项目目录结构 二.SpringMVC需要使用的jar包 commons-logging-1.2.jar junit-4.10.jar log4j-api-2.0.2.jar log4j-core- ...
- SpringMVC框架图解析
Spring框架提供了构造Web应用程序的全能MVC模块.Spring MVC分离了控制器.模型对象.分派器以及处理程序对象的角色,这种分离让它们更容易进行制定.是一个标准的MVC框架. 那你猜一猜哪 ...
- (文件)图片上传,Spring或SpringMVC框架
spring或springMVC框架图片(文件)上传 页面部分,用一个简单的form表单提交文件,将图片或文件提交到服务端.一个输入框,用于输入图片的最终名称,一个file文件选择,用于选择图片. 页 ...
随机推荐
- libcurl 调用curl_easy_getinfo( ) 返回错误码对照
//执行设置好的操作 res = curl_easy_perform(easy_handle); //获取HTTP错误码 ; curl_easy_getinfo(easy_handle, CURLIN ...
- eclipse双击变量高亮显示开关
在eclipse/myeclipse中如果不小心把变量的高亮显示弄丢了.可真是件愁人的事,不过看到这你就不用愁了 windows-> preferences-> java-> E ...
- 改成maven工程
configure->convert to Maven Project
- 使用navicat的SSH隧道连接数据库
这几天在连接远程数据库的时候,发现用navicat的普通方法居然连接不上,然后就想用ssh连接试试,开始是报错的,错误是这样的: lost connection to Mysql server at ...
- Workgroup&Domain(Realm)
[工作组 Work Group] 在一个网络内,可能有成百上千台电脑,如果这些电脑不进行分组,都列在“网上邻居”内,可想而知会有多么乱.为了解决这一问题,Windows 9x/NT/2000就引用了“ ...
- 二分图 and code1170 双栈排序
6.6二分图 二分图是这样一个图: 有两顶点集且图中每条边的的两个顶点分别位于两个顶点集中,每个顶点集中没有边直接相连接. 无向图G为二分图的充分必要条件是,G至少有两个顶点,且其所有回路的长度均为偶 ...
- 谈谈WhatsApp一年设计经历和收获
以下内容由Mockplus团队翻译整理,仅供学习交流,Mockplus是更快更简单的原型设计工具. 关于WhatApp和Facebook如何实现规模设计的思考 我已经在Facebook担任产品经理 ...
- 这样的UX设计师简历,HR分分钟给你来电话
BLS调查显示,软件开发和IT,用户体验设计,产品经理和项目管理这三个职位在未来有非凡的发展前景.其中,用户体验设计师是目前最有需求的创意产业工作之一.10年里就业增长率高达22.1%,工作岗位数3, ...
- Android使用ListView使用方法
Android使用ListView应该注意的地方 在ListView中设置Selector为null会报空指针? mListView.setSelector(null);//空指针 试试下面这种: ...
- 自定义beans.xml文件实现Spring框架
经过一天的补习,学习文件加载,java反射,JDom等知识,到了晚上终于能够搭出一个基于配置文件的简单spring框架实现! 首先我们先看看这个问题: 下面是两副图左边是项目结构图,右边是UML图: ...