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

2023-09-13 14:46:45

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.最终视图呈现给用户。

更多推荐

G. Best ACMer Solves the Hardest Problem

Problem-G-Codeforces有一天,一位优秀的ACMer将离开这个领域,面对新的挑战,就像前辈们所做的一样。他们中的一些人接管了家族企业,一些人在失业的边缘挣扎。一些人有勇气展示自己,成为专业的Ingress玩家,一些人仍在不断挑战自己的极限,尝试解决ProjectEuler中的所有问题。但是,对于前国王B

用go实现cors中间件

目录一、概述二、简单请求和预检请求简单请求预检请求三、使用go的gin框架实现cors配置1、安装2、函数一、概述CORS(Cross-OriginResourceSharing)是一种浏览器安全机制,用于控制在Web应用程序中不同源(Origin)之间的资源共享。一个源是由协议(例如http或https)、主机(例如

Caffe在Linux下的安装,编译,实验

第一部分:Caffe简介caffe是有伯克利视觉和学习中心(BVLC)开发。作者是伯克利博士贾杨清。caffe是一个深度学习(deeplearning)框架。其具有易读、快速和模块化思想。第二部分:Caffe安装与配置2.1配置环境:ubuntu14.04LTS,使用Homebrew进行安装。暂不使用GPU,所以使用C

从利用Arthas排查线上Fastjson问题到Java动态字节码技术(下)

上一篇从Arthas的源码引出了Java动态字节码技术,那么这一篇就从几种Java字节码技术出发,看看Arthas是如何通过动态字节码技术做到无侵入的源码增强;Java大部分情况下都是解释执行的,也就是解释.class文件,所以如果我们想对原代码进行增强的话,直接接的手段便是从源文件.java入手,使用静态代理、动态代

【微信小程序开发】宠物预约医疗项目实战-环境配置与Vant UI集成

第一章宠物预约医疗项目实战-环境配置与VantUI集成文章目录前言一、VantUI是什么?二、使用步骤2.1安装node.js2.2通过npm安装vant2.3修改app.json2.4修改project.config.json2.5构建npm包2.6使用组件全局引入和局部引入全局引入局部引入前言Vant是一个轻量、可

数据中台基本概念

数据中台数据中台(DataMidway)是一个用于集成、存储、管理和分析数据的中心化平台或架构。它的目标是将组织内散布在各个系统、应用程序和数据源中的数据整合到一个可统一访问和管理的中心位置,以支持数据驱动的决策制定和业务需求。数据中台具备异构数据统一计算、存储的能力,同时让分散杂乱的数据通过规范化的方式管理起来。数据

虹科方案 | LIN/CAN总线汽车零部件测试方案

文章目录摘要一、汽车零部件测试的重要性?二、虹科的测试仿真工具如何在汽车零部件测试展露头角?三、应用场景**应用场景1:方向盘开关的功能测试****应用场景2:各类型电机的控制测试****应用场景3:RGB氛围灯的功能测试**四、虹科LIN总线相关产品详情总结摘要虹科的LIN/CAN总线汽车零部件测试方案是一款优秀的集

Python 基于人脸识别的实验室智能门禁系统的设计,附可视化界面

1简介本基于人脸识别的实验室智能门禁系统通过大数据和信息化的技术实现了门禁管理流程的信息化的管理操作。平台的前台页面通过简洁的平台页面设计和功能结构的分区更好的提高用户的使用体验,没有过多的多余的功能,把所有的功能操作都整合在功能操作的导航栏之中。更加突出业务的展示和详细的功能操作,使用户在使用本平台时功能一目了然。在

Tailwind CSS 初学者指南

TailwindCSS是一个实用程序优先的CSS框架,允许您快速构建现代网站,而无需离开HTML。它是Web开发社区中最流行和使用最广泛的CSS框架之一,每月下载量超过250万次1。在本文中,我们将探讨TailwindCSS2023的路线图,以及如何开始学习和使用这个神奇的工具。文章目录什么是TailwindCSS?为

数据结构——时间复杂度与空间复杂度

目录一.什么是空间复杂度与时间复杂度1.1算法效率1.2时间复杂度的概念1.3空间复杂度的概念二.如何计算常见算法的时间复杂度2.1大O的渐近表示法使用规则三.如何计算常见算法的空间复杂度3.1大O渐近表示法3.2面试题——消失的数字3.3面试题——旋转数组一.什么是空间复杂度与时间复杂度1.1算法效率分为两种,一种是

Fiddler实现android手机抓包

目录一、fiddler的简介二、安装fiddler三、fiddler设置1.设置HTTPS2.设置允许远程连接3.重启fillder,使得配置生效4.查看端口监听四、android端设置1、首先查看电脑的IP地址,确保手机和电脑在同一个局域网内2、设置代理五、抓包测试原文链接一、fiddler的简介fiddler是位于

热文推荐