SpringMVC-【回顾】

news2024/12/28 2:47:00

回顾MVC架构

什么是mvc:模型、视图、控制器 -----软件设计规范

回顾servlet

  1. maven项目
  2. 导入依赖(webmvc,servlet-api,jsp-api,jstl,junit)
  3. 创建子模块,在子模块中添加框架支持(在子模块中导入依赖jsp、servlet【因为父工程有这两个依赖,就直接继承】)
  4. 在java包中创建类,继承httpServlet 实现doget doset方法
  5. 在doGet中写逻辑【获取前端参数、调用业务层、视图转发或者重定向】
  6. 在web.xml注册上
  7. 写一个视图,去请求跳转

MVVM:M V VM ViewModel:双向绑定

初识SpringMVC

基于java实现的轻量级MVC框架
轻量级、简单
高效、基于响应的MVC框架
与Spring兼容良好
约定大于配置
功能强大:RESTful、数据验证、本地化、格式化、主题化
简洁灵活

SpringMVC的执行流程【重点】以localhost:8080/A/hello 其中A为服务器的某个站点,hello控制器部署在其上

DispatcherServlet->HHanderMMapping—>HanderExcetion---->DS—>HanderAdapter—>Controller-------->Modle【得到】–>HD—>DS—>ViewResolver—>DS------>View【返回】

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

HanderMapping为处理器映射器,根据请求URL查找Handler,由DispatcherServlet调用
Handler的处理器为<bean id="/hello" class="com.controller.HelloController"/>

HanderExcetion表示具体的Hander,其作用是根据URL查找控制器,如果URL被查找控制器为hello

HanderExcetion将解析后的信息传递给DispatcherServlet

HanderAdapter表示处理器适配器,其按照特定的规则去执行Handler 【找Controller】

Handler让具体的Controller执行

Controller会将执行信息传递给HA

HA将视图逻辑名称或模型传递给DS

DS调用视图解析器ViewResolver来解析HA传递的逻辑视图名

视图解析器ViewResolver将解析完的3视图逻辑名传给DS

DS根据视图结果,调用具体的视图

最终呈现给用户

网上其它详细总结
在这里插入图片描述

在这里插入图片描述

使用注解开发SpringMVC

@RestController不会被视图解析器解,返回的直接是字符串

Controller配置总结

  1. 添加web支持
  2. 导依赖
  3. web.xml配置DispatcherServlet 绑定文件并在Resources下创建该文件
  4. 该文件中有注解驱动,包扫描,过滤静态资源等需要配,还有视图解析器

RestFul风格

原来:http://localhost:8080/add?a=1&b=2
RestFul:http://localhost:8080/add/1/2{在参数请求那里添加@PathhVariable,通过该注解映射到URL上对应}
地址一样根据请求方式的不同而不同,达到URL的复用

好处:
安全
简洁
高效:支持缓存

重定向和转发

不用视图解析器,默认为转发,在return后添加完整的路径名
重定向为:在路径前加redirect

接收请求参数及数据回显

请求参数跟列表参数一致,便直接对应即可
http:localhost:8080/hello?a=1
public String hello(String a){}即可

请求参数跟列表参数一致,便直接对应即可
http:localhost:8080/hello?a=1
则需要
加注解@RequestParam(“b”)
public String hello(@RequestParam(“b”) String b){}

SpringMVC解决乱码问题

在web.xml中配置乱码过滤

		<filter>
    <filter-name>CharacterEncodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
        <param-name>encoding</param-name>
        <param-value>UTF-8</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>CharacterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

什么是json【重点】

对象----》json—>:JSON.stringify(对象)
json—》对象---->:JSON.parse(json)

java怎么生成json传给前端

工具:Jackson:应该是目前较好的json解析工具
使用步骤:

  1. POM导入依赖
  2. 配置web.xml:有DispatherServlet跟过滤器
  3. resources下写springmvc配置文件:创建自动扫描来交给IOC管理、视图解析器、
  4. 表写pojo类
  5. 编写controller层控制类
  6. 在controller中:@ResponseBody表示不走视图解析器,会直接返回一个字符串
  7. jackson中有ObjectMapper类,将该类实例化有writeValueAsString方法可以将对象转为json数据
  8. 传list集合[{},{},{}]

SpringMVC:ssm框架的整合

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

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

相关文章

【NACK】视频rtp包接收及nack触发流程走读

这里大神分析很很透彻了:原文地址:WebRTC中NACK的处理流程 - 资料 - 音视频开发中文网 - 构建全国最权威的音视频技术交流分享论坛视频包的接收 RtpVideoStreamReceiver::ReceivePacket void RtpVideoStreamReceiver::ReceivePacket(const RtpPacketReceived& packet)知乎…

聊聊哪些奇葩的代码规范 —— 代码放一行

因为有些要求感觉实是太过奇葩&#xff0c;收集下来娱乐下大家。 代码规范要求 要求代码必须要放在一行上面&#xff0c;导致代码上面有不少行甚至超过了 1000 个字符。 规范解读 就是有时候代码过长&#xff0c;我们会折行增加可读性&#xff0c;最简单的一个例子就是 obj…

CG平台实验——逻辑回归

文章目录 练习2&#xff1a;逻辑回归介绍1 Logistic回归1.1 数据可视化1.2 实现1.2.1 Sigmoid函数1.2.2 代价函数和梯度1.2.2.1 代价函数1.2.2.2 梯度下降 1.2.3 寻找最优参数1.2.4 评估逻辑回归 2 正则化逻辑回归2.1 数据可视化2.2 特征映射2.3 代价函数和梯度 2.4 寻找最优参…

rust疑难进阶手册(1)-安装和管理,类型推断,打印输出(1)

目录 安装管理和配置工具项目管理类型推断格式输出位置参数格式化文本命名参数安装 不管OS是否带有rust,都应使用rustup来安装rust linux/freebsdcurl https://sh.rustup.rs -sSf | shwindows https://www.rust-lang.org/tools/install windows下建议使用GNU的编译链接库,不…

GraphQL入门实战

解决什么问题 根据请求控制返回结果 例如&#xff1a; 一个User对象&#xff0c;有id&#xff0c;name&#xff0c;mobile&#xff0c;email 有些接口只要返回id,name &#xff0c;有些接口还要要返回 mobile 适用场景 弱文档管理&#xff0c;公司对文档要求不高需求复杂变…

【JavaEE进阶】springBoot热部署、请求转发与重定向

目录 一、SpringBoot热部署 1.1热部署的步骤 1.1.1导入maven中央仓库的jar包 1.1.2开启项目自动编译 1.1.3启动项目 1.2热部署的原理 二、请求转发&重定向 2.1关键字不一样 2.2定义不同 请求转发(forward)&#xff1a; 请求重定向(redirect): 2.3数据共享不一样…

如何用MASM32开发Windows应用程序

提醒&#xff1a;以下内容仅做参考&#xff0c;可自行发散。在发布作品前&#xff0c;请把不需要的内容删掉。IT技术日异月异&#xff0c;无论是初学者还是有经验的专业人士&#xff0c;都需要与时俱进&#xff0c;不断学习新技术。在学习一门新的IT技术时&#xff0c;都需要采…

Github自定义个人首页

前言 GitHub 个人主页&#xff0c;官方称呼是 profile&#xff0c;是一个以 Markdown 脚本语言编写的个人 GitHub 展示主页面。Guthub 个人主页可以展示很多有用的信息&#xff0c;例如添加一个首页被访问次数的计数器&#xff0c;一个 Github 被 Star 与 Commit 的概览信息&a…

JVM-学习笔记

一 . JVM架构图 JVM是Java Virtual Machine的简称&#xff0c;意为Java虚拟机。JVM有很多种&#xff0c;使用最为广泛的JVM为HotSpot。 如上面架构图所示&#xff0c;JVM分为三个主要子系统&#xff1a; 类加载器子系统&#xff08;Class Loader Subsystem&#xff09; 运行…

Linux命令学习之cp和mv

cp man 1 cp可以看一下cp的帮助说明。 cp -r /learnwell/good/ /tmp把good目录复制到/tmp目录下&#xff0c;注意想要复制目录&#xff0c;一定要加上-r选项。 接下来学习复制文件&#xff0c;cp 源文件 目标目录&#xff08;相对路径方法&#xff09;或者是cp /源文件所在目…

华为OD机试题【IPv4地址转换成整数】【2023 B卷 100分】

文章目录 &#x1f3af; 前言&#x1f3af; 题目描述&#x1f3af; 解题思路示例 1示例 2&#x1f4d9; Python代码实现&#x1f4d7; Java代码实现&#x1f4d8; C语言代码实现 &#x1f3af; 前言 &#x1f3c6; 《华为机试真题》专栏含2023年牛客网面经、华为面经试题、华为…

Spark安装和编程实践(Spark2.4.0)

系列文章目录 Ubuntu常见基本问题 Hadoop3.1.3安装&#xff08;单机、伪分布&#xff09; Hadoop集群搭建 HBase2.2.2安装&#xff08;单机、伪分布&#xff09; Zookeeper集群搭建 HBase集群搭建 Spark安装和编程实践&#xff08;Spark2.4.0&#xff09; Spark集群搭建 文章目…

linux(信号产生的各种方式)

目录&#xff1a; 1.引入 2.介绍系统支持的信号列表 3.键盘方式产生信号 4.程序中存在异常问题&#xff0c;产生信号 5.系统调用产生信号 6.软件条件也能产生信号 7.任何理解OS给进程发送信号 1.引入 我怎么证明ctrlc是向指定进程发送了2号信号呢&#xff1f;&#xff1f; sig…

5万字大数据实验室建设方案能源大数据中心建设方案word

本资料来源公开网络&#xff0c;仅供个人学习&#xff0c;请勿商用&#xff0c;如有侵权请联系删除篇幅有限&#xff0c;无法完全展示&#xff0c;喜欢资料可转发评论&#xff0c;私信了解更多信息。 大数据实验室建设方案 大数据实验室建设方案 目录 1概述 1.1建设背景 1.…

chatgpt赋能python:Python抓取数据:从入门到精通

Python抓取数据&#xff1a;从入门到精通 Python是当下最热门的编程语言之一&#xff0c;其强大的数据处理能力使得Python在数据抓取方面也越来越受欢迎。本文将从入门到精通介绍Python抓取数据的方法&#xff0c;希望对初学者有所帮助。 网络爬虫 网络爬虫是Python基于网络…

CG平台实验——线性回归

文章目录 练习1&#xff1a;线性回归介绍1 实现简单示例函数1.1 提交解决方案 2 单变量线性回归2.1 绘制数据2.2 梯度下降2.2.1 更新公式2.2.2 实现2.2.3 计算成本J(θ)2.2.4 梯度下降 2.3 可视化成本函数 选做练习3 多变量线性回归3.1 特征标准化3.2 梯度下降 练习1&#xff1…

chatgpt赋能python:Python在边框中写文字:优雅展示内容的方式

Python在边框中写文字&#xff1a;优雅展示内容的方式 当我们需要在网页上展示一些信息时&#xff0c;通常会使用边框来突出显示内容&#xff0c;然而&#xff0c;普通的边框可能会显得过于单调&#xff0c;缺少设计感&#xff0c;这时我们可以借助Python来实现一个功能强大的…

chatgpt赋能python:Python备份列表:从小白到大神,这里有你需要的一切

Python备份列表&#xff1a;从小白到大神&#xff0c;这里有你需要的一切 随着信息科技的发展&#xff0c;数字资料的价值越发具有现实意义&#xff0c;但是数据泄露、系统崩溃、病毒攻击、硬件故障等情况也时有发生。因此&#xff0c;对数据进行备份是非常必要的。Python作为…

Select选择器(antd-design组件库)简单使用以及增加搜索功能

1.Select选择器 下拉选择器。 2.何时使用 弹出一个下拉菜单给用户选择操作&#xff0c;用于代替原生的选择器&#xff0c;或者需要一个更优雅的多选器时。 当选项少时&#xff08;少于 5 项&#xff09;&#xff0c;建议直接将选项平铺&#xff0c;使用 Radio 是更好的选择。 组…

chatgpt赋能python:Python如何倒序输出列表

Python如何倒序输出列表 Python是一种高级编程语言&#xff0c;自由、开源、跨平台&#xff0c;被广泛用于Web开发、数据分析、机器学习等领域。在Python中&#xff0c;列表是一种常见的数据结构&#xff0c;它允许存储多个元素&#xff0c;并支持索引、切片等操作。本文将介绍…