springMVC 学习笔记(一):spring 入门 什么是 springMVC
springMVC 是 spring 框架的一个模块,springMVC 和 spring 无需通过中间整合层进行整合。springMVC 是一个基于 mvc 的 web 框架。
在 spring 中如下图所示:
springMVC 组件及工作流程 组件springMVC 的主要组件大致有以下这些:
前端控制器 DispatcherServlet: 接收请求,响应结果,相当于转发器。该组件能减少其他组件之间的耦合度。
处理器映射器 HandlerMapping:根据请求的 url 查找 Handler。
处理器适配器 HandlerAdapter: 按照特定规则去执行 Handler。
处理器 Handler:指定要执行的程序。
视图解析器 View resolver:进行视图解析,根据视图名解析成真正的视图。
视图 View:View 是一个接口,实现类支持不同的 View 类型。
工作流程图 工作流程1 发起请求到前端控制器 DispatcherServlet;
2 前端控制器请求 HandlerMapping 查找 Handler ,可以根据 xml 配置,注解进行查找;
3 处理器映射器 HandlerMapping 向前端控制器返回 Handler;
4 前端控制器调用处理器适配器去执行 Handler;
5 处理器适配器去执行 Handler;
6 Handler 执行完成给适配器返回 ModelAndView,其中 ModelAndView 是 springMVC 框架的一个底层对象,包括 Model 和 view;
7 处理器适配器向前端控制器返回 ModelAndView;
8 前端控制器去请求视图解析器去进行视图解析,根据逻辑视图名解析成真正的视图(jsp);
9 视图解析器向前端控制器返回 View;
10 前端控制器进行视图渲染,视图渲染将模型数据(在 ModelAndView对象中)填充到 request 域;
11 前端控制器向用户响应结果。
简单来说,就是遵循 MVC软件架构模式。
入门程序举个栗子,编写个程序来实现 springMVC 的功能。
在这里我们还是在 IntellJ IDEA 中使用 maven 来快速搭建开发环境。
打开 idea,创建新项目,选择 maven,勾选 create from archetype,选中 webapp选框。
一路选择后, maven便帮我们自动生成了一个简单的 web 文件夹,但这个并不是 maven 标准结构,我们选择 File -> Project Structure -> Modules,修改文件结构如下:
修改 pom.xml,添加 springMVC 及相关的依赖:
<dependencies> <!-- springmvc 框架 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${org.springframework-version}</version> </dependency> <!-- jsp操作 --> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <!-- servlet支持 --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </dependency> <!-- standard包 --> <dependency> <groupId>org.apache.taglibs</groupId> <artifactId>taglibs-standard-impl</artifactId> <version>1.2.5</version> </dependency> </dependencies>配置前端控制器,修改 web.xml:
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee " version="3.1"> <!-- springmvc 前端控制器 --> <servlet> <servlet-name>spring</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!-- contextConfigLocation 配置 springMVC 加载的配置文件(配置处理器映射器,适配器等等) 若不配置,默认加载 WEB-INF/servlet 名称-servlet(springmvc-servlet.xml) --> <init-param> <param-name>contextConfigLocation</param-name> <param-value>WEB-INF/springmvc-servlet.xml</param-value> </init-param> </servlet> <!-- 拦截请求 --> <servlet-mapping> <servlet-name>spring</servlet-name> <url-pattern>*.action</url-pattern> </servlet-mapping> </web-app>创建映射文件 springmvc-servlet.xml , 配置 Handler, 处理器映射器,处理器适配器,视图解析器等:
<?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:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans "> <!-- 配置Handler --> <bean/> <!-- 处理器映射器 将 bean 的 name 作为 url 进行查找,需要在配置 Handler 时指定 beanname(就是 url) --> <bean/> <!-- 处理器适配器 所有处理器适配器都实现了HandlerAdapter 接口 --> <bean/> <!-- 视图解析器 解析 jsp 解析,默认使用 jstl 标签,classpath 下要有jstl 的包 --> <bean></bean> </beans>然后创建 pojo 类 Items.java 和 controller 类 ItemsController.java,这里我们没有连接数据库,作为演示,直接在 pojo 类中填充静态数据即可: