MVC架构
M:model,数据模型(JavaBean,业务等)
V:View,展示给用户的试图,也就是页面,视图中会对Model层的数据进行对应的处理
C:Controller,控制器,用于处理请求,打包数据模型,转发、跳转视图,也就是Servlet
Spring-MVC,基于Java实现的Web框架,本质上为Servlet
特点
- 轻量级,部署快
- 基于请求与响应实现(Servlet的核心内容)
- 约定优于配置,也就是说按照官方提供的格式进行编码即可,否则容易出错
DispatcherServlet
Spring-MVC的核心处理器,中心控制器,此控制器接管所有请求与响应的处理
配置
web.xml中配置DispatcherServlet,接管所有的请求
springmvc org.springframework.web.servlet.DispatcherServlet contextConfigLocation classpath:springmvc-servlet.xml 1 springmvc /
请求映射配置中/ 与 /* 的区别
/ :会匹配所有的请求,但是不会解析jsp页面,也就是说xxx.jsp不会被解析
/* :会匹配所有请求与页面,当xxx.jsp被解析时,最后视图返回效果就变为了x/x/xxx.jsp.jsp
Springmvc-Servlet.xml
BeanNameUrlHandlerMapping:映射处理器,将请求映射到对应的处理器中
SimpleControllerHandlerAdapter:处理器适配器,将请求适配到对应的处理器,并执行service()
InternalResourceViewResolver:视图解析器,解析所有请求中的视图名称,并查找对应的资源,将数据模型打包分发
编写Controller层
所有的公共配置完成后,接着来处理对应的控制器
public class DemoController implements Controller { @Override public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception { ModelAndView mv = new ModelAndView(); mv.addObject("msg", "A B C D"); mv.setViewName("hello"); return mv; } }
Controller接口:Spring提供的控制层接口,用于处理请求,核心对象ModelAndView
配置映射:
接着在对应的页面中获取由后台返回的数据即可
常见问题
404:可能是由于IDEA的项目部署中,没用引入tomcat对应的jar文件所导致
页面正常调整,但无法获取到msg的变量信息:原因是JSP和Servlet的版本导致EL表达式功能关闭,在JSP页面上添加<%@page isELIgnored="false"%>即可;
Spring-MVC执行原理
1,客户端发送请求到服务器(url)
2,请求通过web.xml中的配置,转接到DispatcherServlet
3,DispatcherServlet会将此请求交由映射器HandlerMapping,映射器会根据请求返回此请求映射的对象
4,映射器将返回到DispatcherServlet,返回的映射器会交由适配器HandlerAdapter
5,适配器HandlerAdapter会映射适配到对应的Controller进行请求处理
6,Controller连接、执行业务,封装数据模型,Controller最后返回一个ModelAndView对象
7,在ModelAndView封装了处理请求后的资源,Model和View,最终转接到DispatcherServlet
8,DispatcherServlet拿到返回的ModelAndView对象之后,通过视图解析器VIewResolver,解析ModelAndView中对应的资源路径名称,返回DispatcherServlet
——注:在Spring MVC允许多个ViewResolve存在,但InternalResourceViewResolver永远在最后一个
9、最终DispatcherServlet会根据解析的视图结果,返回对应的资源页面给客户端
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)