SpringMVC4 学习笔记(五) 【处理器 继承类和方法名解析器】

处理器不但可以实现Controller和HttpRequestHandler接口,还能继承实现了对应接口的抽象类

常用的有两个

  • AbstractController (继承了WebContentGenerator类,实现了Controller接口)

 继承该类后需要复写handleRequestInternal方法。

 贴上AbstractController部分源码。      

 WebContentGenerator类有supportedMethods变量(设置允许的用户请求方式,POST or GET),可以在springmvc.xml中配置。value必须大写,默认为POST,GET

<bean id="/my.do" class="com.bjpowernode.handlers.MyController">
		<property name="supportedMethods" value="POST"/>
     </bean>

  • MultiActionController (继承了AbstractController类,实现了LastModified接口)

 主要特点可以自定义处理器方法(返回值要是ModelAndView)。

 

public class MyController extends MultiActionController {

	public ModelAndView doFirst(HttpServletRequest request,
			HttpServletResponse response) {
		ModelAndView mv = new ModelAndView();
		mv.addObject("message", "执行doFirst()方法");
		mv.setViewName("/WEB-INF/jsp/welcome.jsp");
		return mv;
	}
	
	public ModelAndView doSecond(HttpServletRequest request,
			HttpServletResponse response) {
		ModelAndView mv = new ModelAndView();
		mv.addObject("message", "执行doSecond()方法");
		mv.setViewName("/WEB-INF/jsp/welcome.jsp");
		return mv;
	}

     }
需要在springmvc.xml配置处理器映射器SimpleUrlHandlerMapping

<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
		<property name="urlMap">
			<map>
				<!-- MultiActionController类具有一个属性methodNameResolver,方法名解析器
				其具有默认值InternalPathMethodNameResolver,该解析器将方法名作为资源名称进行解析,
					那就意味着,我们提交请求时,要将方法名作为资源名称出现
				 -->
				<entry key="/my/*.do" value-ref="myController"/>
			</map>
		</property>
	</bean>

	<!-- 注册处理器 -->
	<bean id="myController" class="com.bjpowernode.handlers.MyController"/>

此时访问/my/doFirst.do执行的是doFirst()方法,访问/my/doSecond.do执行的是doSecond()方法

      以上使用的默认的方法名解析器InternalPathMethodNameResolver,当然,还能自行配置别的方法名解析器

可以使用的方法名解析器还有

   PropertiesMethodNameResolver(属性方法名解析器)【此时访问/my/first.do 执行的doFirst方法,/my/second.do则是doSecond方法】

      <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
        <property name="urlMap">
            <map>
                <entry key="/my/*.do" value-ref="myController"/>
            </map>
        </property>
    </bean>

    <!-- 注册方法名称解析器 -->
    <bean id="propertiesMethodNameResolver" class="org.springframework.web.servlet.mvc.multiaction.PropertiesMethodNameResolver">
        <property name="mappings">
            <props>
                <prop key="/my/first.do">doFirst</prop>
                <prop key="/my/second.do">doSecond</prop>
            </props>
        </property>
    </bean>
    
    <!-- 注册处理器 -->
    <bean id="myController" class="com.bjpowernode.handlers.MyController">
        <property name="methodNameResolver" ref="propertiesMethodNameResolver"/>
    </bean>
 
    ParameterMethdoNameResolver(参数方法名解析器)【此时访问/my.do?xxx=doFirst就可以只喜欢那个doFirst】
       <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
		<property name="urlMap">
			<map>
				<entry key="/my.do" value-ref="myController"/>
			</map>
		</property>
	</bean>

	<!-- 注册方法名称解析器 -->
	<bean id="parameterMethodNameResolver" class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">
		<!-- 若不指定paramName属性,则默认参数名称是action -->
		<property name="paramName" value="xxx"/>
	</bean>
	
	<!-- 注册处理器 -->
	<bean id="myController" class="com.bjpowernode.handlers.MyController">
		<property name="methodNameResolver" ref="parameterMethodNameResolver"/>
	</bean>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值