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

Servlet回顾

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

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

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

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

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

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

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

配置tomcat

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

理解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

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

5.添加 处理映射器

6.添加 处理器适配器

7.添加 视图解析器

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

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

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

11.配置Tomcat启动测试

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

建立一个lib目录

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

SpringMVC原理

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

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

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

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

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

6.Handler让具体的Controller执行。

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

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

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

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

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

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

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

相关推荐
极客先躯40 分钟前
高级java每日一道面试题-2024年10月3日-分布式篇-分布式系统中的容错策略都有哪些?
java·分布式·版本控制·共识算法·超时重试·心跳检测·容错策略
夜月行者1 小时前
如何使用ssm实现基于SSM的宠物服务平台的设计与实现+vue
java·后端·ssm
程序猿小D1 小时前
第二百六十七节 JPA教程 - JPA查询AND条件示例
java·开发语言·前端·数据库·windows·python·jpa
Yvemil71 小时前
RabbitMQ 入门到精通指南
开发语言·后端·ruby
sdg_advance1 小时前
Spring Cloud之OpenFeign的具体实践
后端·spring cloud·openfeign
潘多编程1 小时前
Java中的状态机实现:使用Spring State Machine管理复杂状态流转
java·开发语言·spring
_阿伟_2 小时前
SpringMVC
java·spring
代码在改了2 小时前
springboot厨房达人美食分享平台(源码+文档+调试+答疑)
java·spring boot
猿java2 小时前
使用 Kafka面临的挑战
java·后端·kafka
碳苯2 小时前
【rCore OS 开源操作系统】Rust 枚举与模式匹配
开发语言·人工智能·后端·rust·操作系统·os