`
duwang1104
  • 浏览: 1602 次
  • 性别: Icon_minigender_1
  • 来自: 天津
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

spring 3 mvc 多个动作分组到一个控制器

阅读更多
本文小结下spring 3 MVC中常见的几个controller相关的

1  MultiActionController
  比如在一个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;

public class CustomerController extends MultiActionController{

public ModelAndView add(HttpServletRequest request,
HttpServletResponse response) throws Exception {

return new ModelAndView("CustomerPage", "msg","add() method");

}

public ModelAndView delete(HttpServletRequest request,
HttpServletResponse response) throws Exception {

return new ModelAndView("CustomerPage", "msg","delete() method");

}

public ModelAndView update(HttpServletRequest request,
HttpServletResponse response) throws Exception {

return new ModelAndView("CustomerPage", "msg","update() method");

}

public ModelAndView list(HttpServletRequest request,
HttpServletResponse response) throws Exception {

return new ModelAndView("CustomerPage", "msg","list() method");

}

}

<beans ...>

<bean
  class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping" />

  <bean class="com.mkyong.common.controller.CustomerController" />

</beans>

下面的形成匹配:
/customer/add.htm –> add()
/customer/delete.htm –> delete()
/customer/update.htm –> update()
/customer/list.htm –> list()
而InternalPathMethodNameResolver是MultiActionController的默认实现,
<beans ...>
<bean
  class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping" />

  <bean class="com.mkyong.common.controller.CustomerController">
     <property name="methodNameResolver">
<bean class="org.springframework.web.servlet.mvc.multiaction.InternalPathMethodNameResolver">
   <property name="prefix" value="test" />
   <property name="suffix" value="Customer" />
</bean>
     </property>
   </bean>
</beans>
增加了前缀和后缀,比如:
/customer/add.htm –> testaddCustomer()
/customer/delete.htm –> testdeleteCustomer()
/customer/update.htm –> testupdateCustomer()
/customer/list.htm –> testlistCustomer()
如果用annotation则更方便了,上面的变为:
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class CustomerController{

@RequestMapping("/customer/add.htm")
public ModelAndView add(HttpServletRequest request,
HttpServletResponse response) throws Exception {

return new ModelAndView("CustomerAddView");

}
2 PropertiesMethodNameResolver
  这个可以配合multication去自定义匹配:
如:
<beans ...>

<bean
  class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping" />

<bean class="com.mkyong.common.controller.CustomerController">
   <property name="methodNameResolver">
    <bean class="org.springframework.web.servlet.mvc.multiaction.PropertiesMethodNameResolver">
      <property name="mappings">
<props>
   <prop key="/customer/a.htm">add</prop>
   <prop key="/customer/b.htm">update</prop>
   <prop key="/customer/c.htm">delete</prop>
   <prop key="/customer/d.htm">list</prop>
   <prop key="/customer/whatever.htm">add</prop>
</props>
       </property>
     </bean>
    </property>
  </bean>

</beans>

3 ParameterMethodNameResolver
  这个实际上是将新形如XXXX.XXX?ACTION=ADD后的action=add部分映射到
mulitication的又一个方法,很简单,比如:
<beans ...>

<bean
  class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping" />

  <bean class="com.mkyong.common.controller.CustomerController">
     <property name="methodNameResolver">
<bean class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">
   <property name="paramName" value="action"/>
</bean>
     </property>
   </bean>

</beans>
/customer/*.htm?action=add –> add() method
/customer/whatever.htm?action=add –> add() method
/customer/*.htm?action=update –> update() method
/customer/*.htm?action=delete –> delete() method
/customer/*.htm?action=list –> list() method


4 ParameterizableViewController
一般要经过CONTROLLER才能返回一个VIEW,比如:
public class WelcomeController extends AbstractController{

@Override
protected ModelAndView handleRequestInternal(HttpServletRequest request,
HttpServletResponse response) throws Exception {

ModelAndView model = new ModelAndView("WelcomePage");
return model;

}

}
但现在实际不用了:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

    <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
        <property name="mappings">
            <props>
                <prop key="/welcome.htm">welcomeController</prop>
            </props>
        </property>
    </bean>

   <bean name="welcomeController"
            class="org.springframework.web.servlet.mvc.ParameterizableViewController">
    <property name="viewName" value="WelcomePage" />
   </bean>

当访问http://localhost/welcome.htm后,直接跳转到WelcomePage.jsp页面了
分享到:
评论

相关推荐

    Spring3 MVC 深入研究

    Spring3 MVC是Spring框架的重要组成部分,它是一个用于构建Web应用程序的轻量级、模型-视图-控制器(MVC)框架。本篇文章将深入探讨Spring3 MVC的核心概念、工作原理以及如何在实际项目中应用。 一、Spring3 MVC...

    spring3MVC 框架demo

    Spring3MVC是Spring框架的一个重要模块,专为构建Web应用程序提供模型-视图-控制器(MVC)架构支持。这个框架使得开发者可以更轻松地处理HTTP请求、数据绑定、验证以及视图渲染等任务。在"spring3MVC框架demo"中,...

    spring3 mvc jar

    标题 "spring3 mvc jar" 指涉的...总之,Spring 3 MVC是一个强大的Web开发框架,提供了丰富的功能和灵活性,帮助开发者构建健壮、可扩展的Web应用。通过深入学习和实践,可以充分利用其特性来提高开发效率和代码质量。

    Spring Web MVC外文翻译

    Spring MVC 和许多其他 Web 框架一样,围绕前端控制器模式设计,其中中央 Servlet(即 DispatcherServlet)提供了一个共享算法用于处理请求,而实际的工作则由可配置的委托组件来完成。这种模式非常灵活,支持多样化...

    spring2.0MVC+spring2.5MVC+portletMVC

    Spring MVC是Spring框架的核心部分,用于构建Web应用程序的模型-视图-控制器(MVC)架构。本主题将深入探讨Spring 2.0、2.5版本的MVC特性和Portlet MVC的相关知识。 首先,Spring 2.0在MVC方面引入了显著的改进,...

    spring3.0Mvc简单示例

    Spring 3.0 MVC 是一个基于Java的企业级框架,用于构建Web应用程序,特别是控制器、视图和模型组件的分离。这个“spring3.0Mvc简单示例”旨在帮助开发者快速理解并入门Spring MVC的基本概念和操作流程。让我们深入...

    spring-mvc-官方中文文档

    3. **HandlerMapping**:该接口负责将请求与处理器(Controller)进行匹配,Spring MVC 提供了多种实现,如基于注解的 HandlerMapping,可以根据 @RequestMapping 注解将 URL 映射到控制器方法。 4. **...

    spring-mvc-showcase

    Spring MVC 是 Spring 框架的重要组成部分,它为构建基于模型-视图-控制器(Model-View-Controller)架构的 Web 应用程序提供了一种强大的解决方案。本篇文章将深入探讨 "spring-mvc-showcase" 示例项目,帮助读者...

    spring3.0 MVC中文教程

    2. **第2部分:在Spring 3.0 MVC中创建Hello World应用程序** - 通过一个简单的示例来展示如何快速启动一个Spring MVC项目。 3. **第3部分:在Spring 3.0 MVC中进行表单处理** - 探讨如何使用Spring MVC处理表单提交...

    spring-mvc-demo

    Spring MVC 是 Spring 框架的一部分,它是一个轻量级的、基于模型-视图-控制器(MVC)设计模式的 Web 应用开发框架。Spring MVC 提供了丰富的功能,使得开发者可以快速、高效地构建高质量的 Web 应用。在本示例 ...

    Spring3MVC真正入门资料.doc

    Spring3MVC真正入门资料 本文将详细介绍 Spring3MVC 框架的入门知识,包括核心类与接口、核心流程图、DispatcherServlet 说明等。 核心类与接口 在 Spring3MVC 框架中,有几个重要的接口与类,了解它们的作用可以...

    Spring-MVC的demo

    总结来说,"Spring-MVC的demo"是一个全面的教程,涵盖了从数据库操作到Spring MVC核心概念的多个方面。通过学习和实践这个示例,开发者能够更好地理解和掌握Spring MVC框架的使用,以及如何构建基于MVC模式的Web应用...

    Spring MVC 教程快速入门 深入分析

    十八、Spring MVC多视图控制器:解释了如何配置和使用Spring MVC的多视图控制器来处理不同的视图需求。 十九、&lt;mvc:annotation-driven/&gt;到底做了什么工作:描述了&lt;mvc:annotation-driven /&gt;标签的作用,它自动注册...

    spring-mvc-study.zip

    总的来说,"spring-mvc-study.zip"项目是一个很好的学习和实践Spring MVC的起点,涵盖了从项目结构、Maven依赖管理到Spring MVC核心组件的使用等多个方面。通过这个项目,你可以深入理解Spring MVC的工作原理,提升...

    spring2.5 mvc 完整项目

    总结,"Spring 2.5 MVC 完整项目"是一个综合性的学习和实践资源,涵盖了从项目初始化、错误处理到数据库操作的全过程。通过深入理解并实践该项目,开发者不仅能掌握Spring MVC的核心概念,还能提升在实际项目中的...

    Spring mvc 教程

    - **使用@Controller 注解定义一个控制器**:通过这个注解可以将类标记为一个控制器,Spring 会自动检测并将其纳入管理。 - **使用@RequestMapping 注解映射请求路径**:此注解用于指定控制器处理的具体 URL 路径...

    spring3 mvc例子

    在这个例子中,开发者可能已经创建了一个简单的Spring MVC应用,其中包括一个或多个使用注解配置的控制器,可能还有一些服务和DAO类。这些类将协同工作,处理HTTP请求,执行业务逻辑,并返回响应给客户端。由于依赖...

Global site tag (gtag.js) - Google Analytics