第一节:开发准备
介绍之前先说下我的开发调试环境:
JDK 1.7的64位 、Eclipse Kepler(J2EE) 64位的、Tomcat 7.0.42 mysql 5.1、SQLyog(这是我的标配)
springmvc 版本 3.2(这个大家可以到网上自行下载最好要有源码)
第二节:开发与配置
第一步发送request请求,这个一步我就不说了,之前有看到慕课有很多朋友分享了http协议的介绍传送。如果你想学习java可以来这个群,首先是五三二,中间是二五九,最后是九五二,里面有大量的学习资料可以下载。
开发环境介绍过了,下面来创建一个工程:如下图 整个工程结构
在hanson.springmvc.pojo中新建一个Items类包含属性如下图:
用户发送请求到前端控制器。前端控制器需要在web.xml中配置:
<!-- 配置前端控制器 -->
工程结构图:
到这里前端配置器就算配置完了,目前这个配置足够我们学习springmvc了。
你需要知道的是:前端控制器的作用,如何配置,以及拦截什么样的请求。对于restful风格的请求我会在后面讲到。
第三节 Handler的开发
开发之前先说一说处理器适配器。说之前就得说一说适配器模式我们就拿生活中的例子来解释一下适配器模式,现在只有一个三相的插座,但是现在却有一个三相插头的洗衣机和一个二相插头的电视机,那么洗衣机当然没有问题,可以插到三相插座上,但是电视机却没办法插了,于是人们想出了一个适配器,这个适配器一头插在这个三相插座上,另外一端放出一个二相插座,然后电视就插在了这个适配器的二相插座上了,最后洗衣机,电视机都可以使用了。总结起来就是一句:将一个类的接口适配成用户所期待的。
加上之前说的,想要看清3D电影,就必须带上3D眼镜。
springmvc中也是这样要求处理器实现多种接口才能被处理器适配器执行。
下面来介绍几个处理器适配器,以及他们能够执行的处理器。
第一个:
org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter简单的处理器适配器,此适配器能够执行实现org.springframework.web.servlet.mvc.Controller接口的处理器,来看下源码:
public class SimpleControllerHandlerAdapter implements HandlerAdapter {
既然要求这个适配器支持的类型是Controller类型的,那我们就实现这个接口
代码如下:
package hanson.springmvc.web.controller;
第四节
ModelAndView对象封装了模型数据和视图对象,有一个组件叫视图解析器,就是用来解析这个对象的,它可以把这个对象解析成两部分一个为Model另一个为View然后将model渲染到View上面(简单点就是将model里面的数据放到页面),最终返回给用户。
我用静态数据模拟一下这个实现。
@Override
jsp中代码:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
再看下工程结构:
第五节
下面我们来看看之前提到的视图解析器org.springframework.web.servlet.view.InternalResourceViewResolver类是用来解析jsp的它要求类路径下面有jstl的jar。源码如下:
重点:到这里你应该知道处理器适配器(简单的处理器适配器、处理器适配器执行处理器,处理器应该具备那些要求才能被执行,视图解析器、以及ModelAndView对象)
第六节
疑问?前端控制器要怎么才能根据URL找到处理器呢?
本节知识点:处理器映射器
前端控制器会去调用处理器映射器找到处理器。
现在来介绍一下处理器映射器:
org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping:
表示将定义的Bean名字作为请求的url,需要将编写的controller在spring容器中进行配置, 且指定bean的name为请求的url,且必须以.action结尾(web.xml配置)。
<!-- 配置BeanNameUrl处理器映射器 -->