Spring学习笔记5-MVC-1

本文介绍Spring MVC框架的优势和发展历程,详细讲解如何通过Spring MVC搭建Web应用程序,包括配置流程、请求映射、视图解析等内容。
1、概述
Spring3.0 后全面超越 Struts2,成为最优秀的 MVC 框架
Spring MVC 通过一套 MVC 注解,让 POJO 成为处理请求的控制器,而无须实现任何接口。
支持 REST 风格的 URL 请求
采用了松散耦合可插拔组件结构,比其他 MVC 框架更具扩展性和灵活性
2、开发步骤
加入 jar包
在 web.xml 中配置 DispatcherServlet
加入 Spring MVC 的配置文件
编写处理请求的处理器,并标识为处理器
编写视图
3、JAR文件
spring-aop/spring-beans/spring-context/spring-core/spring-expression/spring-web/spring-webmvc
4、配置DispatcherServlet
DispatcherServlet 默认加载 /WEB-INF/<servletName-servlet>.xml 的 Spring 配置文件, 启动 WEB 层的 Spring 容器。可以通过 contextConfigLocation 初始化参数自定义配置文件的位置和名称
<servlet>
<servlet-name>test</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext-mvc.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>test</servlet-name>
<url-pattern>*.action</url-pattern>
</servlet-mapping>
5、创建SpringMVC配置文件
配置自动扫描的包
<context:component-scan base-package="com.test.springmvc"></context:component-scan>
配置视图名称解析器
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/pages"/>
<property name="suffix" value=".jsp"/>
</bean>
6、创建请求处理器
类注解@Controller、方法注解@RequestMapping("/testSpringMVC")
7、@RequestMapping映射请求
Spring MVC 使用 @RequestMapping 注解为控制器指定可以处理哪些 URL 请求
@RequestMapping类定义处:提供初步的请求映射信息。相对于 WEB 应用的根目录
@RequestMapping方法处:提供进一步的细分映射信息。相对于类定义处的 URL。若类定义处未标注 @RequestMapping,则方法处标记的 URL 相对于WEB 应用的根目录
DispatcherServlet 截获请求后,就通过控制器上@RequestMapping 提供的映射信息确定请求所对应的处理方法。
@Controller@RequestMapping("/test")
//类定义处标记的@RequestMapping 限定了处理器类可以处理所有 URI 为 /test 的请求,它相对于 WEB 容器部署的根路径
public class MyTest
@RequestMapping("/springMVC")
//处理器类可以定义多个处理方法,处理来自/test下的请求,这个方法处理的是:/test/springMVC请求
public String myTest(){}
@RequestMapping 除了可以使用请求 URL 映射请求外还可以使用请求方法、请求参数及请求头映射请求
@RequestMapping 的 value、method、params 及 heads分别表示请求 URL、请求方法、请求参数及请求头的映射条件,他们之间是与的关系,联合使用多个条件可让请求映射更加精确化。
params 和 headers支持简单的表达式:
--param1: 表示请求必须包含名为 param1 的请求参数
--!param1: 表示请求不能包含名为 param1 的请求参数
--param1 != value1: 表示请求包含名为 param1 的请求参数,但其值不能为 value1
--{“param1=value1”, “param2”}: 请求必须包含名为 param1 和param2的两个请求参数,且 param1 参数的值必须为 value1
Ant 风格资源地址支持 3 种匹配符:
?:匹配文件名中的一个字符 –
*:匹配文件名中的任意字符 –
**:** 匹配多层路径 –
@RequestMapping 还支持 Ant 风格的 URL:
/user/*/createUser: 匹配 
/user/aaa/createUser、/user/bbb/createUser 等 URL
/user/**/createUser: 匹配 
/user/createUser、/user/aaa/bbb/createUser 等 URL
/user/createUser??: 匹配 
/user/createUseraa、/user/createUserbb 等 URL
8、@RequestMapping扩展:@PathVariable映射URL绑定的占位符
带占位符的 URL 是 Spring3.0 新增的功能,该功能在SpringMVC 向 REST 目标挺进发展过程中具有里程碑的意义
通过 @PathVariable 可以将 URL 中占位符参数绑定到控制器处理方法的入参中:URL 中的 {xxx} 占位符可以通过@PathVariable("xxx") 绑定到操作方法的入参中。
@RequestMapping("/delete/{id}")
public String delete(@PathVariable("id") Integer id){......... return "redirect:/xxx.action"}
9、REST
1、Representational  State  Transfer:(资源)表现层状态转化
2、资源Resources:一个具体的存在,可以通过URI来访问
3、表现层Representation:把资源具体呈现出来的形式
4、状态转化State Transfer:每发出一个请求,就代表客户端和服务器的一次交互过程。HTTP协议是一个无状态协议即所有状态都保存在服务器上,
因此,如果客户端想要操作服务器则必须通过某种手段,让服务器发生状态转化,而这种转化是建立在表现层上的,更准确来说:服务器端发生的变化
体现在表现层,具体来说HTTP协议里面,4个表示操作方式的动词:GET/POST/PUT/DELETE分别代表4种操作,GET用来获取资源,POST用来新建资源,PUT用来更新资源,DELETE用来删除资源
5、HiddenHttpMethodFilter:浏览器中form表单只支持GET/POST请求,而Spring3.0添加一个过滤器可以将这些请求转化为标准的HTTP方法从而支持剩余的DELETE/PUT请求。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值