`
weigang.gao
  • 浏览: 490985 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

SpringMVC实现一个controller有多个处理请求的方法

 
阅读更多

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

分享到:
评论

相关推荐

    SpringMVC中一个Controller多个方法

    例如,假设我们有一个名为`UserController`的Controller类,我们可以定义多个方法来处理用户相关的请求: ```java import org.springframework.stereotype.Controller; import org.springframework.web.bind....

    springmvc+spring线程池处理http并发请求数据同步控制问题

    默认情况下,每个请求都在单独的线程中执行,这意味着可以并行处理多个请求,提高系统响应速度。 2. 然而,过多的并发请求可能导致服务器资源紧张,这时可以通过引入线程池来控制并发数量,防止资源耗尽。 二、...

    SpringMVC controller

    在SpringMVC实现的用户登录程序中,通常会有一个Controller来处理登录请求。在这个例子中,我们没有使用数据库验证用户名和密码,而是使用了默认的用户名“admin”和密码“admin”。当用户输入正确的用户名和密码时...

    SpringMVC实现一个完整的项目

    SpringMVC是Spring框架的一部分,专为处理HTTP请求和响应而设计,它提供了一个灵活的模型-视图-控制器(MVC)架构,使得开发者可以轻松地组织和管理应用程序的业务逻辑、数据和用户界面。 **一、Annotation的使用**...

    netty整合SpringMVC实现下载

    - Controller:处理业务逻辑,通常是一个实现了 Controller 接口或带有 @Controller 注解的类。 - HandlerMapping:映射请求到处理器。 - ViewResolver:解析视图,将处理结果呈现给用户。 3. **整合步骤**: -...

    springmvc_controller_01

    在 Spring MVC 中,Controller 通常是一个实现了 `org.springframework.web.bind.annotation.Controller` 或 `org.springframework.stereotype.Controller` 注解的 Java 类。 2. **注解驱动的 Controller**:Spring...

    SpringMVC实现用户角色管理

    在IT领域,SpringMVC是Spring框架的一个重要模块,它是一个用于构建Web应用程序的轻量级、模型-视图-控制器(MVC)架构。在本项目中,我们将探讨如何利用SpringMVC来实现用户角色的管理。这个过程通常包括用户注册、...

    springMVC第一个示例

    4. **编写 Controller**:创建一个简单的 Controller 类,比如名为 `HelloController`,并添加一个处理请求的方法,如 `@RequestMapping("hello")`。 5. **实现跳转功能**:在 Controller 方法中,你可以使用 `...

    自主实现的简易SpringMVC

    Controller通常包含多个处理方法,每个方法对应一个URL映射,负责业务逻辑的处理。 3. **视图解析(View Resolution)**: 虽然没有明确提到,但可以假设在WEB-INF目录下可能包含了JSP页面或其他视图资源。视图解析...

    springMVC基本配置(Controller+Service+Dao)

    例如,你可以创建一个名为`HelloController`的类,并添加`@RequestMapping`注解来处理特定的URL请求。如下所示: ```java @Controller public class HelloController { @RequestMapping("/hello") public ...

    SpringMvc学习笔记

    Spring MVC 是一个强大的Java web应用程序开发框架,它作为Spring框架的一部分,主要负责处理Web层的交互。本篇学习笔记将带你逐步了解Spring MVC的核心概念、工作流程以及如何配置开发环境。 1. **Spring MVC简介*...

    IDEA SpringMVC 实现文件的上传下载

    创建一个Controller类,定义两个方法,分别处理文件上传和下载的请求。在上传方法中,通过`@RequestParam("file") MultipartFile file`接收上传的文件,并将其保存到服务器的指定目录。 ```java @RequestMapping...

    SpringMVC杂记(三) 向导型Controller的实现(基于SpringMVC 3.1.1)

    在本篇博文中,我们将深入探讨SpringMVC框架中的向导型Controller的实现,这是SpringMVC 3.1.1版本的一个重要特性。向导型Controller通常用于处理多步骤的用户交互流程,如购物车结账、用户注册等,它能够引导用户...

    SpringMVC +Mybatis 多个数据源配置 DEMO + maven

    在开发企业级应用程序时,经常需要处理多个数据源的情况,比如分离不同的业务模块到不同的数据库,或者实现读写分离等。本DEMO演示了如何在SpringMVC和Mybatis框架中配置多个数据源,并结合Maven进行项目管理,提供...

    SpringMVC PPT_springmvc_

    Controller 是处理用户请求的类,通常包含多个处理方法。这些方法接收请求参数,处理业务逻辑,并返回 ModelAndView 对象,该对象包含了模型数据和视图信息。 五、ModelAndView ModelAndView 是一个组合模型数据和...

    SpringMVC的代码简单实现

    在SpringMVC中,`@RequestMapping`是一个元注解,用于将请求映射到特定的处理方法。我们可以通过自定义一个类似的元注解来实现这个功能。例如,我们可以创建一个名为`@MyRequestMapping`的注解,并在其中包含URL路径...

    springmvc_controller_02

    Spring MVC提供了`Controller`接口,但通常我们并不直接实现这个接口,而是使用注解驱动的方式,如`@Controller`,这个注解标记在类上表明该类是一个控制器类。这种方式更灵活且易于配置。 2. **处理方法映射** ...

    springmvc简单构建一个项目(一)

    例如,可以创建一个处理GET请求的“/hello”端点,返回一个简单的欢迎消息。 视图层的实现通常涉及到视图解析器。在Spring Boot中,默认使用Thymeleaf或JSP作为模板引擎。我们可以创建一个HTML文件,例如“hello....

    SpringMVC项目接口Controller demo,入门参考

    在这个demo中,你可能会看到如何创建一个简单的Controller方法,它处理"/hello"路径的GET请求并返回一个字符串。这个字符串被视图解析器解释为视图名称,然后展示对应的视图内容。 SpringMVC的配置文件,通常是`...

    springmvc第一天课堂笔记.docx

    - **开发处理器**:创建一个实现`Controller`接口的类,例如`ItemsController1`,在这个类中实现`handleRequest`方法来处理HTTP请求,并返回`ModelAndView`对象。 ```java public class ItemsController1 ...

Global site tag (gtag.js) - Google Analytics