SpringMVC学习|Servlet回顾、理解SpringMVC小demo、SpringMVC原理

Servlet回顾

创一个空的maven父工程,导入相关依赖,测试的、spring的、servlet的、jsp以及jstl标签的。

SpringMVC学习|Servlet回顾、理解SpringMVC小demo、SpringMVC原理_第1张图片

 创建一个空的maven子项目,并添加web支持

SpringMVC学习|Servlet回顾、理解SpringMVC小demo、SpringMVC原理_第2张图片

SpringMVC学习|Servlet回顾、理解SpringMVC小demo、SpringMVC原理_第3张图片

为了保险起见,在子项目中添加servlet和jsp的依赖

SpringMVC学习|Servlet回顾、理解SpringMVC小demo、SpringMVC原理_第4张图片

编写一个Servlet类,实现HttpServlet接口获取前端参数,以及重定向,这里为了方便先不做业务层调用。

SpringMVC学习|Servlet回顾、理解SpringMVC小demo、SpringMVC原理_第5张图片

根据重定向的地址在对应文件夹下编写相应jsp页面文件,直接在session里取msg的信息显示出来

SpringMVC学习|Servlet回顾、理解SpringMVC小demo、SpringMVC原理_第6张图片

在web.xml中配置我们刚编写的Servlet的路由

SpringMVC学习|Servlet回顾、理解SpringMVC小demo、SpringMVC原理_第7张图片

再编写一个表单提交页面,表单提交后跳转至我们刚才配置的Servlet的路由,这里信息不完全,应该还有个input的submit提交,这里input的name为method,也就是我们输入信息的名字为method,和我们Servlet中根据method获取到我们输入的信息一致

SpringMVC学习|Servlet回顾、理解SpringMVC小demo、SpringMVC原理_第8张图片

SpringMVC学习|Servlet回顾、理解SpringMVC小demo、SpringMVC原理_第9张图片

配置tomcat

SpringMVC学习|Servlet回顾、理解SpringMVC小demo、SpringMVC原理_第10张图片

SpringMVC学习|Servlet回顾、理解SpringMVC小demo、SpringMVC原理_第11张图片

SpringMVC学习|Servlet回顾、理解SpringMVC小demo、SpringMVC原理_第12张图片

启动项目,这里因为我们的表单页面没写好,我们就直接根据我们配置的Servlet路由/hello去访问Servlet,并且,我们把提交的名字为method的信息手动加上去,?method=add,这里Servlet根据method获取到信息为add。并将“执行了add方法”存到了session中并且名字为msg,重定向到了我们刚才定义的test.jsp页面,并在页面中取出session中的msg信息并显示了出来,所以我们得到了如下所示的页面。

SpringMVC学习|Servlet回顾、理解SpringMVC小demo、SpringMVC原理_第13张图片

理解SpringMVC小demo

Spring的web框架围绕DispatcherServlet设计。 DispatcherServlet的作用是将请求分发到不同的处理器。从Spring 2.5开始,使用Java 5或者以上版本的用户可以采用基于注解的controller声明方式。Spring MVC框架像许多其他MVC框架一样,以请求为驱动,围绕一个中心Servlet分派请求及提供其他功能,DispatcherServlet是一个实际的Servlet (它继承自HttpServlet 基类)。

1.新建一个Moudle , 添加web的支持!

2.确定导入了SpringMVC 的依赖!

3.配置web.xml注册DispatcherServlet

SpringMVC学习|Servlet回顾、理解SpringMVC小demo、SpringMVC原理_第14张图片

4,编写SpringMVC的配置文件! 名称: springmvc-servlet.xml

5.添加 处理映射器

6.添加 处理器适配器

7.添加 视图解析器

SpringMVC学习|Servlet回顾、理解SpringMVC小demo、SpringMVC原理_第15张图片

8.编写我们要操作业务Controller ,要么实现Controller接口,要么增加注解; 需要返回一个ModelAndView,装数据,封视图;

SpringMVC学习|Servlet回顾、理解SpringMVC小demo、SpringMVC原理_第16张图片

9.编写重定向的hello.jsp页面,从ModelAndView中取出我们在Controller中存的msg

SpringMVC学习|Servlet回顾、理解SpringMVC小demo、SpringMVC原理_第17张图片

10.将自己的类交给SpringloC容器,注册bean,在springmvc-servlet.xml中配置,id为访问该controller的路由

SpringMVC学习|Servlet回顾、理解SpringMVC小demo、SpringMVC原理_第18张图片

11.配置Tomcat启动测试

SpringMVC学习|Servlet回顾、理解SpringMVC小demo、SpringMVC原理_第19张图片

SpringMVC学习|Servlet回顾、理解SpringMVC小demo、SpringMVC原理_第20张图片

可能遇到的问题: 访问出现404,排查步骤

建立一个lib目录

SpringMVC学习|Servlet回顾、理解SpringMVC小demo、SpringMVC原理_第21张图片

SpringMVC学习|Servlet回顾、理解SpringMVC小demo、SpringMVC原理_第22张图片SpringMVC学习|Servlet回顾、理解SpringMVC小demo、SpringMVC原理_第23张图片

在lib中加入依赖,应用后,再次运行即可

SpringMVC学习|Servlet回顾、理解SpringMVC小demo、SpringMVC原理_第24张图片SpringMVC学习|Servlet回顾、理解SpringMVC小demo、SpringMVC原理_第25张图片

SpringMVC原理

SpringMVC学习|Servlet回顾、理解SpringMVC小demo、SpringMVC原理_第26张图片

1.DispatcherServlet表示前置控制器,是整个SpringMVC的控制中心。用户发出请求DispatcherServlet接收请求并拦截请求。

我们假设请求的url为:http://localhost:8080/SpringMVC/hello
如上url拆分成三部分:
http://localhost:8080服务器域名
SpringMVC部署在服务器上的web站点
hello表示控制器
通过分析,如上url表示为: 请求位于服务器localhost:8080上的SpringMVC站点的hello控
制器。

2.HandlerMapping为处理器映射。DispatcherServlet调用HandlerMapping,HandlerMapping根据请求url查找Handler。

HandlerMapping在springmvc-servlet.xml中去对照相应的路由所对应的controller

SpringMVC学习|Servlet回顾、理解SpringMVC小demo、SpringMVC原理_第27张图片

3.HandlerExecution表示具体的Handler,其主要作用是根据url查找控制器,如上url被查找控制器为: hello。

就找到对应/hello的HelloController控制器

4. HandlerExecution将解析后的信息传递给DispatcherServlet,如解析控制器映射等

5.HandlerAdapter表示处理器适配器,其按照特定的规则去执行Handler。

6.Handler让具体的Controller执行。

SpringMVC学习|Servlet回顾、理解SpringMVC小demo、SpringMVC原理_第28张图片

7.Controller将具体的执行信息返回给HandlerAdapter,如ModelAndView.

8.HandlerAdapter将视图逻辑名或模型传递给DispatcherServlet.

9. DispatcherServlet调用视图解析器(ViewResolver)来解析HandlerAdapter传递的逻辑视图名。

在springmvc-servlet.xml中配置了视图解析器,将ModelAndView中重定向的hello,拼接上具体的路由,/WEB-INF/jsp/hello.jsp,这是完整的重定向地址。

SpringMVC学习|Servlet回顾、理解SpringMVC小demo、SpringMVC原理_第29张图片

10.视图解析器将解析的逻辑视图名传给DispatcherServlet。

11.DispatcherServlet根据视图解析器解析的视图结果,调用具体的视图

12.最终视图呈现给用户。

你可能感兴趣的:(SSM,spring,java,后端,servlet,maven,tomcat,spring,boot)