springmvc笔记及简单了解

     2022-05-03     192

关键词:

1.Springmvc是什么

  Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发,Spring Web MVC也是要简化我们日常Web开发的。

技术分享

1.1  Springmvc 架构图

技术分享

技术分享

  1、DispacherServlet前端控制器

  负责用户请求和响应,是一个中央控制器(调度),调用HandlerMapping查找Handler,调用HandlerAdapter处理器适配器执行Handler,调用ViewResolver视图解析器去解析视图,有了DispacherServlet有利于框架扩展,减少了各各组件之间耦合性。

 

  2、HandlerMapping处理器映射器

  不需要开发,使用框架提供的

  负责查找Handler(常用action),通过xml配置方式或注解方式将Handler类和request请求

  Handler链接地址进行对应配置。

  3、HandlerAdapter处理器适配器

  不需要开发,使用框架提供的

  Springmvc提供了很多种适配器,注解适配器支持注解开发、原始servlet适配器(HanderRequestAdapter)支持原始servlet的执行。

  负责执行Handler,适配器是按照一定的规则去执行Handler,调用Handler返回的结果是ModelAndView,ModelAndView将Model和view封装起来(模型数据和视图)

 

  4、ViewResolver视图解析器

  不需要开发,使用框架提供的

  负责进行视图解析,返回View,框架执行很多类型的View(jstlView、pdfView。。。)

 

  5、Handler处理器(需要开发)

  需要开发,按照适配器的规则开发,比如适配器要求Handler实现某个接口,Handler必须实现接口。

 

  6、View视图页面(jsp) (需要开发)

  需要开发,jsp+jstl。为了视图通用性建议使用第三方框架,jstl。

 

  处理器映射器、处理器适配器、视图解析器称为springmvc的三大件。

  HTTP 协议简介

1.1  HTTP 简介/HTTP   SSL

HTTP(Hypertext Transfer Protocol,超文本传输协议①)是在万维网上进行通信时

所使用的协议方案。HTTP 有很多应用,但最著名的是用于Web 浏览器和Web 服

务器之间的双工通信。

1.2   HTTP报文

技术分享

报文组成

技术分享

起始行

报文的第一行就是起始行,在请求报文中用来说明要做些什么,在响应报文中说

明出现了什么情况。

• 首部字段

起始行后面有零个或多个首部字段。每个首部字段都包含一个名字和一个值,为

了便于解析,两者之间用冒号(:)来分隔。首部以一个空行结束。添加一个首

部字段和添加新行一样简单。

• 主体

空行之后就是可选的报文主体了,其中包含了所有类型的数据。请求主体中包括

了要发送给Web 服务器的数据;响应主体中装载了要返回给客户端的数据。起

始行和首部都是文本形式且都是结构化的,而主体则不同,主体中可以包含任意

的二进制数据(比如图片、视频、音轨、软件程序)。当然,主体中也可以包含

文本

  1.3  请求实例

技术分享

  1.4   一些常见的HTTP方法

GET 从服务器向客户端发送命名资源

PUT 将来自客户端的数据存储到一个命名的服务器资源中去

DELETE 从服务器中删除命名资源

POST 将客户端数据发送到一个服务器网关应用程序

HEAD 仅发送命名资源响应中的HTTP 首部

  1.5   HTTP状态码

常见状态码

200 OK。文档正确返回

302 Redirect(重定向)。到其他地方去获取资源

404 Not Found(没找到)。无法找到这个资源

405 Method Not Allowed(不允许使用的方法)

406 Not Acceptable(无法接受) 客户端可以指定一些参数来说明希望接受哪些类型的实体。服务器没有资源与客可接受的URL 相匹配时可使用此代码

 

请求中有一个所请求的URI 不支持的方法。响应中

应该包含一个Allow 首部,以告知客户端所请求的

资源支持使用哪些方法

  1.6状态码分类

总体范围已定义范围类  别

100~199 100~101 信息

200~299 200~206 成功

300~399 300~305 重定向

400~499 400~415 客户端错误

500~599 500~505 服务器错误

1.7  与springmvc关系(struts2 请求的路径)

技术分享

技术分享

技术分享

处理器映射器:

处理器适配器:使用下面的适配器

技术分享

通过上面代码可以看出,如果Handler实现了Controller接口,那么就可以完成执行工作。

 

视图解析器

如果在classpath下有jstl的jar包,那么就不需要配置如下内容

技术分享

第四步:编写Handler处理器(编写action)

按照适配器要求的规则

配置action-servlet.xml,代码如下:

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3 xmlns:context="http://www.springframework.org/schema/context"
 4 xmlns:p="http://www.springframework.org/schema/p"
 5 xmlns:mvc="http://www.springframework.org/schema/mvc"
 6 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 7 xsi:schemaLocation="http://www.springframework.org/schema/beans
 8       http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
 9       http://www.springframework.org/schema/context
10       http://www.springframework.org/schema/context/spring-context.xsd
11       http://www.springframework.org/schema/mvc
12       http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">
13 
14     <bean id="u9Controller" name="/u9.action" class="com.u9vip.springmvc.controller.U9Controller"></bean>
15          <!-- 视图解析器 -->
16          <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
17           <!-- 前缀名 -->
18          <property name="prefix" value="/WEB-INF/U9VIP/"></property>
19           <!-- 后缀名 -->
20           <property name="suffix"  value=".jsp"></property>
21          </bean>
22 </beans>

第五步:编写jsp视图页面

在WEB-INF/jsp目录下建立Welcome.jsp,主要代码如下:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
        <head><title>My JSP ‘U9FirstSpringMVC.jsp‘ starting page</title>
        </head>
        <body>
              Hello,Spring  MVC ${username}<br>
        </body>
</html>

第六步:启动tomcat运行工程

 启动服务器,输入http://localhost:8080/SpringMVC02/u9.action 访问测试

简析执行过程

  (1)启动服务器后,当我们向服务器发送u9.action请求时,首先被在web.xml中配置的前端控制器DispatcherServlet拦截到。

  (2)前端控制器把此请求转交给后端控制器,下面分析转交过程:当在action-servlet.xml中查找能执行u9.action请求的映射处理器时,发现没有能处理此请求的映射处理器,这时便使用默认的映射处理器BeanNameUrlHandlerMapping:This is the default implementation used by the DispatcherServlet, along with DefaultAnnotationHandlerMapping (on Java 5 and higher). 我们还需注意:这种后端控制器的bean Name必须以“/”开头,并且要结合DispatcherServlet的映射配置。同时beanName支持通配符配置。比如如果配置:*.action 时,当访问U9VIP.action时也可以成功访问到U9Controller类。

  (3)BeanNameUrlHandlerMapping处理器,会查找在spring容器中是否在名为“u9.action”的bean实例。当查找到此实例后,则把此bean作为处理此请求的后端控制器。同时把自身加到映射处理器链上,并向处理器链传递此请求。

  (4)后端控制器进行处理,并返回视图。

 

springmvc学习笔记---springmvc的helloworld(代码片段)

SpringMVC概述SpringMVC是Spring为展现层提供的一个基于MVC设计理念的优秀Web框架,是目前最主流的MVC框架之一。Spring3.0后,SpringMVC全面超越Struts2,成为最优秀的MVC框架。SpringMVC通过一套MVC注解,让POJO成为处理请求的... 查看详情

springmvc-整合ssm框架(狂神学习笔记)2021-10-03(代码片段)

SpringMVC-狂神(整合SSM框架)1、整合SSM1.环境要求环境:IDEA/EclipseMySQL5.7+Tomcat9Maven3.6要求:需要熟练掌握MySQL数据库,Spring,JavaWeb及MyBatis知识,简单的前端知识2.数据库环境创建一个存放书籍数据的... 查看详情

深入了解rabbitmq工作原理及简单使用(代码片段)

深入了解RabbitMQ工作原理及简单使用RabbitMQ系列文章RabbitMQ在Ubuntu上的环境搭建深入了解RabbitMQ工作原理及简单使用RabbitMQ交换器Exchange介绍与实践RabbitMQ事务和Confirm发送方消息确认——深入解读使用Docker部署RabbitMQ集群你不知道的R... 查看详情

springmvc学习笔记(15)-数据回显

springmvc学习笔记(15)-数据回显springmvc学习笔记15-数据回显pojo数据回显方法简单类型数据回显本文介绍springmvc中数据回显的几种实现方法数据回显:提交后,如果出现错误,将刚才提交的数据回显到刚才的提交页面。pojo数据回显... 查看详情

sass学习笔记--初步了解函数运算条件判断及循环

函数sass定义了很多函数可供使用,当然你也可以自己定义函数,以@fuction开始。sass的官方函数链接为:sassfuction,实际项目中我们使用最多的应该是颜色函数,而颜色函数中又以lighten减淡和darken加深为最,其调用方法为lighten($co... 查看详情

synflood了解和简单防范笔记!

一:什么是CentOSSYNFlood攻击?CentOSSYNFlood攻击利用的是IPv4中TCP协议的三次握手(Three-WayHandshake)过程进行的攻击。这个协议规定,如果一端想向另一端发起TCP连接,它需要首先发送TCPSYN(synchronize)包到对方。对方收到后发送一个TCP... 查看详情

9/5课堂笔记及感受赵世鹏

...oyoung,以后上课要认真听讲了,老师人还是不错的。放张笔记照片如下,好像大了点。。。。。。 语文哇,语文老师真的喜欢,人又好,长 查看详情

springmvc学习笔记四:simplemappingexceptionresolver异常处理

SpringMVC的异常处理,SimpleMappingExceptionResolver只能简单的处理异常当发生异常的时候,根据发生的异常类型跳转到指定的页面来显示异常信息ExceptionController.java处理器packagecom.orange.controller;importorg.springframework.stereotype.Controller;importorg 查看详情

springmvc框架设计及功能扩展(代码片段)

目录SpringMVC基本架构实现一个简单的SpringMVC控制层方式一:实例级别的映射 方式二:方法级别的映射DispatcherServlet View重新定义ModelAndView 拦截处理器SpringMVC源码分析 SpringMVC安全相关ShiroJWTOAuth2.0SpringMVC请求处理流程SpringMVC基本架... 查看详情

usdp使用笔记flink配置及简单测试(代码片段)

Flink配置Flink配置及简单测试上一篇:https://lizhiyong.blog.csdn.net/article/details/123560865将USDP2.0自带的Flink更换为Flink1.14后,还没有来得及改配置。不改配置用起来是有问题的,所以。。。本文主要就是改配置及简单测试效... 查看详情

usdp使用笔记flink配置及简单测试(代码片段)

Flink配置Flink配置及简单测试上一篇:https://lizhiyong.blog.csdn.net/article/details/123560865将USDP2.0自带的Flink更换为Flink1.14后,还没有来得及改配置。不改配置用起来是有问题的,所以。。。本文主要就是改配置及简单测试效... 查看详情

hping简单了解安装和使用笔记!

hping简介:Hping是一个命令行下使用的TCP/IP数据包组装/分析工具,其命令模式很像Unix下的ping命令,但是它不是只能发送ICMP回应请求,它还可以支持TCP、UDP、ICMP和RAW-IP协议,它有一个路由跟踪模式,能够在两个相互包含的通道之... 查看详情

tensorflow学习笔记2——数据类型及简单运算

首先,激活tensorflow环境( sourceactivatetensorflow ),随后1importtensorflowastf2sess=tf.Session()1.常量创建标量(scalar)或张量(tensor)形式的常量1tf.constant(value,dtype=None,shape=None,name=‘Const‘,verify_shape=Fals 查看详情

efcore简单了解及vs的一些技巧

要使用efcore,必须在nuget中安装microsoft.entityframeworkcore,然后再安装对应数据的provider,如microsoft.entityframeworkcore.sqlserver vs几个技巧右上角输入package可快速打开packagemanageconsole文件浏览器中右键refactor可以调整class的命名空间然后可... 查看详情

docker简单了解及安装使用(代码片段)

docker一、概述1.1设计宗旨1.2特点1.3Docker与虚拟机的区别1.4Docker核心概念镜像容器仓库二、服务安装2.1准备工作2.2安装docker安装依赖包设置阿里云镜像源安装Docker-CE并设置为开机自动启动查看版本信息三、docker镜像操作3.1搜索镜像... 查看详情

docker简单了解及安装使用(代码片段)

docker一、概述1.1设计宗旨1.2特点1.3Docker与虚拟机的区别1.4Docker核心概念镜像容器仓库二、服务安装2.1准备工作2.2安装docker安装依赖包设置阿里云镜像源安装Docker-CE并设置为开机自动启动查看版本信息三、docker镜像操作3.1搜索镜像... 查看详情

usdp使用笔记flink配置及简单测试(代码片段)

Flink配置Flink配置及简单测试上一篇:https://lizhiyong.blog.csdn.net/article/details/123560865将USDP2.0自带的Flink更换为Flink1.14后,还没有来得及改配置。不改配置用起来是有问题的,所以。。。本文主要就是改配置及简单测试效... 查看详情

网络运维学习笔记:vim编辑器及bash特性

在本周学习中我们学习了vim编辑器的用法及对bash特性的简单了解,下面我们分别来解释这些内容。一、vim编辑器1、使用vim编辑器同时编辑多个文件时: vimFILE1FILE2FILE3........ 其中:next查看或编辑后一个文档的内容  ... 查看详情