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

news2024/12/23 20:56:02

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1006620.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Python】从入门到上头—常用内置模块基础应用(13)

文章目录 datetimebase64hashlibhmacurllibXMLHTMLParserrandom小结 datetime datetime是Python处理日期和时间的标准库。 获取当前日期时间 from datetime import datetime now datetime.now() # 获取当前datetime print(now) #2023-09-13 10:28:48.621343 print(type(no…

JSP ssm 网上求职管理系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 JSP ssm 网上求职管理系统是一套完善的web设计系统(系统采用SSM框架进行设计开发,springspringMVCmybatis),对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采…

3900页手册415集视频426G资料迅为RK3568开发板

资料优势 专为3568编写|迅为原创|拒绝网络拼凑 20个手册2800页手册进行结构分层适用于学习与开发 为了方便大家清晰快速的学习,迅为iTOP-3568开发板手册资料全面升级,对手册内容进行了结构分层,共计20个文档,超2800页的资料专为…

sql注入之盲注总结

死在山野的风里,活在自由的梦里 sql注入之盲注总结 布尔 - 逻辑判断时间 - 延时判断报错 - 报错回显(强制性报错 )以DWVA靶场为例 盲注就是在注入的过程中,获取的数据不能显示到前端页面,此时,我们需要利用…

2023年武汉初级、中级、副高工程师职称评审条件是什么?甘建二告诉你

武汉中级职称评审通知已经出来了,武汉市中级、副高申报时间是8月31--9月18号,那么评这些职称需要满足什么条件呢?今天甘建二给大家分享一下评职称学历年限、专业等是怎么计算的,点赞收藏慢慢看。 一、武汉初级职称评审条件&#x…

【MySQL进阶】SQL性能分析

一、SQL性能分析 1.SQL执行频率 MySQL 客户端连接成功后,通过 show [session|global] status 命令可以提供服务器状态信 息。通过如下指令,可以查看当前数据库的 INSERT 、 UPDATE 、 DELETE 、 SELECT 的访问频次: -- session 是查看当…

jvm深入研究文档--整体概念

阿丹: 精通JVM对于一个java工程师非常重要,要是深入了解了jvm就可以有效的面对下面的问题 程序调优:JVM的配置和调优对于程序的运行有着至关重要的影响。不同的业务场景需要不同的JVM配置,比如设置不同的垃圾收集器、调整新生代和…

软考 - 计算机组成与体系笔记

数据的表示 进制转化 二进制转十进制(十进制以D表示) 从右往左,用二进制位上的数字乘以2的n次幂的和(n从0开始1累加) 十进制转二进制(二进制以B表示) 十进制数不断除以2直至到0,得…

电子智能充气泵pcba/芯片方案

智能充气泵是一种常见的气体压缩设备,它可以将空气或其他气体压缩成高压气体,用于充气、输送、压缩等工业和生活领域。智能充气泵的原理是利用机械或电动力量将气体压缩,使其体积减小,压力增大,从而达到充气的目的。电…

【echarts】如何将iconfont转换成echart所需的path路径 echarts折线图、柱状图如何设置自定义svg图标

步骤 下载iconfont图标到本地,用浏览器打开,右键查看源代码,或者用开发IDE软件打开,找到path d...,这个就是我们要传递给echart的icon的值。 代码示例: legend: {data: data?.map((item) > item.comp…

Fiddler抓http数据

目录 参考博客 一、Fiddler配置二、分析Http请求1. Http消息结构简介1.1 Request请求消息1.2 Response响应消息 2. 分析Get接口2.1 请求示例2.2 查看Get请求2.3 查看Get响应 3 分析Post接口 参考博客 一、Fiddler配置 首先需要对Fiddler抓取Https请求进行相关配置&#xff1a…

【九章斩题录】C/C++:判定字符是否唯一

精品题解 🔥 《九章斩题录》 👈 猛戳订阅 面试题 01.01. 判定字符是否唯一 ✅ 模板:C语言 class Solution { public:bool isUnique(string astr) {} }; 💭 思考:《程序员面试金典》里的题,这题和剑指Off…

typescript错误代码 error TS2451: 无法重新声明块范围变量“age”。ts(2451)

今天心血来潮写ts教程的时候发现一个问题,如下 短短的两行代码,竟然都报错,无法重新声明块范围变量age\。明明与其他文件没有相互依赖,却会提示 [ts] 无法重新声明块范围变量“age”。。且该文件目录夹下,也没有其他文件。为什么会有这个报错呢&#xff…

NZ系列工具NZ03:利用右键进行筛选操作

【分享成果,随喜正能量】生活就是这样,别人看的是结果,而自己撑的却是整个过程。曾经的微笑,是一种心情,现在的微笑,只不过是一种表情。如果情绪不能用言语说出来,那就去吹吹风吧。。 我的教程…

Python爬虫被封ip的解决方案

目录 一、网站反爬虫机制有哪些 二、Python爬虫被封ip的原因 三、爬虫被封IP怎么解决 四、代码示例 在爬虫程序运行过程中,被封禁IP地址是常见的问题之一。这通常是由于目标网站采取了反爬虫机制,例如限制单个IP地址的请求频率或识别请求特征等。当爬…

-60V -40V -100V 30A 50A 100A P管大电流 正极,负极做关断的电路图 解决方案N沟道,P沟道MOSFET开关电路图介绍

P沟道MOS管工作原理以及参数?中广芯源提供原理图纸,估计对需求者有帮助。 P沟道MOS管工作原理:金属氧化物半导体场效应(MOS)晶体管可分为N沟道与P沟道两大类, P沟道硅MOS场效应晶体管在N型启衡旅硅衬底悄凳上有两个P区&#xff0…

【80天学习完《深入理解计算机系统》】第十五天 4.1 Y86-64指令集与Verilog HDL

专注 效率 记忆 预习 笔记 复习 做题 欢迎观看我的博客,如有问题交流,欢迎评论区留言,一定尽快回复!(大家可以去看我的专栏,是所有文章的目录)   文章字体风格: 红色文字表示&#…

【GNN 03】PyG

工具包安装: 不要pip安装 https://github.com/pyg-team/pytorch_geometrichttps://github.com/pyg-team/pytorch_geometric import torch import networkx as nx import matplotlib.pyplot as pltdef visualize_graph(G, color):plt.figure(figsize(7, 7))plt.xtic…

10分钟学会Hive之用户自定义函数UTF开发

1. 用户自定义函数概述 用户自定义函数简称UDF,源自于英文user-defined function。自定义函数总共有3类,是根据函数输入输出的行数来区分的,分别是: UDF(User-Defined-Function)普通函数&#xff…

Excel 公式函数:学习基本示例

数据准备 对于本教程,我们将使用以下数据集。 家居用品预算 S / N项目数量价格小计价格适中吗?1芒果96002橘子312003番茄125004食用油565005汤力水133900 房屋建筑项目时间表 S/NITEM开始日期结束日期持续时间(天)1调查土地0…