SpringMVC学习-helloSpringMVC执行原理理解

原理理解

  1. 新建一个Moudle,添加web支持
  2. 确定导入了SpringMVC的依赖!
<dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.3.16</version></dependency><dependency><groupId>javax.servlet</groupId><artifactId>servlet-api</artifactId><version>2.5</version></dependency><dependency><groupId>javax.servlet.jsp</groupId><artifactId>jsp-api</artifactId><version>2.2</version></dependency><dependency><groupId>javax.servlet</groupId><artifactId>jstl</artifactId><version>1.2</version></dependency>
</dependencies>
  1. 配置web.xml,注册DispatcherServlet
<?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"><!--注册DispatcherServlet--><servlet><servlet-name>springmvc</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!--关联一个springmvc的配置文件:【servlet-name】-servlet.xml--><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:springmvc-servlet.xml</param-value></init-param><!--启动级别-1--><load-on-startup>1</load-on-startup></servlet><!-- / 匹配所有的请求:(不包括.jsp)--><!-- /* 匹配所有的请求:(包括.jsp)--><servlet-mapping><servlet-name>springmvc</servlet-name><url-pattern>/</url-pattern></servlet-mapping></web-app>
  1. 编写SpringMVC配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttps://www.springframework.org/schema/beans/spring-beans.xsd"></beans>
  1. 添加处理器映射
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" />
  1. 添加处理器适配器
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" />
  1. 添加视图解析器
<!--视图解析器:DispatcherServlet给他的ModelAndView1.获取了ModelAndView的数据2.解析ModelAndView的视图名字3.拼接视图名字,找到对应的视图4.将数据渲染到视图
-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" ><!--前缀--><property name="prefix" value="/WEB-INF/jsp" /><!--后缀--><property name="suffix" value=".jsp" />
</bean>
  1. 编写我们要操作业务Controller,要么是实现Controller接口,要么增加注解,需要返回一个ModelAndView,装数据,封视图
// 先导入Controller接口
public class HelloController implements Controller {@Overridepublic ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {// ModelAndViewModelAndView modelAndView = new ModelAndView();//业务代码String result = "HelloSpringMVC";modelAndView.addObject("msg",result);//视图跳转modelAndView.setViewName("test");return modelAndView;}
}
  1. 将自己的类交给SpringIOC容器,注册bean
 <!--BeanNameUrlHandlerMapping:根据bean id适配--><bean id="/hello" class="com.lyh.controller.HelloController" />
  1. 在WEB-INF目录下新建jsp包,写要跳转到的jsp页面,显示ModelAndView存放的数据,这里为test.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body>${msg}
</body>
</html>
  1. 启动tomact测试

可能遇到404问题:
1、查看控制台输出,看是否缺少jar包
2、如果jar包存在,显示无法输出,在IDEA项目发布中添加lib依赖
3、重启Tomact生效

执行流程

1、DispatcherServlet表示前端控制器,是SpringMVC的控制中心,用户发出请求,DispatcherServlet接收请求并拦截请求
2、handlerMapping为处理器映射,DispatcherServlet调用HandlerMapping,HandlerMapping根据请求url查找handler
3、HandlerExcution表示具体的Handler,其主要作用是根据url查找控制器,如上url被查找控制器为hello
4、HandlerExcution将解析后的信息传递给DispatcherServlet,如解析控制器映射
5、HandlerAdapter表示处理器适配器,千兆特定的规则去执行Handler
6、Hanler让具体的Controller执行
7、Controller具体的执行信息返回给HandlerAdapter,如ModelAndView
8、HandlerApdater将试图逻辑名或模型传递给DispatcherServlet
9、DispatcherServlet调用视图解析器(ViewResolver)来解析HandlerAdapter传递的逻辑视图名
10、视图解析器讲解系的逻辑视图名传递给DispatcherServlet
11、DispatcherServlet根据视图解析器解析的试图结果,调用具体的视图
12、最终视图呈现给用户

此项目仅用于理解原理,在真正的开发中不会写这么复杂,一般使用注解

SpringMVC学习-helloSpringMVC相关推荐

  1. SpringMVC:学习笔记(11)——依赖注入与@Autowired

    SpringMVC:学习笔记(11)--依赖注入与@Autowired 使用@Autowired 从Spring2.5开始,它引入了一种全新的依赖注入方式,即通过@Autowired注解.这个注解允许 ...

  2. SpringMVC 学习-异常处理 SimpleMappingExceptionResolver 类

    SpringMVC 学习-异常处理 SimpleMappingExceptionResolver 类 参考文章: (1)SpringMVC 学习-异常处理 SimpleMappingException ...

  3. SpringMVC:学习笔记(10)——整合Ckeditor且实现图片上传

    SpringMVC:学习笔记(10)--整合Ckeditor且实现图片上传 配置CKEDITOR 精简文件 解压之后可以看到ckeditor/lang下面有很多语言的js,如果不需要那么多种语言的,可 ...

  4. (转)SpringMVC学习(三)——SpringMVC的配置文件

    http://blog.csdn.net/yerenyuan_pku/article/details/72231527 读者阅读过SpringMVC学习(一)--SpringMVC介绍与入门这篇文章后 ...

  5. springmvc学习笔记(10)-springmvc注解开发之商品改动功能

    springmvc学习笔记(10)-springmvc注解开发之商品改动功能 springmvc学习笔记(10)-springmvc注解开发之商品改动功能 标签: springmvc springmv ...

  6. SpringMVC学习(五)——零配置实现SpringMVC

    文章目录 1.引言 2.搭建过程 2.1 开发环境搭建 2.2 项目搭建 2.2.1 首先看`web.xml`配置 2.2.2 增加`WebApplicationInitializer`的实现类 2. ...

  7. SpringMVC学习(二)——快速搭建SpringMVC开发环境(注解方式)

    文章目录 说明 1.工程搭建 2.注解配置 2.1.context:annotation-config说明 2.2.context:component-scan配置说明 2.3.mvc:annotat ...

  8. springmvc学习笔记(19)-RESTful支持

    springmvc学习笔记(19)-RESTful支持 标签: springmvc springmvc学习笔记19-RESTful支持 概念 REST的样例 controller REST方法的前端控 ...

  9. SpringMVC:学习笔记(5)——数据绑定及表单标签

    SpringMVC--数据绑定及表单标签 理解数据绑定 为什么要使用数据绑定 基于HTTP特性,所有的用户输入的请求参数类型都是String,比如下面表单: 按照我们以往所学,如果要获取请求的所有参数 ...

最新文章

  1. 人脸识别:insightface自定义数据集制作 | 附练手数据集
  2. bzoj 1233: [Usaco2009Open]干草堆tower【dp+单调栈】
  3. 响应式网页之媒体查询
  4. 基于(7, 5)归零非删余Turbo码的参数识别与分析
  5. 函数的命名空间以及作用域
  6. ubuntu下chromium 安装flash player
  7. linux 编写sh文件,linux编写shell脚本程序one官方
  8. UnityContainer中RegisterType与RegisterInstance的区别
  9. paip.VOB DVD视频的无损分割与截取
  10. linux sleeping进程多_你知道Linux进程的睡眠和唤醒操作?
  11. Android四大组件(activity task stack)
  12. 西班牙国家德比次回合时间确定 中国球迷需熬夜
  13. C# 中的 delegate, Lambda 表达式 和 event
  14. c语言程序结构设计的心得,写给新手 选择结构程序设计总结
  15. 腾讯地图,百度地图兴趣点(POI)分类关键词表
  16. Spine新手基础教程
  17. android没有捂脸表情,微信新emoji表情有哪些 新emoji表情安卓机怎么没有
  18. 软著变更申请流程是什么 软著变更需要准备哪些材料?
  19. UOS利用系统安装光盘做本地apt源安装软件包
  20. 浏览器html5音画不同,在每个浏览器中看起来都不一样的div

热门文章

  1. 打造现代应用的利器,VMware Tanzu显露王者风范 (1)
  2. SNS2124SNS2224SNS2248 光纤交换机配置
  3. CAD制图软件中的沿线布置功能如何使用?
  4. java+上传文件夹
  5. 决胜5G新战场,联通沃云全新战略重磅发布
  6. Derby 和 Geronimo 使用感觉
  7. D3D 中LPD3DXSPRITE(点精灵)对图片进行缩放旋转透明处理
  8. 《微信小程序商城界面设计实战》--学习笔记作业
  9. HBuilder表单提交php出现内部服务器错误
  10. R语言绘图:条形图——barplot