Spring MVC 实现一个控制器写多个方法

SpringMVC 学习笔记(二)控制层重定向与请求转发 | 异常处理 | SSM框架整合案例 | 分页插件以及使用 | 后端数据校验机制| 文件上传问题 文章目录参考资料运行环境一、SpringMVC之Cntroller层1.1 重定向1.2 请求转发1.3 调用HttpSession、HttpServletRequest对象二、SpringMVC异常处理2.1 全局异常处理2.2 Controller层跳转全局异常三、SSM 框架整合案例3.1 SSM整合案例——Tomcat的配置3.2 SSM整合案例——Spring的配置3.3 SSM整合案例——SpringMVC的配置四、使用分页插件4.1 在项目中导入分页插件的jar包,或者依赖4.2 在Sprin 阅读详情

Spring MVC 控制器

 

在之前的开发与看框架的时候,误认为一个动作一定要一个控制器来与之对应,这使得我对Spring MVC 没有很好的印象,用起来就感觉和以前的最原始的servlet 开发是一个模子,像我这么个偷懒的人,怎么用这兴趣去每个都要相应的写与开发呢?于是产生了以下疑问。

Spring这么好的一个框架为何不能支持像struts2.x一样,通过一个配置文件,一个类,可以写很多个不同的方法,访问的时候以带参数的形式来区分到底调用哪一个业务方法来处理我们相关的请求。在经过半天的查找资料以及同事的提醒,总算知道了Spring MVC中一个类写多个方法,完完全全的实现了像struts2.x 那么方便而又犀利的方法。主要是通过以下两种方式可以实现。与struts2.x有过而无不及啊。

1.还是继承老思想,实现控制器方法。在这里,我们只要继承了SpringMVCMultiActionController 便可以在里面写我们想要的方法了,写好之后,在配置文件里面需要让他依赖于这个ParameterMethodNameResolver 。

<bean id="paramMethodResolver"class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">

<property name="paramName"><value>method</value></property>

</bean>

依赖这个bean后,在写控制器的时候,让其继承MultiActionController这个类。我们就可以在访问的时候以xxx.do?method=getxxx 就可以访问了。

 

2.运用Spring 2.5以后新起的一种方式,注解开发。通过注解的方式,也可以实现相同地功能。注解开法主要是运用AnnotationMethodHandlerAdapter类来进行映射。主要的映射方式是通过配置文件xxx-servlet.xml中<!--:启动Spring MVC的注解功能,完成请求和注解POJO的映射 -->

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

AnnotationMethodHandlerAdapter"/>

 

在配置文件中注入这个类以后,就完成了注解的配置,当一个请求发起的时候,这个类就会根据地址来扫描,是否存在控制器中有相应的注解。通过注解来进行各种转发和操作。

配置好了配置文件后,就要开始写控制器,这里的控制器不需要继承或实现任何类或接口。换句话说,在这个类里面不用做其它的任何事,这个类是一个和其它普通类一样的的类。我们要做的就是在这个类和方法前面加上注解。即可以完成映射。

主要的注解有:@Controller这个注解是最核心的注解,在类前面加上这个注解后,它便成了一个控制器。SpringMVC容器就会监视着这个类。第二个核心注解就是@RequestMapping,加上这个注解后,表示这个方法会经过转发。可以直接通过地址栏进行访问。

 

几种常见的控制器

Spring MVC的核心就是控制器,而在我们写控制器的时候,Spring MVC有那么多的控制器,我们选用哪一个才是最佳选择呢?

Spring MVC 的控制器主要都直接或间接的实现了Controller 接口。主要有以下几类控制器。

1.简单控制器(AbstractController),适合于无参数或者少参数的访问,如我们要一子显示所有留言,显示所有帖子等。在使用该控制器的时候,一般会重写handleRequestInternal方法。

2.命令控制器(AbstractCommandController),自我感觉可以用简单控制器替换,适合于更少参数的传递访问。如:显示我喜欢的帖子。。。。。

3.表单控制器(SimpleFormController)这个控制器是最通用的一个控制器,主要用于对表单的操作和控制。例如:增加,修改帖子等。

4.向导控制器(AbstractWizardFormController)适用于分步注册,分步保存数据的情况下。该控制器里面有很多方法供选择。

5.多动作控制器(multiActionController),该控制器允许在同一个类中写多个不同的方法,以参数的来区别访问哪一个方法。在这个控制器类中可以定义自己的方法。主要定义方式有public (ModeAndView|Map|String |void)actionName(HttpServletRequest,HttpServletResponse,response).

 

第三十七章 Spring之假如让你来写MVC——控制器篇 对于Spring一直都是既熟悉又陌生,说对它熟悉吧,平时用用没啥问题,但面试的时候被问的一脸懵逼,就很尴尬,都不好意思在简历上写着熟悉Spring了所以决定花点时间研究研究Spring的源码。《Spring源码深度解析(第2版)》、《Spring揭秘》、《Spring技术内幕:深入解析Spring架构与设计原理(第2版)》书接上回,在上篇第三十六章 Spring之假如让你来写MVC——拦截器篇中,A君按照老大的要求,实现了拦截器部分的功能了。接下来看看A君会有什么骚操作吧。 阅读详情

相关推荐

【Handler】Spring MVC控制器详解

在Spring MVC中,Handler是一个用来处理HTTP请求的对象。它通常是一个控制器(Controller)类中的方法。当用户发送一个请求到服务器时,Spring MVC会根据请求的URL、HTTP方法等信息,找到相应的处理器(Handler)来处理这个请求。

科马的博客 3557

springmvc里面controller能不能重载方法

导航了解重载编写代码ReqiestMapping里面value能一样吗?结论 了解重载 重载:重载字面意思多次的意思,也就是同一个方法实现多个不同的逻辑,并可以在同一个类中可以实现。其实现的原理是,方法名相同,参数的个数或者类型不同即可。 重写:重写就是要重新去写(实现),一个类中不可能两个定义一样的方法。因此,重写就是子类对父类定义的方法重新实现一次。 编写代码 然后后启动,访问正常 Reqi...

你就像甜甜的益达 7923

如何使用Spring MVC来构建控制器和视图?

Spring MVC是一个基于Java的Web框架,它使用Model-View-Controller(MVC)架构模式来分离应用程序的不同关注点。使用Spring MVC可以简化Web应用程序的开发过程。

m0_47946173的博客 997

Spring 重写内置 Bean(Controller、Service 等)

我们可以自定义一个注解,然后使用该注解来很方便的在任何地方来排除需要排除的类。/*** 自定义注解,用来排除原本会在spring上下文中的bean。* 一般用于删除一个不可以修改的Bean,然后自定义一个类继承原有类然后重写特定的方法取代原来的类* @author 单红宇*/@ComponentClass

小单的博客专栏 727

Spring MVC-前端控制器

Spring MVC-前端控制器 DispatcherServlet 是前端控制器设计模式的实现,提供 Spring Web MVC 的集中访问点,而且负责职责的分派,而且与 Spring IoC 容器无缝集成,从而可以获得 Spring 的所有好处 DispatcherServlet 主要用作职责调度工作,本身主要用于控制流程,主要职责如下: 1、文件上传解析,如果请求类型是 multip...

industry2018的博客 2380

Spring MVC项目,访问不到相应的控制器方法,如何解决??

🏆本文收录于《优快云问答解惑-专业版》专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!

**My Coding Family** 1218

菜鸟学习Spring——SpringMVC注解版控制层重定向到控制层

一、概述。       SpringMVC中界面请求Contorller1,Contorller1需要重定向到Contorller2中显示其他页面或者做一些业务逻辑,Spring中提供了这个功能利用“redirect:/”来进行重定向。 二、代码演示。1、界面 Login.jsp <%@ page language="java" contentType="text/html; charset=UTF

Marvel__Dead 胡艺宝的博客 982

SpringBoot实战——仿b站项目(一)

热部署就是当应用程序这种运行的时候升级冉家或者修改某一部分代码、配置文件时,无需手动启动应用,即可修改的部分生效工具 + IDEA配置。

weixin_52880572的博客 3453

SpringMVC-三

文件上传 导入jar包 commons-fileupload-1.3.1.jarcommons-io-2.2.jar 前端提交 springmvc配置文件中配置 控制层代码 拦截器(拦截都是控制层的地址。在过滤器之后,可以共存 filter: ) 1. 创建一个类 实现接口 HandlerInterceptor 2. 重写接口的中方...

Lc875967960的博客 167

若依框架集成saToken

若依版本3.8.8,鉴权采用security框架,这种框架太重,项目中想实现对外提供接口功能。尽快减少修改原框架的逻辑基础上,采用satoken实现。

sccd2009的专栏 1482

手把手解决AutoDock安装那些坑:从autogrid报错到.map文件生成(Win10/11环境)

本文详细解析了在Win10/11环境下安装AutoDock时遇到的常见问题,特别是autogrid报错和.map文件生成失败的情况。通过实战验证的解决方案,包括环境变量设置、Python版本管理、文件权限调整等,帮助用户顺利完成安装并提升分子对接研究效率。

weixin_42548888的博客 198

Spring MVC实现一个控制器写多个方法

Spring MVC的API: DispatcherServlet:         整个Spring MVC的前端控制器,由它来接管来自客户端的请求 HandlerMapping:           DispatcherServlet会通过它来处理客户端请求到各个(Controller)处理器的映射 HandlerAdapter:            HandlerMapping会...

塵风的blog 454

具身智能:原理、算法与系统 第18章 模仿学习与人类示范

与基于试错机制的强化学习不同,模仿学习假设存在能够提供高质量轨迹示范的专家策略,学习者的目标是在不直接访问专家内部决策机制的情况下,复现或泛化专家的行为模式。此外,选项 GAIL(Option-GAIL)将分层强化学习与对抗模仿结合,学习选项(Options)级别的策略,能够捕捉专家示范中的多模态行为与高层意图。X-Sim 框架提出从真实到模拟再到真实的迁移路径:首先从人类视频中重建物理仿真环境,在仿真中训练状态级策略,随后通过策略蒸馏获得基于视觉的策略,最后通过在线领域自适应对齐真实与仿真观测。

VectorShift的博客 125

Spring MVC实现一个控制器写多个方法(注解方式、继承方式)

Spring MVC的API: DispatcherServlet:         整个Spring MVC的前端控制器,由它来接管来自客户端的请求 HandlerMapping:           DispatcherServlet会通过它来处理客户端请求到各个(Controller)处理器的映射 HandlerAdapter:            HandlerMapping会根据

Seven's 专栏 7699

Spring 核心技术解析【纯干货版】- I:Spring 基础模块 Spring-Core 模块精讲

Spring-Core 模块,是 Spring 核心容器模块之一。虽然 “Core” 本身就有 “核心的,重要的部分” 的含义,但是它并非是实现(常被我们说为 Spring 核心机制)IOC / AOP 的模块。Spring 中的 IOC 机制,主要来自于 BeanFactory 容器和 ApplicationContext 容器,这二者分别由同为核心容器模块的 Spring-Bean 模块 和 Spring-Context 模块所提供。

栗筝i的博客 2522

在Android中实现SIM卡的读写操作

在上述代码中,我们创建了一个PhoneStateListener的实例,并重写了onSimStateChanged方法来处理SIM卡状态改变的事件。然后,我们通过调用telephonyManager的listen方法注册了这个监听器,并指定了要监听的事件类型为SIM卡状态的改变。在上述代码中,我们调用telephonyManager的sendUssdRequest方法来发送USSD命令,并通过TelephonyManager.UssdResponseCallback来处理USSD响应和发送失败的情况。

2301_79326510的博客 923

编写Spring MVC控制器的14个技巧

本期目录 1.使用@Controller构造型 2.实现控制器接口 3.扩展AbstractController类 4.为处理程序方法指定URL映射 5.为处理程序方法指定HTTP请求方法 6.将请求参数映射到处理程序方法 7.返回模型和视图 8.将对象放入模型 9.处理程序方法中的重定向 10.处理表格提交和表格验证 11.处理文件上传 12.在控制器中自动装配业务类 ...

不坠青云 1万+

VisionPro 机器视觉案例 之 彩色保险丝个数统计

CogColorSegmenterTool CogColorMatchTool

机器视觉李小白的博客 2352

【Java开发日记】Spring MVC控制器的14个技巧

在遵循MVC架构的应用程序中,控制器(C)应该将数据传递到模型(M)中,然后在视图(V)中使用该模型。此处理程序方法返回一个 ModelAndView 保存视图名称 UserList 的User 对象和一个可在视图中使用的对象集合。这将创建具有有关受支持的方法,会话和缓存的配置的单动作控制器,然后可以在控制器的bean声明中指定这些配置。此控制器有两个处理相同URL模式的方法/login,但前者用于 GET 方法,而后者用于 POST 方法。注解也有两个额外的属性,这可能是在某些情况下是有用的。

纵有疾风起 人生不言弃 9050

二、Creo模型的功能函数 例如:模型(元件)的干涉........

【代码】模型(元件)的干涉。

行为艺术家Zzz的博客 613

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

spring MVC笔记2—用注入和注解解决一个controller多个方法

一、   实现一个Controller多个方法 1、        controller继承MutliActionController publicclass SpringController extends MultiActionController{ }   2、在spring_mvc.xml配置一个多请求的bean bean id="parameNameResolver"

开着坦克的瑞兽 3961

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Spring MVC注解式控制器开发

REST(表征状态转移)是Roy Fielding博士在2000年他的博士论文中提出来的一种软件架构风格。对站点资源的CRUD操作:查询,添加,更新,删除http请求的方式:GET, POST, PUT, DELETEREST 从资源的角度来观察整个网络,分布在各处的资源由URI确定,而客户端的应用通过URI来获取资源的表征。获得这些表征致使这些应用程序转变了其状态。随着不断获取资源的表征,客户端应用不断地在转变着其状态,所谓表征状态转移。如果一个架构符合REST原则,就称它为RESTful架构。

m0_74808313的博客 1385

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

springMVC(5) springMVC一个controller写多个方法

上面的例子都是实现Controller,实现handleRequest方法,我们想像struts2那样一个action里有多个方法怎么办? 可以继承MultiActionController类,在类里写多个方法。spring-servlet.xml里需要配置ParameterMethodNameResolver。

北风 2583

从头开始实现一个小型spring框架——控制器controller实现mvc请求拦截和响应

填坑

KevinLyz的博客 3048

Spring MVC中控制器方法的返回值

原文链接:http://www.yiidian.com/springmvc/return-value.html Spring MVC的控制器方法返回值可以支持多种写法,每种写法的场景和效果都不一样。下面分别来看看每种返回值的使用。 普通字符串 转发字符串 重定字符串 void ModelAndView Java对象 1 普通字符串 返回普通字符串这种情况比较常见,主要用在我们处理完业务逻辑后,...

Java客学习室 1900
上一篇: 用JS阻止事件冒泡
下一篇: JDWP Transport dt_socket failed to initialize, TRANSPORT_INIT(510)异常
freecodenow
博客等级 码龄18年 17粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值