首先了解MVC是什么
- mvc是模型(module)、视图(view)、控制器(controller)的简写,是一种软件设计规范
是将业务逻辑、数据、显示分离开来组织代码 - mvc主要是作用是降低了视图与业务逻辑之间的双向耦合
- mvc不是一种设计模式,mvc是一种架构模式
module(模型):数据模型,提供要展示的数据,包含数据和行为
view(视图):负责进行模型的展示,一般就是用户看到的界面
controller(控制器):接收用户的请求,委托给模型进行处理,处理完成以后把返回的数据模型返回给视图,由视图负责展示,控制器承担一个调度员你的责任
spring mvc的特点
- 轻量级,简单易学
- 高效、基于请求响应的mvc框架
- 与Spring兼容性好,无缝结合
- 约定优于配置
- 功能强大:RESTful、数据验证、格式化、本地化、主题等
- 简洁灵活
SpringMVC是围绕DispatcherServlet【调度servlet】来设计的
dispatcherservlet的作用就是将请求分发给不同的处理器
重点理解SpringMVC的执行流程
1.用户提交请求给页面(提交给dispatcherservlet)
实际上完成的操作是提交了要访问那个控制器
url分为三部分
服务器域名
部署在服务器上的web站点
控制器
2.HandlerMapping为处理器映射。dispatcherservlet调用HandlerMapping寻找要使用哪个handler
3.HandlerExcution表示具体的Handler,其主要作用是根据url寻找对应的控制器
4.HandlerExcution将解析后的信息传递给dispatcherservlet,如解析控制器映射
<!--处理器映射器-->
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
<!--BeanNameUrlHandlerMapping:创建一个bean去寻找对应的解析器-->
<bean id="/hello" class="com.superman.controller.HelloController"/>
5.HandAdapter表示处理器适配器,按照特定的规则去寻找handle
6.handler去执行具体的controller
<!--处理器适配器-->
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
<!--BeanNameUrlHandlerMapping:创建一个bean去寻找对应的解析器-->
<beclass="com.superman.controller.HelloControan id="/hello" ller"/>
7.controller将具体的执行信息返回给handleradapter,如moduleandeview
public class HelloController implements Controller {
@Override
public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
ModelAndView mv = new ModelAndView();
//业务代码
String result="hello spring";
mv.addObject("msg",result);
//视图跳转
mv.setViewName("test");
return mv;
}
}
8.handleradapter将视图逻辑名或模型传递给dispatcherservlet
9.dispatcherservlet调用视图解析器(viewresolver)来解析handleradapte传递的逻辑视图名
10.视图解析器将解析的逻辑视图名传给dispatcherservlet,然后dispatcherservlet去调用这个view
<!--视图解析器-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver">
<!--配置前缀-->
<property name="prefix" value="/WEB-INF/jsp/"/>
<!--配置后缀-->
<property name="suffix" value=".jsp"/>
</bean>
如果遇到代码没有问题出现404错误,需要检察环境,检查打包过程中是否有lib文件,没有的话需要手动创建并且导入必要的依赖