Spring MVC 配置请求的默认处理器

使用Spring MVC统一异常处理实战 NULL 博文链接:https://cgs1999.iteye.com/blog/1547197 立即下载
spring mvc 是类似于 Struts 的框架。他们都有一个最主要的功能就是URL路由。URL路由能将请求与响应请求处理逻辑的类(在Struts中即是action,在spring mvc 中即是 controller )映射起来。抛开其他的功能,spring mvc 要比 Struts 在URL路由功能上灵活很多。比如要实现 RESTful,如果用 Struts ,需要安装 一些插件,而且插件也常常限制的很死。但是如果用 spring mvc ,那就驾轻就熟。

下面具体看一下spring mvc
在 spring 2.5 以后,可以利用注解写进行路由映射,简单,直观。

配置 web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

    <!-- Processes application requests -->
    <servlet>
        <servlet-name>appServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:spring-servlet-context.xml</param-value>
        </init-param>
        <load-on-startup>0</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>appServlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>

spring 的配置文件 spring-servlet-context.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:mvc="http://www.springframework.org/schema/mvc"       
       xsi:schemaLocation="
            http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
            http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

<context:component-scan base-package="com.myPackage"/>    

<mvc:annotation-driven/>

<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
       <property name="prefix" value="/WEB-INF/pages/" />               
       <property name="suffix" value=".jsp" />              
</bean>

</beans>

package com.myPackage.controller;

@Controller
public class FooController{

/**
* 响应 /foo 请求,并返回 bar.jsp 做为渲染页面 (不一定非是jsp,只不过以上配置的是jsp)
*/
@RequestMappting("/foo")
public String foo(){
    //process logic
    return "bar"; 
}

以上即 spring mvc 一个简单的配置。mvc:annotation-driven 即告诉 spring mvc 使用注解的方式进行URL路由配置。controller 类上加上 @Controller 告诉 spring mvc 此类是 controller,同时方法上的 @RequestMapping 注解告诉 spring mvc 这里有一个请求映射到这个方法。

前面都是最基本的配置,但有一个缺点就是还不能响应静态页面的请求。 比如 webroot 下有 一个 bar.html 页面,但 webroot/bar.html 是请求不到 bar.html 的。因为目前为止,还没有对 bar.html 的路由映射。

要能请求静态页面,或者资源(如css,js,图片等),需要做如下配置

<mvc:resources mapping="/**" location="/" /> 

但是上面的配置还是有问题的,如果有一个 foo.html 的页面,请求是 webroot/foo.html,但是会发现会被路由到 /foo.* ,然后程序交给了 foo() 方法,没能得到 foo.html 页面。原因是使用 mvc:annotation-driven 做配置,spring mvc 会默认使用 DefaultAnnoationHandlerMapping 和 AnnotationMethodHandlerAdapter ,而 DefaultAnnotationHandlerMapping 会默认对 @RequestMapping 上的路由做三个映射,如 @RequestMapping("/foo") 会被做 /foo 、/foo.* 和 /foo/ 这样三个映射。mvc:resources 默认使用 SimpleUrlHandlerMapping, 做映射,但由于 SimpleUrlHandlerMapping 的优先级(order)没有 DefaultAnnotationHandlerMapping 高。 所以本来应该是 foo.html 静态资源响应,被映射为了 /foo.* 。@RequestMapping 的三次映射可以通过 DefaultAnnotationHandlerMapping#setUseDefaultSuffixPattern(false) 取消。XxxxHandlerMapping 可以通过 order 属性改变。

所以总结以上设置,可以这样正确的配置 spring-servlet-context.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:mvc="http://www.springframework.org/schema/mvc"       
       xsi:schemaLocation="
	        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
	        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

<context:component-scan base-package="com.myPackage"/>    

<mvc:resources mapping="/**" location="/" order="1"/>

<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
        <property name="order" value="0"/>
        <property name="useDefaultSuffixPattern" value="false"/>
    </bean>

<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/>

<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
       <property name="prefix" value="/WEB-INF/pages/" />               
       <property name="suffix" value=".jsp" />              
</bean>
</beans>

或者这样配置

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:mvc="http://www.springframework.org/schema/mvc"       
       xsi:schemaLocation="
	        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
	        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

<context:component-scan base-package="com.myPackage"/>    

<mvc:resources mapping="/**/*.html" location="/" order="0"/>
<mvc:resources mapping="/**" location="/" order="2"/>

<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
        <property name="order" value="1"/>
        <property name="useDefaultSuffixPattern" value="true"/>
    </bean>

<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/>

<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
       <property name="prefix" value="/WEB-INF/pages/" />               
       <property name="suffix" value=".jsp" />              
</bean>
</beans>

转自:http://bastengao.iteye.com/blog/1165486


九齐NY8A051F低功耗模式全解析:从待机到休眠的省电实战 本文全面解析台湾九齐NY8A051F MCU的低功耗模式,从待机到休眠的省电实战技巧。通过实测数据展示四种工作模式的电流消耗差异,提供模式切换的标准流程和唤醒时序优化策略,并分享外围电路省电设计和低电压检测的实战应用,帮助开发者实现物联网设备的超长续航。 阅读详情

相关推荐

OpenHarmony-AI调研

基于OpenHarmony-5.0.0版本以及laval社区等网络资料调研当前OH上的AI发展情况。

qqq1112345的博客 1367

我理解的SpringMVC之请求方式

前言 今天看了一会SpringMVC相关内容,然后又看了看自己以前的文章,发现了很多的不足,决定更新一些SpringMVC的内容,本文参考了哔哩哔哩博主黑马程序员的视频讲解内容,文章末尾会贴出相关链接。 本文为作者私人笔记记录,如有不足望大家看到后及时提醒哟。**如需转载,请注明出处!**谢谢! 请求方式 众所周知,我们常用的请求大致分为两种,分别为GET请求和POST请求。 这也是面试时经常问道的问题。下面我将从多个方面阐述他们的区别。 安全性 很多小伙伴在听到询问两种请求的区别是,第一反应一定是GET请

Andy-ZhangSir的博客 1156

【自动驾驶规划】Lattice Planner

Lattice Planner简介 LatticePlanner算法属于一种局部轨迹规划器,输出轨迹将直接输入到控制器,由控制器完成对局部轨迹的跟踪控制。因此,Lattice Planner输出的轨迹是一条光滑无碰撞满足车辆运动学约束和速度约束的平稳安全的局部轨迹。Lattice Planner的输入端主要由三部分组成,感知及障碍物信息、参考线信息及定位信息。局部规划模块的输出是带有速度信息的一系列轨迹点组成的轨迹,其保证了车辆控制器在车辆跟踪控制过程中的平稳性和安全性。 局部规划模块的输出是带有速

uytguytgf的博客 6491

SpringMVC中的路由配置及参数传递详解

转载于:http://www.cnblogs.com/ludashi/ 一、基本路由配置 接下来我们将聊一下常用的几种路由配置方式,然后给出每种路由的具体实例。当然本部分还是比较简单的,虽然简单,但是还是比较重要的。一些后端常用的框架中,都会有各式各样的路由配置方法,但是这些路由的作用都是大同小异的。像ThinkPHP框架中的路由配置也是ThinkPHP运作的基础之一。本部分我们就好好的聊一下...

u010019970的专栏 1694

nnU-Net v2实战:从零开始配置环境与训练自定义医学影像数据集

本文详细介绍了nnU-Net v2在医学影像分割中的实战应用,从环境配置到自定义数据集训练的全流程。重点讲解了Python 3.9+环境搭建、PyTorch安装技巧、医学影像数据预处理规范,以及五折交叉验证训练方法,帮助开发者快速掌握这一先进的医学影像分析工具。

weixin_28718487的博客 352

HFSS实战(二)——精准仿真高速PCB差分线的信号完整性

本文深入探讨了使用HFSS进行高速PCB差分线信号完整性仿真的关键技术与实战经验。从设计文件导入、模型裁剪到差分端口设置,详细解析了精准仿真的全流程,特别强调了材料特性和3D电磁场仿真在解决微带线损耗等问题中的重要性。文章还提供了常见问题排查指南和效率优化技巧,帮助工程师提升高速PCB设计的仿真精度与效率。

weixin_38170829的博客 571

SpringMVC的请求与响应(GET、POST、RESTful)

SpringMVC的请求与响应(GET、POST、RESTful)

s17856147699的博客 2117

智能体在车联网中的应用:第9天 核心工具链与仿真世界:SUMO交通仿真入门——从安装到构建你的第一个虚拟十字路口

摘要 SUMO是一款开源微观交通仿真工具,为车联网和自动驾驶算法开发提供高效安全的测试环境。文章详细介绍了SUMO的核心概念、安装方法及实战应用。在Ubuntu或Windows系统安装SUMO后,可通过netedit工具构建十字路口路网,包括创建节点、连接边、设置交通信号灯等步骤。随后通过编写.rou.xml文件定义车辆类型、路线和车流,实现动态交通场景模拟。SUMO支持与外部程序交互,能复现真实场景、进行极端测试和算法验证,是车联网研究的理想数字沙盘。

IT深耕十余载,大道之简 1450

SpringMVC-MultiActionController默认方法名解析器

1.文件结构2.pom.xml导包&lt;project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache...

wyyblog 981

YOLOv11 模型改进:利用新型损失函数实现精度跃升(含代码全解析)

在目标检测领域,损失函数的选择直接决定模型的精度上限。某自动驾驶公司将 YOLOv11 原有损失替换为新型损失后,障碍物检测 mAP 提升 10%,夜间场景误检率降低 22%;某物流分拣项目中,采用新损失的 YOLOv11 模型对小包裹的识别准确率从 82% 升至 96%。如果你也在为模型精度瓶颈、样本不平衡问题困扰,这篇教程将带你掌握 YOLOv11 损失函数的进阶技巧,真正帮你在检测性能上实现突破。损失函数是模型训练的“指南针”,它定义了模型“学习的方向”。传统损失(如 BCE、Focal Loss)在

m0_71589036的博客 712

C#部署YOLO三种方案深度实测:OpenCV DNN vs ONNX Runtime vs TensorRT

在工业视觉项目落地阶段,C#生态下部署YOLO模型主要有三条技术路线。很多开发者仅凭经验选型,往往在部署后期踩中性能瓶颈、兼容故障、维护成本超标的坑。本文基于工控机常见硬件配置,针对YOLOv8系列模型做控制变量实测,从推理性能、部署难度、工业稳定性、综合成本等多个维度做横向对比,给出可直接落地的选型结论。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 461

Spring MVC 是如何将不同的Request路由到不同Controller中的?

作者简介:大家好,我是码炫码哥,前中兴通讯、美团架构师,现任某互联网公司CTO,兼职码炫课堂主讲源码系列专题代表作:《jdk源码&多线程&高并发》,《深入tomcat源码解析》,《深入netty源码解析》,《深入dubbo源码解析》,《深入springboot源码解析》,《深入spring源码解析》,《深入redis源码解析》等联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬。

smart_an的专栏 872

2024年电气工程师最新面试题及答案

1. **基本电气工程原理**:包括电流、电压、电阻、功率等基本概念。2. **欧姆定律**:V = IR,描述电压、电流和电阻之间的关系。42. **风力发电系统组成**:包括风力涡轮机、发电机、控制系统等。44. **智能电网技术**:包括自动化控制、通信技术、数据分析等。10. **减少EMI**:使用屏蔽、滤波、合理布线等方法。40. **光伏系统组成**:包括光伏板、逆变器、控制器等。48. **能量存储技术**:包括电池、超级电容器、飞轮等。

guo162308的博客 6561

Spring MVC 处理静态资源请求 - ResourceHandler

本文介绍了Spring MVC处理静态资源请求的机制与配置方法。由于Spring MVC默认不处理静态资源请求,开发者需要配置资源处理器(ResourceHandler)来映射特定路径到物理资源目录。

m0_58680865的博客 960

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Spring MVC---DispatcherServlet配置

spring MVC的整体架构 和大多数Web MVC框架一样,Spring MVC通过一个前端Servlet接受所有的请求,并将具体工作委托给其他组件进行处理,DispatcherServlet就是Spring MVC的前端Servlet。在整个框架中,DispatcherServlet处于核心的位置,它负责协调和组织不同的组件以完成请求处理并返回响应的工作。DispatcherServle

u014785687的博客 1535

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

spring-mvc

01-spring-mvc 概述 MVC(Model View cotroller),一种用于设计创建web应用程序表现层的模式 Model(模型):数据模型,用于封装数据 View(视图):页面视图,用于显示数据 - jsp - html Controller(控制器):处理用户交互的调度器,用于根据用户需求处理逻辑 - Servlet ...

missonxxxxxx的博客 407

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

码农小汪-Spring MVC -DispatcherServlet 详解

看的我头晕,脑胀的,写的真的非常好!感觉自己好渺小哦!哈哈大神就是厉害!DispatcherServlet作用DispatcherServlet是前端控制器设计模式的实现,提供spring Web MVC的集中访问点,而且负责职责的分派,而且与Spring IoC容器无缝集成,从而可以获得Spring的所有好处。DispatcherServlet主要用作职责调度工作,本身主要用于控制流程,主要职责如

汪小哥 9359

spring mvc--默认都使用了哪些bean

在MVC中默认使用的bean都定义在了 org.springframework.web.servlet下的DispatcherServlet.properties 下载源文件后可查看到默认bean定义信息 # Default implementation classes for DispatcherServlet's strategy interfaces. # Used as fallb

believer123的专栏 1945

spring实战 5.1 SpringMVC起步

一、跟踪Spring MVC的请求 Spring MVC的所有请求都会通过一个前端控制器(front controller) Servlet。DispatcherServlet的任务是将请求发送给Spring MVC controller。 DispatcherServlet会查询一个或多个处理器映射来确定请求的下一站在哪里,处理器映射会根据请求所携带的URL信息来进行决策。 DispatcherServlet会将请求发送给选中的controller,到了控制器,请求会卸下负载并等待控制器处理

joooooooooooe的博客 240

Spring MVC 4之DispatcherServlet转发器

Spring MVC 4与其它MVC框架类似,都是基于请求驱动的,通过中央Servlet处理器,将请求转发到控制器然后完成相应的功能。Spring的 DispatcherServlet与其它MVC框架不同的是,它与Spring的IoC容器集成并允许用户使用Spring的其它特性。     1. DispatcherServlet的作用     Spr

小尘 6655

【spring】SpringMVC 默认配置 DispatcherServlet.properties(5.0.4.RELEASE) 文件

DispatcherServlet.properties 文件作用 前端控制器DispatcherServlet类会从 DispatcherServlet.properties 文件中加载 HandlerMapping(处理器映射器)、HandlerAdapter(处理器适配器)、ViewResolver(视图解析器)等组件。 如果不在 springmvc.xml 文件中配置,就会使用默认的。 # Default implementation classes for DispatcherServlet's

m0_45406092的博客 574

【Spring相关技术】spring进阶-自定义请求报文转对象HttpMessageConverter

首先,我们创建一个类,继承自@Override> clazz) {@Override// 假设MyObject的构造函数接受一个字符串@Override// 假设我们要将MyObject转换成字符串进行输出接下来,我们需要在Spring MVC的配置中注册我们的自定义转换器。如果你使用的是Java配置,可以像下面这样实现@Override// 如何自定义的转换器与默认转换器冲突,可以将自己的转换器放到默认转换器前面。

wendao76的专栏 1973

SpringMVC配置文件

SpringMVC 详细介绍 Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发,Spring Web MVC也是要简化我们日常Web开发的。   与之相反的是基于组件的、事件驱动的Web框架,如Tapestry...

weixin_33762130的博客 841

SpringMvc 源码分析 (请求的处理链路 + 8大组件) (四)

doService -> 加入8大组件 -> doDispatch

959 792

spring mvc 配置文件信息记录

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springfram...

weixin_30530339的博客 60

spring-mvc:annotation-driven标签到底做了什么工作

&lt;mvc:annotation-driven /&gt; 到底做了什么工作 一句 &lt;mvc:annotation-driven /&gt;实际做了以下工作:(不包括添加自己定义的拦截器) 我们了解这些之后,对Spring3 MVC的控制力就更强大了,想改哪就改哪里。 &lt;!-- 注解请求映射  --&gt;&lt;bean class="org.springframework....

wenzi1wenzi的博客 144
上一篇: 应用springMVC时 JS等文件找不到错误
下一篇: Linux中如何让进程在后台运行
MyBackup
博客等级 码龄20年 10粉丝 58原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值