通过url参数访问Handler

本文介绍了如何使用SpringMVC的MultiActionController实现基于不同参数调用不同方法的控制器。通过配置参数解析器和处理器映射器,可以灵活地根据请求参数选择执行的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

介绍

通过指定参数值,就能够指定方法。
该方式一般让类继承MultiActionController来实现Handler。

如:

http://localhost:8080/SpringMVC/adminManager.action?ref=showTime,制定了执行showTime方法。

实践

开发Handler:

public class ItemMultiContorller extends MultiActionController{
    /*
     * 这里面的请求方法书写规范:
     * 1.只有两个参数,第一个为HttpServletRequest,第二个为HttpServletResponse。有顺序要求!!!
     * 2.返回值没有要求,可以为空,也可以返回ModelAndView。
     * 3.方法名不能为handleRequest
     * 4.请求url根据方法名请求!!!
     */

    public void showTime(HttpServletRequest request,HttpServletResponse response){
        System.out.println(new SimpleDateFormat("yyyy-MM-dd-HH:mm:ss").format(new Date()));
    }

    public ModelAndView helloWorld(HttpServletRequest request,HttpServletResponse response){

        System.out.println("Hello 程序世界!!");

        return null;
    }
}

配置Handler,让Spring进行管理对象:

<bean id="itemMultiController0x" class="cn.domarvel.controller.ItemMultiContorller">
    <property name="methodNameResolver">
        <bean class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">
            <!-- 有两种配置方式:
                一:注入paramName的参数,只能注入一个特定的参数名,通过参数名来获取方法值,来执行方法。默认为action参数名
                二:配置methodParamNames,能注入多个参数名作为方法进行访问。
                不懂上面这段话直接看效果。
                通过参数名获取方法序优先级为:methodParamNames > paramName
             -->
             <property name="paramName" value="ref"/>
        </bean>
    </property>
</bean>

配置处理器映射器:

<!-- ##################################配置处理器映射器##################################### -->

<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
    <property name="mappings">
        <props>
            <prop key="adminManager.action">itemMultiController0x</prop>
        </props>
    </property>
</bean>

<!-- ################################################################################## -->

我的当前项目名为,SpringMVC所以,我的访问路径为:

http://localhost:8080/SpringMVC/adminManager.action?ref=showTime
http://localhost:8080/SpringMVC/adminManager.action?ref=helloWorld

第二种配置代码演示:

修改Handler输出:

public class ItemMultiContorller extends MultiActionController{
    /*
     * 这里面的请求方法书写规范:
     * 1.只有两个参数,第一个为HttpServletRequest,第二个为HttpServletResponse。有顺序要求!!!
     * 2.返回值没有要求,可以为空,也可以返回ModelAndView。
     * 3.方法名不能为handleRequest
     * 4.请求url根据方法名请求!!!
     */

    public void showTime(HttpServletRequest request,HttpServletResponse response){
        System.out.println(new SimpleDateFormat("yyyy-MM-dd-HH:mm:ss").format(new Date()));
    }

    public ModelAndView helloWorld(HttpServletRequest request,HttpServletResponse response){

        System.out.println("|"+request.getParameter("helloWorld")+"|");//为空字符串,并不为null
        System.out.println("Hello 程序世界!!");

        return null;
    }
}

配置Handler让Spring进行管理:

<bean id="itemMultiController0x" class="cn.domarvel.controller.ItemMultiContorller">
    <property name="methodNameResolver">
        <bean class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">
            <!-- 有两种配置方式:
                一:注入paramName的参数,只能注入一个特定的参数名,通过参数名来获取方法值,来执行方法。默认为action参数名
                二:配置methodParamNames,能注入多个参数名作为方法进行访问。
                不懂上面这段话直接看效果。
                通过参数名获取方法序优先级为:methodParamNames > paramName
             -->
             <property name="methodParamNames">
                <array>
                    <value>showTime</value>
                    <value>helloWorld</value>
                </array>
             </property>
        </bean>
    </property>
</bean>

配置处理器映射器:

<!-- ##################################配置处理器映射器##################################### -->

<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
    <property name="mappings">
        <props>
            <prop key="adminManager.action">itemMultiController0x</prop>
        </props>
    </property>
</bean>

<!-- ################################################################################## -->

访问网址:

http://localhost:8080/SpringMVC/adminManager.action?helloWorld
http://localhost:8080/SpringMVC/adminManager.action?showTime

原理:

这里写图片描述

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值