当前位置: 首页 > news >正文

视图、转发与重定向、静态资源处理

目录

视图

默认视图

视图机制原理 

自定义视图

请求转发与重定向

静态资源处理


视图

每个视图解析器都实现了 Ordered 接口并开放出一个 order 属性

可以通过 order 属性指定解析器的优先顺序,order 越小优先级越高

默认是最低优先级,Integer.MAX_VALUE

Controller -> 视图解析器(mvc提供) -> 视图 -> 结果页面

默认视图

默认视图交给InternalResourceViewResolver视图解析器来处理

默认视图解析器一旦执行,就不会执行自定义视图解析器 

需要手动配置一下

最后返回的路径直接拼接:"prefix"+name+"suffix"

视图机制原理 

设我们SpringMVC中使用了JSP作为视图。

第一步:浏览器发送请求给web服务器

第二步:Spring MVC中的DispatcherServlet接收到请求

第三步:DispatcherServlet根据请求路径分发到对应的Controller 第四步:DispatcherServlet调用Controller的方法

第五步:Controller的方法处理业务并返回一个逻辑视图名给DispatcherServlet

第六步:DispatcherServlet调用InternalResourceViewResolverresolveViewName方法,将逻辑视图名转换为物理视图名,并创建InternalResourceView对象返回给DispatcherServlet

第七步:DispatcherServlet再调用InternalResourceViewrender方法,render方法将模板语言转换为HTML代码,响应给浏览器,完成最终的渲染。

自定义视图

1、BeanNameViewResolver可以去解析自定义的视图

      配置优先级,比默认解析器优先级高

<bean class="org.springframework.web.servlet.view.BeanNameViewResolver" p:order="0"></bean>

2、继承

        MyView继承了AbstractView, 就可以作为一个视图使用
        @Component(value = "myView"),该视图会注入到容器中, 名字是myView

return "myView"的底层实现:

1、在容器找id=myView

2、是否是View.class类型

3、return getBean("id",View.class),以接口形式返回

4、视图渲染,执行自定义视图的方法,跳转到结果页面

请求转发与重定向

请求转发forward,重定向redirect

如果都不写,默认请求转发,默认或自定义视图来处理

访问WEB-INF下面的资源必须请求转发(内部跳转到WEB-INF)

forward或redirect:/路径,会在服务器解析,自动拼接上工程路径(比如/mvc)

比如:工程路径:/mvc

return "forward:/WEB-INF/pages/login_ok.jsp"

服务器解析成 /mvc/login_ok.jsp 给浏览器
第一个 又会在浏览器解析成 http://localhost:8080

变成http://localhost:8080/mvc/login_ok.jsp

forward底层会创建 InternalResourceView视图对象
redirect底层会创建 RedirectView视图对象

静态资源处理

未在web.xml中配置映射,如果在springmvc配置文件中设置<url-pattern>/</url-pattern>,会替代tomcat中的default导致所有的静态资源都给中央控制器来处理,而不是tomcat,前端控制器没有访问静态资源的能力,所以所有静态资源都是404

方法一

在springmvc配置文件加入

mvc:resources和@RequestMapping有一定的冲突

<mvc:annotation-driven/>
<mvc:default-servlet-handler/>

        开启默认Servlet处理之后,mvc会在容器创建DefaultServletHttpRequestHandler处理器对象,对进入DispatcherServlet的URL进行筛查,如果是静态资源的请求,交给Tomcat的default来处理

方法二 

将images、html、js文件夹放入webapp/static目录下

<mvc:annotation-driven/>
<mvc:resources mapping="/static/**" location="/static/" />

相关文章:

视图、转发与重定向、静态资源处理

目录 视图 默认视图 视图机制原理 自定义视图 请求转发与重定向 静态资源处理 视图 每个视图解析器都实现了 Ordered 接口并开放出一个 order 属性 可以通过 order 属性指定解析器的优先顺序&#xff0c;order 越小优先级越高 默认是最低优先级&#xff0c;Integer.MAX_…...

优选算法——分治(快排)

1. 颜色分类 题目链接&#xff1a;75. 颜色分类 - 力扣&#xff08;LeetCode&#xff09; 题目展示&#xff1a; 题目分析&#xff1a;本题其实就要将数组最终分成3块儿&#xff0c;这也是后面快排的优化思路&#xff0c;具体大家来看下图。 这里我们上来先定义了3个指针&…...

【Linux系统】文件系统

Windows 和 Linux 的文件系统&#xff1a; windows:NTFS —> NTFS&#xff1a;磁盘大于目录&#xff1a;目录是磁盘的一部分。ubuntu :EXT4 —> EXT4: 目录大于磁盘&#xff1a;磁盘是目录的一部分。 Windows文件系统的特点 基于分区的文件系统&#xff1a; Windows…...

javaweb的基础

文章的简介&#xff1a; 页面的展示&#xff08;HTML&#xff09;页面的修改、绑定、弹窗(js的dom、bom等)页面的请求(Ajax) 1、在HTML中用标签和css样式实现了浏览器页面。 2、用JS实现页面内容&#xff08;图片&#xff0c;复选框、文本颜色内容&#xff09;的修改和弹框&…...

家里养几条金鱼比较好?

金鱼&#xff0c;作为备受喜爱的家庭水族宠物&#xff0c;其饲养数量一直是众多养鱼爱好者关注的焦点。究竟养几条金鱼最为适宜&#xff0c;实则需要综合考量多方面因素&#xff0c;方能达到美观、健康与和谐的理想养鱼境界。 从风水文化的视角来看&#xff0c;金鱼数量有着诸…...

写作词汇积累:差池、一体两面、切实可行极简理解

差池 【差池】可以是名词&#xff0c;是指意外的事或错误。 【差池】也可以是形容词&#xff0c;是指参差不齐、差劲或不行。 1. 由于操作不当&#xff0c;导致这次实验出现了【差池】&#xff0c;我们需要重新分析原因并调整方案。&#xff08;名词&#xff0c;表示意外的事…...

移远EC200A-CN的OPENCPU使用GO开发嵌入式程序TBOX

演示地址&#xff1a; http://134.175.123.194:8811 admin admin 演示视频&#xff1a; https://www.bilibili.com/video/BV196q2YQEDP 主要功能 WatchDog 1. 守护进程 2. OTA远程升级 TBOX 1. 数据采集、数据可视化、数据上报&#xff08;内置Modbus TCP/RTU/ASCII,GPS协…...

LEED绿色建筑认证最新消息

关于LEED绿色建筑认证的最新消息&#xff0c;可以从以下几个方面进行概述&#xff1a; 一、认证体系更新与发展 LEED认证体系不断更新和完善&#xff0c;以更好地适应全球绿色建筑的发展趋势。例如&#xff0c;LEED v4能源更新已通过投票&#xff0c;并于2024年3月1日全面启用…...

SpringBoot中集成常见邮箱中容易出现的问题

本来也没打算想写得。不过也是遇到一些坑&#xff0c;就记录一下吧&#xff0c;也折腾了小半天 1.maven配置 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId></dependency>2…...

webstorm开发uniapp(从安装到项目运行)

1、下载uniapp插件 下载连接&#xff1a;Uniapp Tool - IntelliJ IDEs Plugin | Marketplace &#xff08;结合自己的webstorm版本下载&#xff0c;不然解析不了&#xff09; 将下载到的zip文件防在webstorm安装路径下&#xff0c;本文的地址为&#xff1a; 2、安装uniapp插…...

C# 探险之旅:第七节 - 条件判断(三元判断符):? : 的奇妙冒险

嘿&#xff0c;勇敢的探险家们&#xff01;欢迎来到 C# 编程世界的奇妙之旅的第七节。今天&#xff0c;我们要探索的是一个神秘而强大的宝藏——三元判断符 ? :。别怕&#xff0c;它听起来复杂&#xff0c;但实际上比找宝藏还简单&#xff01; 场景设定&#xff1a;宝藏的选择…...

FlinkCDC实战:将 MySQL 数据同步至 ES

&#x1f4cc; 当前需要处理的业务场景: 将订单表和相关联的表(比如: 商品表、子订单表、物流信息表)组织成宽表, 放入到 ES 中, 加速订单数据的查询. 同步数据到 es. 概述 1. 什么是 CDC 2. 什么是 Flink CDC 3. Flink CDC Connectors 和 Flink 的版本映射 实战 1. 宽表查…...

debug小记

红框&#xff1a; 步过&#xff1a;遇到方法不想进入方法 绿框&#xff1a;代码跑在第几行也可以看见 蓝框&#xff1a;可以显示变量的值&#xff0c;三种方式都可以看变量的值...

Qt C++ 显示多级结构体,包括结构体名、变量名和值

文章目录 mainwindow.hmainwindow.cppstructures.hmain.cpp QTreeView 和 QStandardItemModel 来实现。以下是实现这一功能的步骤和示例代码&#xff1a; 定义多级结构体&#xff1a; 假设你有一个多级结构体&#xff0c;如下所示&#xff1a; struct SubStruct {int subValue…...

【JAVA】旅游行业中大数据的使用

一、应用场景 数据采集与整合&#xff1a;全面收集旅游数据&#xff0c;如客流量、游客满意度等&#xff0c;整合形成统一数据集&#xff0c;为后续分析提供便利。 舆情监测与分析&#xff1a;实时监测旅游目的地的舆情信息&#xff0c;运用NLP算法进行智能处理&#xff0c;及…...

【AI+网络/仿真数据集】1分钟搭建云原生端到端5G网络

导语&#xff1a; 近期智慧网络开放创新平台上线了端到端网络仿真能力&#xff0c;区别于传统的网络仿真工具需要复杂的领域知识可界面操作&#xff0c;该平台的网络仿真能力主打一个小白友好和功能专业。 https://jiutian.10086.cn/open/​jiutian.10086.cn/open/ 端到端仿…...

微服务-01【续】

1.OpenFeign 上篇文章我们利用Nacos实现了服务的治理&#xff0c;利用利用RestTemplate实现了服务的远程调用。但是远程调用的代码太复杂了&#xff1a; 而且这种调用方式&#xff0c;与原本的本地方法调用差异太大&#xff0c;编程时的体验也不统一&#xff0c;一会儿远程调用…...

测试工程师八股文01|Linux系统操作

一、Linux系统操作 1、gzip tar和gzip结合使用 $ tar czf b.tar.gz *txt 以gzip方式打包并且压缩 $ tar xzf b.tar.gz -C btar 以gzip方式解压并解包&#xff0c;如果 btar 目录不存在&#xff0c;则需要先手动创建该目录。 代码第二行&#xff1a;如果没有指定 -C …...

【Qt】qt基础

目录 一、使用Qt Creator创建qt项目 二、项目文件解析 三、Qt中创建图形化界面的程序的两种方法 四、对象树 五、Qt中处理打印乱码问题的利器&#xff1a;qDebug() 一、使用Qt Creator创建qt项目 1.选择项目模板 选中第一类模板Application(Qt应用程序&#xff0c;包含普…...

UniScene:Video、LiDAR 和Occupancy全面SOTA

论文: https://arxiv.org/pdf/2412.05435 项目页面&#xff1a;https://arlo0o.github.io/uniscene/ 0. 摘要 生成高保真度、可控制且带有标注的训练数据对于自动驾驶至关重要。现有方法通常直接从粗糙的场景布局生成单一形式的数据&#xff0c;这不仅无法输出多样化下游任务…...

TCN实战避坑指南:从能源预测案例看超参数(kernel_size, dilation_base)怎么调才有效

TCN实战避坑指南&#xff1a;从能源预测案例看超参数调优的艺术 当你的TCN模型在能源预测任务中表现平平&#xff0c;先别急着换架构——很可能只是超参数没调对。上周我们团队刚用TCN完成了一个工业用电量预测项目&#xff0c;原始模型准确率只有72%&#xff0c;经过系统调参后…...

对比直接使用官方API体验Taotoken在稳定性与成本上的差异

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 对比直接使用官方API体验Taotoken在稳定性与成本上的差异 在将大模型能力集成到个人项目或小团队工作流中时&#xff0c;开发者通常…...

硬件产品出海必读:从Type A到Type O,不同国家电源插头标准与适配设计要点

硬件产品出海必读&#xff1a;全球电源插头标准与适配设计实战指南 当你的智能音箱在德国用户家中无法充电&#xff0c;或是电饭煲在英国市场因插头不兼容遭遇退货&#xff0c;电源适配问题就从技术细节升级为商业风险。全球电源插头的差异远不止物理形状的区别&#xff0c;背后…...

老旧主板救星记:手把手教你诊断华硕H81M-CT的USB过流保护故障

老旧主板救星记&#xff1a;手把手教你诊断华硕H81M-CT的USB过流保护故障 当陪伴多年的老电脑突然开始"闹脾气"&#xff0c;每次开机15秒就自动关机&#xff0c;屏幕上还跳出"USB Device over current status Detected"的警告时&#xff0c;先别急着把它送…...

卡梅德生物技术快报|骆驼纳米抗体:从原核表达、高通量测序到分子对接全流程实现

1. 问题背景&#xff08;技术痛点&#xff09;靶向结合分子开发中&#xff0c;传统抗体制备存在&#xff1a;分子量大&#xff0c;扩散与穿透效率有限&#xff1b;文库构建与淘选周期长&#xff0c;难以规模化&#xff1b;原核表达与纯化体系不稳定&#xff0c;批次差异大&…...

AI驱动数字营销平台架构解析:从工作流引擎到品牌个性化

1. 项目概述&#xff1a;一个AI驱动的数字营销代理平台最近在GitHub上看到一个挺有意思的项目&#xff0c;叫windagency/valora.ai。乍一看这个仓库名&#xff0c;可能很多人会有点懵&#xff0c;这到底是做什么的&#xff1f;是AI工具&#xff0c;还是营销平台&#xff1f;作为…...

告别内网穿透:OpenWrt软路由IPv6配置实战与DDNS部署指南

1. 为什么我们需要IPv6&#xff1f; 最近几年&#xff0c;越来越多的朋友发现家里的宽带已经拿不到IPv4公网地址了。我自己用的移动宽带就是这样&#xff0c;光猫改桥接后用软路由拨号&#xff0c;拿到的永远是个100开头的内网IP。打电话给运营商&#xff0c;客服很客气地告诉我…...

4. 大型场馆大空间挡烟垂壁选型与布设

大型场馆、商业综合体、中庭展厅这类大空间建筑&#xff0c;空间跨度大、层高较高&#xff0c;传统隔断无法满足排烟分区要求&#xff0c;合理选用与布设挡烟垂壁&#xff0c;是解决大空间防排烟难题的核心途径。大空间场景在挡烟垂壁选型上&#xff0c;需优先适配大跨度、高空…...

Win11内存完整性报错?手把手教你定位并安全移除不兼容驱动程序

1. 遇到Win11内存完整性警告怎么办&#xff1f; 最近很多升级到Windows 11的用户都遇到了一个让人头疼的问题——系统右下角突然弹出"内存完整性已关闭"的安全警告。这个黄色的小三角图标确实挺烦人的&#xff0c;特别是对于像我这样有点强迫症的用户来说。第一次看到…...

C#调用打印机老是失败?先别怪代码,这5个Windows驱动设置坑你踩过几个?

C#调用打印机故障排查指南&#xff1a;5个被忽视的Windows驱动陷阱 当你信心满满地写完C#打印代码&#xff0c;点击"打印"按钮后却只收获了一片寂静——打印机毫无反应&#xff0c;控制台也没有任何错误提示。这种挫败感每个C#开发者都经历过。但先别急着重写代码&am…...