SpringMVC学习-helloSpringMVC
SpringMVC学习-helloSpringMVC执行原理理解
原理理解
- 新建一个Moudle,添加web支持
- 确定导入了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>
- 配置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>
- 编写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>
- 添加处理器映射
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" />
- 添加处理器适配器
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" />
- 添加视图解析器
<!--视图解析器: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>
- 编写我们要操作业务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;}
}
- 将自己的类交给SpringIOC容器,注册bean
<!--BeanNameUrlHandlerMapping:根据bean id适配--><bean id="/hello" class="com.lyh.controller.HelloController" />
- 在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>
- 启动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相关推荐
- SpringMVC:学习笔记(11)——依赖注入与@Autowired
SpringMVC:学习笔记(11)--依赖注入与@Autowired 使用@Autowired 从Spring2.5开始,它引入了一种全新的依赖注入方式,即通过@Autowired注解.这个注解允许 ...
- SpringMVC 学习-异常处理 SimpleMappingExceptionResolver 类
SpringMVC 学习-异常处理 SimpleMappingExceptionResolver 类 参考文章: (1)SpringMVC 学习-异常处理 SimpleMappingException ...
- SpringMVC:学习笔记(10)——整合Ckeditor且实现图片上传
SpringMVC:学习笔记(10)--整合Ckeditor且实现图片上传 配置CKEDITOR 精简文件 解压之后可以看到ckeditor/lang下面有很多语言的js,如果不需要那么多种语言的,可 ...
- (转)SpringMVC学习(三)——SpringMVC的配置文件
http://blog.csdn.net/yerenyuan_pku/article/details/72231527 读者阅读过SpringMVC学习(一)--SpringMVC介绍与入门这篇文章后 ...
- springmvc学习笔记(10)-springmvc注解开发之商品改动功能
springmvc学习笔记(10)-springmvc注解开发之商品改动功能 springmvc学习笔记(10)-springmvc注解开发之商品改动功能 标签: springmvc springmv ...
- SpringMVC学习(五)——零配置实现SpringMVC
文章目录 1.引言 2.搭建过程 2.1 开发环境搭建 2.2 项目搭建 2.2.1 首先看`web.xml`配置 2.2.2 增加`WebApplicationInitializer`的实现类 2. ...
- SpringMVC学习(二)——快速搭建SpringMVC开发环境(注解方式)
文章目录 说明 1.工程搭建 2.注解配置 2.1.context:annotation-config说明 2.2.context:component-scan配置说明 2.3.mvc:annotat ...
- springmvc学习笔记(19)-RESTful支持
springmvc学习笔记(19)-RESTful支持 标签: springmvc springmvc学习笔记19-RESTful支持 概念 REST的样例 controller REST方法的前端控 ...
- SpringMVC:学习笔记(5)——数据绑定及表单标签
SpringMVC--数据绑定及表单标签 理解数据绑定 为什么要使用数据绑定 基于HTTP特性,所有的用户输入的请求参数类型都是String,比如下面表单: 按照我们以往所学,如果要获取请求的所有参数 ...
最新文章
- 人脸识别:insightface自定义数据集制作 | 附练手数据集
- bzoj 1233: [Usaco2009Open]干草堆tower【dp+单调栈】
- 响应式网页之媒体查询
- 基于(7, 5)归零非删余Turbo码的参数识别与分析
- 函数的命名空间以及作用域
- ubuntu下chromium 安装flash player
- linux 编写sh文件,linux编写shell脚本程序one官方
- UnityContainer中RegisterType与RegisterInstance的区别
- paip.VOB DVD视频的无损分割与截取
- linux sleeping进程多_你知道Linux进程的睡眠和唤醒操作?
- Android四大组件(activity task stack)
- 西班牙国家德比次回合时间确定 中国球迷需熬夜
- C# 中的 delegate, Lambda 表达式 和 event
- c语言程序结构设计的心得,写给新手 选择结构程序设计总结
- 腾讯地图,百度地图兴趣点(POI)分类关键词表
- Spine新手基础教程
- android没有捂脸表情,微信新emoji表情有哪些 新emoji表情安卓机怎么没有
- 软著变更申请流程是什么 软著变更需要准备哪些材料?
- UOS利用系统安装光盘做本地apt源安装软件包
- 浏览器html5音画不同,在每个浏览器中看起来都不一样的div