关闭

ParameterMethodNameResolver 用法(采用请求参数匹配方法名)

221人阅读 评论(0) 收藏 举报

今天浏览项目,想通过请求的url找到对应的控制器,怎么搜索都搜索不到对应的requestmapping,经过一番查找,发现该项目用了MultiActionController的ParameterMethodNameResolver方式匹配控制器,即通过请求的参数匹配控制器中的方法。经过自己研究,实践如下:

思路:

1、配置 ParameterMethodNameResolver 的请求参数名(即 通过制定的请求参数名获取参数,从而转换成方法名)。

2、配置控制器,配置控制器需要注入ParameterMethodNameResolver 的bean,注入名称固定为methodNameResolver 这个可用从MultiActionController源码得到原因,

      由于控制器,初始化时需要装配(不会注解)所以只好用xml配置。

3,、编写控制需要继承MultiActionController,每个方法参数必须是(HttpServletRequest request,  HttpServletResponse response)这种类型,而且返回值只能是String ,modeAndview,void,四种(还有一种忘了)。


代码如下:

 <bean id="paramMethodResolver" class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">
        <property name="paramName" value="fn"></property>    
 </bean>
<bean name="/mm.do" class="controller.methodNameResolverConterller">
   <property name="methodNameResolver">    //这个名称貌似是固定了,可以从MultiActionController源码中的构造函数中有该参数名
        <ref bean="paramMethodResolver"/>
   </property>
   </bean>
public class methodNameResolverConterller extends MultiActionController {
	

	public void teste(HttpServletRequest request,
            HttpServletResponse response){
		System.out.println("this is test1");
	}
	
	

http://localhost:8090/myweb_1/mm.do?fn=teste

0
0
查看评论

spring的ParameterMethodNameResolver的使用

spring的ParameterMethodNameResolver的可以根据不同的参数执行不同方法,类似Struts的dyncaction下面有一个例子package ee.bug;import java.util.ArrayList;import java.util.Date;import ja...
  • accpsz
  • accpsz
  • 2008-06-16 15:59
  • 4421

javaEE之------SpringMVC中ParameterMethodNameResolver应用

介绍 方法动态调用核心类 org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver 正在学习SpringMVC,感觉这个很重要。 前台访问后台会根据spring的配置文件转到Controller Co...
  • yangxin_blog
  • yangxin_blog
  • 2016-01-23 11:24
  • 2277

MultiActionController,PropertiesMethodNameResolver,ParameterMethodNameResolver简单例子

MultiActionController 不需要强制重写任何方法 类方法: public class MyMultiActionController extends MultiActionController { public ModelAndView doOne(HttpServ...
  • weixin_36024609
  • weixin_36024609
  • 2017-08-16 14:32
  • 78

struts2拦截器 获得请求方法名+获得请求参数

SSI框架为基础开发的,hulian平台 struts2拦截器里如何知道你请求的是那个方法 使用:invocation.getInvocationContext().getName(); //输出Priv_queryPriv,这正是我访问的Action中的方法。  ...
  • hejianguang17
  • hejianguang17
  • 2014-12-25 14:34
  • 1063

静态普通方法名匹配切面

public class Seller { public void greetTo(String name) { System.out.println("seller greet to "+name+"..."); } }public class Wa...
  • mazhimazh
  • mazhimazh
  • 2014-08-14 08:12
  • 640

struts2拦截器 获得请求方法名和请求参数

SSI框架为基础开发的,hulian平台 struts2拦截器里如何知道你请求的是那个方法 使用:invocation.getInvocationContext().getName(); //输出Priv_queryPriv,这正是我访问的Action中的方法。  ...
  • johennes
  • johennes
  • 2013-11-22 17:03
  • 6235

Java/Android合法完整类名正则表达式

一个合法完整类名由“一个合法包名”+“.”+“一个合法Java类名”构成。
  • aliankg
  • aliankg
  • 2017-08-23 10:20
  • 428

js 正则的简单使用

转载地址   https://www.liaoxuefeng.com/wiki/001434446689867b27157e896e74d51a89c25cc8b43bdb3000/001434499503920bb7b42ff6627420da2ceae4babf6c4f200...
  • cominglately
  • cominglately
  • 2017-09-27 11:38
  • 194

重载方法匹配算法

Java overload resolution 泛读资料
  • yqj2065
  • yqj2065
  • 2014-10-02 01:02
  • 1619

springboot 中使用 AOP 打印 类名、方法名、方法参数名称和方法参数值

package com.eparty.ccp.order.aop; import com.joindata.inf.common.util.log.Logger; import org.apache.commons.lang3.ArrayUtils; import org.aspectj.lang...
  • qq_32719003
  • qq_32719003
  • 2017-05-08 11:18
  • 2538
    个人资料
    • 访问:18695次
    • 积分:517
    • 等级:
    • 排名:千里之外
    • 原创:32篇
    • 转载:7篇
    • 译文:0篇
    • 评论:0条
    文章分类