SSM-SpringMVC工作流程


前言

这里对代码流程说个大概,详细版看这个
版权声明:本文为优快云博主「麦田里的守望者呀」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/weixin_53353693/article/details/124057001


一、SpringMVC常用组件说明

DispatcherServlet:前端控制器,不需要工程师开发,由框架提供
作用:统一处理请求和响应,整个流程控制的中心,由它调用其它组件处理用户的请求

<!-- 添加对SpringMVC的支持 配置SpringMVC的前端控制器,对浏览器发送的请求统一进行处理-->
<servlet>
	<servlet-name>springMVC</servlet-name>
	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
	<init-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath:spring-mvc.xml</param-value>
	</init-param>
	<load-on-startup>1</load-on-startup>
	<async-supported>true</async-supported>
</servlet>

<!-- 如果url-pattern定义的是路径,那么以后所有对这个路径下资源的请求都会由servlet-name中定义的servlet处理;
	 如果url-pattern定义的是资源格式例如*.do等,那么对于所有符合这种格式的资源的请求都由指定的servlet处理。-->
<servlet-mapping>
	<servlet-name>springMVC</servlet-name>
	<url-pattern>*.html</url-pattern>
</servlet-mapping>

HandlerMapping:处理器映射器,不需要工程师开发,由框架提供(根据路径找到Controller)
作用:根据请求的url、method等信息查找Handler,即控制器方法

Handler:处理器,需要工程师开发(Controller的内容)
作用:在DispatcherServlet的控制下Handler对具体的用户请求进行处理

//如果ModelAndView对象不对viewName赋值,那么将默认为此方法的访问地址
@Controller
public class IndexController {
	@RequestMapping({"/index"})
    public ModelAndView index(@RequestParam(value="page",required=false)String page,
                              @RequestParam(value="typeId",required=false)String typeId,
                              @RequestParam(value="releaseDateStr",required=false)String releaseDateStr,
                              HttpServletRequest request) {
        ModelAndView mav = new ModelAndView();
        return mav;
    }
}

HandlerAdapter:处理器适配器,不需要工程师开发,由框架提供
作用:通过HandlerAdapter对处理器(控制器方法)进行执行(执行Controller)

ViewResolver:视图解析器,不需要工程师开发,由框架提供
作用:进行视图解析,得到相应的视图,例如:ThymeleafView、InternalResourceView、RedirectView

<!-- 视图解析器 当 ModelAndView 对象返回具体的 View 名称时,它会将前缀 prefix 和后缀 suffix 与具体的视图名称拼接-->
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
	<property name="prefix" value="/"/>
	<property name="suffix" value=".jsp"/>
</bean>

View:视图
作用:将模型数据通过页面展示给用户

二、SpringMVC流程

1.启动程序自动访问a.jsp

代码如下(示例):

2.a.jsp重定向index.html(一般从这里开始,浏览器发送请求)

如果是index.jsp则直接访问jsp页面,没有数据(因为没有经过前端控制器)
在这里插入图片描述

3.被拦截,进入到DispatcherServlet:前端控制器

![在这里插入图片描述](https://img-blog.csdnimg.cn/aadfdf575fa7413aaaf07029ec9b5072.png

4.执行Controller,获得数据与视图名称

Model 是返回的数据对象,View 是个逻辑上的 View

//如果ModelAndView对象不对viewName赋值,那么将默认为此方法的访问地址
@Controller
public class IndexController {
	@RequestMapping({"/index"})
    public ModelAndView index(@RequestParam(value="page",required=false)String page,
                              @RequestParam(value="typeId",required=false)String typeId,
                              @RequestParam(value="releaseDateStr",required=false)String releaseDateStr,
                              HttpServletRequest request) {
        ModelAndView mav = new ModelAndView();
        mav.addObject("blogList",list);	//添加数据
        return mav;
    }
}

5.返回到前端控制器,进行视图解析器,前面默认视图名称为index,根据下面程序解析得到路径 /index.jsp 返回到前端控制器

去进行视图解析,返回最后的View对象
在这里插入图片描述

6.前端控制器将数据与视图一齐返回到前台

前端控制器对视图view进行渲染。最后前端控制器向用户响应结果

总结

稍微整理了下SpringMVC的工作流程,感觉明确了很多,不至于很久没搞,一下子什么流程的忘完了。
我也不是很明确,如果有什么错误,请大佬指出。
一个有图有讲的完善MVC流程的博客地址原文链接:https://blog.youkuaiyun.com/weixin_53353693/article/details/124057001

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值