SpringMVC学习之控制器—MultiActionController

来源:互联网 发布:js导出excel兼容ie 编辑:程序博客网 时间:2024/05/18 01:42

MultiActionController这个控制器将多个请求处理方法合并在一个控制器里,这样可以把相关的功能组合在一起。

通过配置MethodNameResolver进行方法名的调用,

缺省的方法名解析器是InternalPathMethodNameResolver,根据url进行方法的划分。需要匹配<prop key="/hello/*.action">multiController</prop>

hello/index.action——index方法调用;

hello/onSubmit.action——onSubmit方法调用。

下面看一个简单的例子:

springmvc配置文件如下:

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"        xmlns:context="http://www.springframework.org/schema/context"        xmlns:mvc="http://www.springframework.org/schema/mvc"        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">        <!-- 简单url的映射处理器 -->        <bean id="simpleUrlHandlerMapping"                class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">                <property name="mappings">                        <props>                                <prop key="/hello/*.action">multiController</prop>                        </props>                </property>                <!-- 设置优先级,值越小,优先级越高 -->                <property name="order" value="0" />        </bean>                <!-- MethodNameResolver -->        <bean id="defaultResolver"                class="org.springframework.web.servlet.mvc.multiaction.InternalPathMethodNameResolver"></bean>        <bean id="multiController" class="com.springmvc.controllers.MultiController">                <property name="MethodNameResolver" ref="defaultResolver"></property>        </bean>                <!-- 视图解析器 -->        <bean id="jspViewResolver"                class="org.springframework.web.servlet.view.InternalResourceViewResolver">                <!-- 前缀 -->                <property name="prefix" value="/WEB-INF/jsp/" />                <!-- 后缀 -->                <property name="suffix" value=".jsp" />        </bean></beans>

对应multiController的控制器代码如下:

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 MultiController extends MultiActionController {public ModelAndView index(HttpServletRequest request,HttpServletResponse response) {System.out.println("**********index***********");return new ModelAndView("index");}public ModelAndView multi(HttpServletRequest request,HttpServletResponse response) {System.out.println("**********multi***********");String name = request.getParameter("name");int age = Integer.parseInt(request.getParameter("age"));System.out.println("name:"+name+"&age:"+age);ModelAndView mav = new ModelAndView();mav.setViewName("multi");mav.addObject("name",name);mav.addObject("age",age);return mav;}}

前端jsp页面:

访问工程时,欢迎页面进行一个转发:

<%response.sendRedirect("/hello/index.action"); %>

这个转发会执行MultiController控制器里的index方法,返回/WEB-INF/jsp/目录下的index.jsp页面,这个页面如下:

------------------MultiController------------------------<form action="multi.action" method="post">username:<input  name="name"/><br>age:<input name="age"/><br><input type="submit" value="提交" /></form>

提交表单后,执行MultiController控制器里的multi方法,返回/WEB-INF/jsp/目录下的multi.jsp页面:

<h1>user:${name }</h1><h1>age:${age }</h1>


点击提交后,执行multi方法,返回前端页面:


阅读全文
0 0
原创粉丝点击