zoukankan      html  css  js  c++  java
  • spring MVC之将多个动作分组到一个控制器

    spring MVC之将多个动作分组到一个控制器(一)

    ----------

    创建多动作控制器

    根据"每个动作一个控制器"的方法,给应用程序添加动作意味着必须在应用程序上下文中增加控制器。为了使配置更加简单,你想要将Spring MVC应用程序的控制器数量减到最少。Spring MVC提供的MultiActionController类允许你将多个相关的动作分组到一个控制器中。控制器可以扩展MultiActionController,并包含多个处理程序方法来处理多个动作。在多动作控制器中,可以用下面的形式,定义一个或者多个处理程序方法。

    public (ModelAndView | Map | String | void) actionName(

    HttpServletRequest,HttpServletResponse[,HttpSession][,CommandObject]);

    处理程序方法的返回类型可以是ModelAndView(模型及视图名称,或者视图对象)、Map(只有模型)、String

    (只有视图名称)或者void(方法本身直接处理HTTP响应)。

    当请求通过处理程序映射被映射到多动作控制器时,它必须由该控制器内的某个特定的处理程序方法来处理。MultiActionController允许你用MethodNameResolver对象来配置方法映射。

    创建多动作控制器

    扩展MultiActionController类,然后就可以在这个控制器内部声明多个处理程序方法了。

    Java代码  收藏代码
    1. package com.apress.springrecipes.court.web;  
    2. ...  
    3. import org.springframework.web.bind.ServletRequestUtils;  
    4. import org.springframework.web.servlet.ModelAndView;  
    5. import org.springframework.web.servlet.mvc.multiaction.MultiActionController;  
    6. public class MemberController extends MultiActionController{  
    7.     private MemberService memberService;  
    8.     public void setMemberService(MemberService memberService){  
    9.         this.memberService = memberService;  
    10.     }  
    11.     public ModelAndView add(HttpServletRequest request,  
    12.         HttpServletResponse response,Member member)throws Exception{  
    13.         memberService.add(member);  
    14.         return new ModelAndView("redirect:list.htm");  
    15.     }  
    16.     public ModelAndView remove(HttpServletRequest request,  
    17.         HttpServletResponse response)throws Exception{  
    18.         String memberName = ServletRequestUtils.getRequiredStringParameter(  
    19.             request,"memberName");  
    20.         memberService.remove(memberName);  
    21.         return new ModelAndView("redirect:list.htm");  
    22.     }  
    23.     public ModelAndView list(HttpServletRequest request,  
    24.         HttpServletResponse response)throws Exception{  
    25.         List<Member> members = memberService.list();  
    26.         return new ModelAndView("memberList","members",members);  
    27.     }  
    28. }  

    对于add()处理程序方法,控制器将请求参数绑定到类型为Member的命令对象中,因此声明将第三个方法参数声明为Member类型。对于remove()和list()处理程序方法,则只要声明请求和响应参数就可以了。当add()或者remove()方法完成时,要将用户再次重定向到列表页面显示会员。

    在声明这个控制器时,为了维护会员列表,需要有一个指向服务层中memberService Bean的引用。

    Xml代码  收藏代码
    1. <bean id="memberController"  
    2.     class="com.apress.springrecipes.court.web.MemberController">  
    3.     <property name="memberService" ref="memberService"/>  
    4. </bean>  

    由于在web应用程序上下文中配置了ControllerClassNameHandlerMapping,它会注意到这个控制器的类型为

    NultiActionController,然后为它生成下面的映射。

    Java代码  收藏代码
    1. MemberController --> /member/*  

     默认情况下,MultiActionController会根据方法名称将URL映射到处理程序方法上。对于这个控制器,URL会进行如下映射。

    Java代码  收藏代码
    1. /member/add.htm --> add()  
    2. /member/remove.htm --> remove()  
    3. /member/list.htm --> list()  
  • 相关阅读:
    用strings命令查看kafka-log内容 过滤二进制编码
    Kafka+Storm+HDFS整合实践
    kafka 在阿里云部署
    oracle中的类似BIN$MrkCYT9eTTK+0sStMwn7+Q==$0的表的作用
    Oracle 分区表的新增、修改、删除、合并。普通表转分区表方法
    ORACLE分区表删除分区数据
    graylog 市场
    三种方法解决 Failed to start LSB: Bring up/down networking 问题
    【项目积累】对JSON数据的处理
    【CTO俱乐部研修班开课】看板先驱David J. Anderson:看板核心在于创造一种能力——提升敏捷性
  • 原文地址:https://www.cnblogs.com/cheng07045406/p/3663314.html
Copyright © 2011-2022 走看看