MultiActionController与ParameterMethodNameResolver
在一个Controller类中定义多个方法,并根据使用者的请求来执行当中的某个方法,相当于Struts的DispatcherAction。使用MultiActionController需要配个MethodNameResolver实例,默认使用ParameterMethodNameResolver,他会根据所给的网址中,最后请求的参数来决定执行Controller中的哪一个方法
1.控制器类继承MultiActionController
package com.ljq.web.controller; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.multiaction.MultiActionController; /** * 实现一个controller写多个方法 * * @author Administrator * */ public class MultiController extends MultiActionController { public ModelAndView add(HttpServletRequest request, HttpServletResponse response) { System.out.println("----add----"); return new ModelAndView("/test", "message", "add"); } public ModelAndView update(HttpServletRequest request, HttpServletResponse response) { System.out.println("----update----"); return new ModelAndView("/test", "message", "update"); } public ModelAndView query(HttpServletRequest request, HttpServletResponse response) { System.out.println("----query----"); return new ModelAndView("/test", "message", "query"); } }
2.定义控制方法按如下格式
public ModelAndView add(HttpServletRequest request, HttpServletResponse response) { System.out.println("----add----"); return new ModelAndView("/test", "message", "add"); }
3.在dispatcher-servlet.xml文件中引入多视图控制
<bean id="paramMethodResolver" class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver"> <property name="paramName" value="action"></property> </bean>
然后注入自己的控制器类
<bean id="multi" class="com.ljq.web.controller.MultiController"> <property name="methodNameResolver"> <ref bean="paramMethodResolver"/> </property> </bean>
完整的配置如下:
<?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:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd"> <bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="mappings"> <props> <prop key="/multi.do">multiController</prop> </props> </property> </bean> <!--配置由参数action来决定调用MultiActionController中的哪个方法--> <bean id="paramMethodResolver" class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver"> <property name="paramName" value="action"></property> </bean> <!--配置MultiActionController--> <bean id="multiController" class="com.ljq.web.controller.MultiController"> <property name="methodNameResolver"> <ref bean="paramMethodResolver"/> </property> </bean> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/"></property> <property name="suffix" value=".jsp"></property> </bean> </beans>
4.完善或者添加一个视图(test.jsp),对应控制器类的跳转
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>实现一个controller写多个方法</title> </head> <body> 本次调用方法是<b>${message }</b> </body> </html>
5.部署,启动
访问路径:
http://localhost:8083/springmvc/multi.do?action=add
http://localhost:8083/springmvc/multi.do?action=update
http://localhost:8083/springmvc/multi.do?action=query
相关推荐
例如,假设我们有一个名为`UserController`的Controller类,我们可以定义多个方法来处理用户相关的请求: ```java import org.springframework.stereotype.Controller; import org.springframework.web.bind....
默认情况下,每个请求都在单独的线程中执行,这意味着可以并行处理多个请求,提高系统响应速度。 2. 然而,过多的并发请求可能导致服务器资源紧张,这时可以通过引入线程池来控制并发数量,防止资源耗尽。 二、...
在SpringMVC实现的用户登录程序中,通常会有一个Controller来处理登录请求。在这个例子中,我们没有使用数据库验证用户名和密码,而是使用了默认的用户名“admin”和密码“admin”。当用户输入正确的用户名和密码时...
SpringMVC是Spring框架的一部分,专为处理HTTP请求和响应而设计,它提供了一个灵活的模型-视图-控制器(MVC)架构,使得开发者可以轻松地组织和管理应用程序的业务逻辑、数据和用户界面。 **一、Annotation的使用**...
- Controller:处理业务逻辑,通常是一个实现了 Controller 接口或带有 @Controller 注解的类。 - HandlerMapping:映射请求到处理器。 - ViewResolver:解析视图,将处理结果呈现给用户。 3. **整合步骤**: -...
在 Spring MVC 中,Controller 通常是一个实现了 `org.springframework.web.bind.annotation.Controller` 或 `org.springframework.stereotype.Controller` 注解的 Java 类。 2. **注解驱动的 Controller**:Spring...
在IT领域,SpringMVC是Spring框架的一个重要模块,它是一个用于构建Web应用程序的轻量级、模型-视图-控制器(MVC)架构。在本项目中,我们将探讨如何利用SpringMVC来实现用户角色的管理。这个过程通常包括用户注册、...
4. **编写 Controller**:创建一个简单的 Controller 类,比如名为 `HelloController`,并添加一个处理请求的方法,如 `@RequestMapping("hello")`。 5. **实现跳转功能**:在 Controller 方法中,你可以使用 `...
Controller通常包含多个处理方法,每个方法对应一个URL映射,负责业务逻辑的处理。 3. **视图解析(View Resolution)**: 虽然没有明确提到,但可以假设在WEB-INF目录下可能包含了JSP页面或其他视图资源。视图解析...
例如,你可以创建一个名为`HelloController`的类,并添加`@RequestMapping`注解来处理特定的URL请求。如下所示: ```java @Controller public class HelloController { @RequestMapping("/hello") public ...
Spring MVC 是一个强大的Java web应用程序开发框架,它作为Spring框架的一部分,主要负责处理Web层的交互。本篇学习笔记将带你逐步了解Spring MVC的核心概念、工作流程以及如何配置开发环境。 1. **Spring MVC简介*...
创建一个Controller类,定义两个方法,分别处理文件上传和下载的请求。在上传方法中,通过`@RequestParam("file") MultipartFile file`接收上传的文件,并将其保存到服务器的指定目录。 ```java @RequestMapping...
在本篇博文中,我们将深入探讨SpringMVC框架中的向导型Controller的实现,这是SpringMVC 3.1.1版本的一个重要特性。向导型Controller通常用于处理多步骤的用户交互流程,如购物车结账、用户注册等,它能够引导用户...
在开发企业级应用程序时,经常需要处理多个数据源的情况,比如分离不同的业务模块到不同的数据库,或者实现读写分离等。本DEMO演示了如何在SpringMVC和Mybatis框架中配置多个数据源,并结合Maven进行项目管理,提供...
Controller 是处理用户请求的类,通常包含多个处理方法。这些方法接收请求参数,处理业务逻辑,并返回 ModelAndView 对象,该对象包含了模型数据和视图信息。 五、ModelAndView ModelAndView 是一个组合模型数据和...
在SpringMVC中,`@RequestMapping`是一个元注解,用于将请求映射到特定的处理方法。我们可以通过自定义一个类似的元注解来实现这个功能。例如,我们可以创建一个名为`@MyRequestMapping`的注解,并在其中包含URL路径...
Spring MVC提供了`Controller`接口,但通常我们并不直接实现这个接口,而是使用注解驱动的方式,如`@Controller`,这个注解标记在类上表明该类是一个控制器类。这种方式更灵活且易于配置。 2. **处理方法映射** ...
例如,可以创建一个处理GET请求的“/hello”端点,返回一个简单的欢迎消息。 视图层的实现通常涉及到视图解析器。在Spring Boot中,默认使用Thymeleaf或JSP作为模板引擎。我们可以创建一个HTML文件,例如“hello....
在这个demo中,你可能会看到如何创建一个简单的Controller方法,它处理"/hello"路径的GET请求并返回一个字符串。这个字符串被视图解析器解释为视图名称,然后展示对应的视图内容。 SpringMVC的配置文件,通常是`...
- **开发处理器**:创建一个实现`Controller`接口的类,例如`ItemsController1`,在这个类中实现`handleRequest`方法来处理HTTP请求,并返回`ModelAndView`对象。 ```java public class ItemsController1 ...