01|第一课:Spring MVC环境搭建以及第一个程序
一、历史回顾
(一)、项目的简单架构:
项目简单架构二、环境搭建
(一)、springMVC搭建(IDEA)(建议用这个学习)
1、查看该地址:https://www.cnblogs.com/chenlinghong/p/8339555.html
2、在idea中引入相关命名空间,可以参考:https://segmentfault.com/q/1010000003706765
(二)、springMVC搭建(Eclipse)
1、jar包引入
springMVC基础jar包:spring-aop.jar、spring-bean.jar、spring-context.jar、spring-core.jar、spring-expression.jar、spring-web.jar、spring-webmvc.jar、commons-logging.jar。
将这些jar直接拷贝到“WEB-INF”---> “lib”目录下,如下图所示:
springMVC所需的jar注意:spring-***.4.x.jar以上的jar包需要的JDK的版本是1.7以上包含1.7,以下则是JDK版本是1.7以下。
2、springMVC配置文件(springmvc.xml)
Servlet --- SpringMVC
(1)、创建一个springmvc.xml文件(配置在src目录下)
(2)、引入命名空间(选中常用的命名空间:beans、aop、context、mvc)。
(3)、配置springMVC的扫描包以及视图解析器
配置有注解的包,告诉springMVC利用那个包里的处理类
配置springMVC的扫描包配置视图解析器
配置springMVC的视图解析器最终springMVC的springmvc.xml的相关配置,如下图所示:
3、web.xml配置
a、Servlet的处理请求的方式:
jsp ---> web.xml中的<url-parttern>配置请求的拦截,然后由<servlet-name>同名的<servlet>中的<servlet-class>中的java类去处理。具体处理如下图所示:
web.xml的处理b、配置web.xml中的springMVC相关内容
如果既有Servlet又有SpringMVC怎么处理呢?
普通的Servlet流程:请求-url-parttern,然后交给对应的Servlet去处理。
如果想用SpringMVC,如何告知程序?--如何让SpringMVC介入程序,需要配置一个SpringMVC自带的Servlet。它叫DispatcherServlet(这个是SpringMVC源码)。通过名字发现,它其实就是一个Servlet。jsp发送过来的请求。
通过springMVC在web.xml以下配置信息,拦截所有请求,交给springMVC处理。如下图所示:
web.xml中关于springMVC的配置springMVC在web.xml中的<url-pattern>配置的信息,下面就是交由springMVC处理:
(a)、“/” :这里代表一切请求。
(b)、“/user”:只拦截以“/user”开头的请求
(c)、“/user/abc.do”:只拦截该请求
(d)、“.action”:只拦截以“.action”结尾的请求。这里的目的是,项目中同时兼容springMVC和Servlet。想用SpringMVC去处理就用“.action”结尾的请求,不想用SpringMVC而是想用Servlet去处理就用这种方式。
servlet和springMVC处理不同的请求c、知识扩展
配置web.xml中的springMVC相关内容中,关于<init-param>配置springmvc.xml配置信息。到底是什么原因呢?
通过查看源码文件DispatcherServlet.class文件中,寻找“contextConfigLocation”成员变量(如果没有去父类中寻找),这个成员变量是指定spring配置文件的路径。下面是源码截图:
源码类如果不在web.xml中配置关于“contextConfigLocation”配置信息。那么通过直接启动示例项目则会报出Exception,并且告诉开发人员默认的springMVC的配置文件相关信息。如下图所示:
web.xml去掉<init-param>配置信息 默认的配置文件d、最终Web.xml的配置信息,如下图所示:
web.xml最终配置4、Controller(控制)
在src下建立一个包“com.test.springmvc”--->建立一个类“SpringHandler.java”(这里通过注解)。这里welcome方法的返回值,是与视图解析器关联的,关联的内容是“前缀” + 方法返回字符串 + “后缀”(此处是 view/success.jsp)。
5、请求、响应的jsp
(1)、请求(index.jsp)
请求(2)、响应(success.jsp)
响应三、springMVC原理
下面是针对视图解析器的简单描述。
解释视图解析器图2