SpringMVC基础知识
作者:gqk
前言 :
本章目标:
-
什么是SpringMVC
-
SpringMVC框架原理
-
SpringMVC入门程序
1,什么是Spring和SpringMVC
Spring 配备构建Web 应用的全功能MVC框架。Spring可以很便捷地和其他MVC框架集成,如Struts,Spring 的MVC框架用控制反转把业务对象和控制逻辑清晰地隔离。它也允许以声明的方式把请求参数和业务对象绑定。
spring mvc是一个基于mvc的web框架。spring mvc是spring框架的一个模块,springmvc和spring无需通过中间整合层进行整合。
2,SpringMVC框架原理(重要)
掌握几个器:前端控制器,处理器映射器,处理器适配器,试图解析器
第一步:发起请求到前端控制器(DispatcherServlet)
第二步:前端控制器请求HandlerMapping查找Handler可以根据xml配置、注解进行查找
第三步:处理器映射器HandlerMapping向前端控制器返回Handler
第四步:前端控制器调用处理器适配器去执行Handler
第五步:处理器适配器去执行Handler
第六步:Handler执行完成给适配器返回ModelAndView
第七步:处理器适配器向前端控制器返回ModelAndView。ModelAndView是springmvc框架的一个底层对象,包括 Model和view
第八步:前端控制器请求视图解析器去进行视图解析,根据逻辑视图名解析成真正的视图(jsp)
第九步:视图解析器向前端控制器返回View
第十步:前端控制器进行视图渲染。视图渲染将模型数据(在ModelAndView对象中)填充到request域
第十一步:前端控制器向用户响应结果
SpringMVC中的组件:
- 前端控制器DispatcherServlet(SpringMVC已经封装好无需我们开发),可以用来接收请求,响应结果
- 处理器映射器HandlerMapping:根据请求的url来查找对应的Handler
- 处理器适配器HandlerAdapter:按照特定的规则去执行Handler
- 处理器Handler:是一个控制器(编写的时候要按照适配器的规则去编写)
- 视图解析器View resolver:进行视图解析
3,SpringMVC入门程序
idear导入本地maven插件
new->project->maven
创建好后我们需要手动去创建一些目录:手动建webapp的目录
创建好后 是没有web,xml文件的需要导入web.xml文件(选择项目结构)
选择 facets,点击+号, 选择 web
添加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 http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0"> <servlet> <servlet-name>springmvc</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>classpath:springmvc.xml</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>springmvc</servlet-name> <!-- 第一种:*.action,访问以.action结尾,由DispatcherServlet进行解析 第二种:/,所有访问的地址由DispatcherServlet进行解析,对静态文件的解析需要配置不让DispatcherServlet进行解析, 使用此种方式和实现RESTful风格的url 第三种:/*,这样配置不对,使用这种配置,最终要转发到一个jsp页面时,仍然会由DispatcherServlet解析jsp地址, 不能根据jsp页面找到handler,会报错 --> <url-pattern>*.action</url-pattern> </servlet-mapping> </web-app>
编写控制器(控制器的编写和适配器有关系)
注意:
javax.servlet.http.HttpServletRequest httpServletRequest可能会报错 解决方法下面看(没有servlet的jar)
package com.gqk.controller; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.Controller; import java.util.Date; public class HelloHandler implements Controller { public ModelAndView handleRequest(javax.servlet.http.HttpServletRequest httpServletRequest, javax.servlet.http.HttpServletResponse httpServletResponse) throws Exception { ModelAndView mv = new ModelAndView(); mv.setViewName("index"); mv.addObject("date",new Date()); return mv; } }
IntelliJ IDEA关于“cannot resolve symbol servlet”的解决
右键项目->open module setting,如下图所示
.libraries-> + ->Java->选择路径(tomcat安装目录下lib->tomcat-api.jar)
选择对应的jar
配置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:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="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.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<bean name="/hello.action" class="com.gqk.controller.HelloHandler"/>
<!-- 处理器映射器
将bean的name作为url进行查找,需要在配置Handler时指定beanname(就是url)
-->
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
<!-- 视图解析器
解析jsp
-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- 配置jsp路径的前缀 -->
<property name="prefix" value="/"/>
<!-- 配置jsp路径的后缀 -->
<property name="suffix" value=".jsp"/>
</bean>
</beans>
启动tomcat访问
http://localhost:8086/hello.action
总结:
-
导入环境
-
配置前端控制器
-
编写控制器
-
配置控制器
-
配置适配器
-
配置映射器
-
配置试图解析器
-
项目部署访问