public class MyController extends MultiActionController {

    // 新增 方法修饰符要是public
public ModelAndView add(HttpServletRequest request,
HttpServletResponse response) throws Exception {
return new ModelAndView("/WEB-INF/jsp/success.jsp", "result", "add()");
} // 修改
public ModelAndView update(HttpServletRequest request,
HttpServletResponse response) throws Exception {
return new ModelAndView("/WEB-INF/jsp/success.jsp", "result",
"update()");
} }

创建对应的controller

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"> <!-- 配置一个处理器映射器 -->
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="urlMap">
<map>
<!--
因为我们的controller继承了MultiActionController,
在MultiActionController有个
/** Delegate that knows how to determine method names from incoming requests */
private MethodNameResolver methodNameResolver = new InternalPathMethodNameResolver();
根据我们的请求中参数找到对应方法 的解析器
*:代表的就是我们的请求参数 也是对应的方法名
-->
<entry key="/user/*" value="myController"/>
</map>
</property>
</bean> <!-- 处理器 -->
<bean id="myController" class="cn.bdqn.controller.MyController">
<property name="methodNameResolver" ref="myResolver"></property>
</bean>
</beans>

mvc核心xml文件的配置

使用我们自身设置的解析器 来执行,不需要改变controller中的代码!只需要更改mvc核心xml文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"> <!-- 配置一个处理器映射器 -->
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="urlMap">
<map>
<!--
因为我们的controller继承了MultiActionController,
在MultiActionController有个
/** Delegate that knows how to determine method names from incoming requests */
private MethodNameResolver methodNameResolver = new InternalPathMethodNameResolver();
根据我们的请求中参数找到对应方法 的解析器
*:代表的就是我们的请求参数 也是对应的方法名
-->
<entry key="/user/*" value="myController"/>
</map>
</property>
</bean> <!-- 设置解析器 -->
<bean id="myResolver" class="org.springframework.web.servlet.mvc.multiaction.PropertiesMethodNameResolver">
<property name="mappings">
<props>
<!--
底层代码
Set explicit URL to method name mappings through a Properties object.
@param mappings Properties with URL as key and method name as value
public void setMappings(Properties mappings) {
this.mappings = mappings;
}
-->
<prop key="/user/adds">add</prop>
<prop key="/user/updates">update</prop>
</props>
</property>
</bean> <!-- 处理器 -->
<bean id="myController" class="cn.bdqn.controller.MyController">
<!--需要更改父类的解析器引用 变成我们自已定义的解析器 -->
<property name="methodNameResolver" ref="myResolver"/>
</bean> </beans>

mvc核心xml文件的设置

一旦我们设置了解析器,那么默认的

会执行我们设置的解析器

PropertiesMethodNameResolver

在浏览器中输入对应的url即可看到效果!

视图解析器

/**

01 .内部资源视图

public class MyController extends AbstractController {

    @Override
protected ModelAndView handleRequestInternal(HttpServletRequest request,
HttpServletResponse response) throws Exception {
// success 就是我们说的 逻辑试图名称
return new ModelAndView("success", "result", "add()");
} } <?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"> <!-- 处理器 -->
<bean name="/myController" class="cn.bdqn.controller.MyController"/> <!-- 使用我们默认的试图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- InternalResourceViewResolver 没有给前缀和后缀赋值 需要我们手动的赋值-->
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/> </bean>
</beans> 02. 内部资源视图 public class MyController extends AbstractController { @Override
protected ModelAndView handleRequestInternal(HttpServletRequest request,
HttpServletResponse response) throws Exception {
// success 就是我们说的 逻辑试图名称
return new ModelAndView("myView", "result", "jstlView");
} } <?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"> <!-- 处理器 -->
<bean name="/myController" class="cn.bdqn.controller.MyController"/> <!--内部资源视图 -->
<bean id="myView" class="org.springframework.web.servlet.view.JstlView">
<property name="url" value="/WEB-INF/jsp/success.jsp"/>
<!-- <property name="url" value="http://www.jd.com"/> 不能跳转到外部的资源路径-->
</bean> <!-- 配置视图解析器 -->
<bean class="org.springframework.web.servlet.view.BeanNameViewResolver"/> </beans> 03.外部资源视图 public class MyController extends AbstractController { @Override
protected ModelAndView handleRequestInternal(HttpServletRequest request,
HttpServletResponse response) throws Exception {
// success 就是我们说的 逻辑试图名称
return new ModelAndView("jd");
} } <?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"> <!-- 处理器 -->
<bean name="/myController" class="cn.bdqn.controller.MyController"/> <!--外部资源视图 -->
<bean id="jd" class="org.springframework.web.servlet.view.RedirectView">
<property name="url" value="http://www.jd.com"/>
</bean> <!-- 配置视图解析器 -->
<bean class="org.springframework.web.servlet.view.BeanNameViewResolver"/> </beans> */

部分代码

访问外部资源

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head> <body> <%-- 这里的参数要和 配置文件中ParameterMethodNameResolver的paramName属性的value值相对应--%> <a href="myController?action=taobao">淘宝</a>
<a href="myController?action=jd">京东</a>
<a href="myController?action=baidu">百度</a> </body>
</html>

在webroot下创建index.jsp

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"> <!-- 参数名称 映射成 方法名称 -->
<bean id="parameter" class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver"/> <!-- 处理器 -->
<bean name="/myController" class="cn.bdqn.controller.MyController">
<property name="methodNameResolver" ref="parameter"/>
</bean> <!-- 配置视图解析器 解析xml文件 -->
<bean class="org.springframework.web.servlet.view.XmlViewResolver">
<property name="location" value="classpath:MyViews.xml"/>
</bean> </beans>

springmvc-servlet.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"> <!--外部资源视图 -->
<bean id="jd" class="org.springframework.web.servlet.view.RedirectView">
<property name="url" value="http://www.jd.com"/>
</bean>
<!--外部资源视图 -->
<bean id="taobao" class="org.springframework.web.servlet.view.RedirectView">
<property name="url" value="http://www.taobao.com"/>
</bean>
<!--外部资源视图 -->
<bean id="baidu" class="org.springframework.web.servlet.view.RedirectView">
<property name="url" value="http://www.baidu.com"/>
</bean> </beans>

MyViews.xml文件

public class MyController extends MultiActionController {

    // 淘宝主页
public ModelAndView taobao(HttpServletRequest request,
HttpServletResponse response) throws Exception {
// success 就是我们说的 逻辑试图名称
return new ModelAndView("taobao");
} // 京东主页
public ModelAndView jd(HttpServletRequest request,
HttpServletResponse response) throws Exception {
// success 就是我们说的 逻辑试图名称
return new ModelAndView("jd");
} // 百度主页
public ModelAndView baidu(HttpServletRequest request,
HttpServletResponse response) throws Exception {
// success 就是我们说的 逻辑试图名称
return new ModelAndView("baidu");
} }

MyController代码

======================使用properties文件管理视图===========================

前台的页面还是使用的上面例子中的index.jsp

jd.(class)=org.springframework.web.servlet.view.RedirectView
jd.url=http://www.taobao.com taobao.(class)=org.springframework.web.servlet.view.RedirectView
taobao.url=http://www.taobao.com baidu.(class)=org.springframework.web.servlet.view.RedirectView
baidu.url=http://www.baidu.com

创建对应的properties文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"> <!-- 参数名称 映射成 方法名称 -->
<bean id="parameter" class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver"/> <!-- 处理器 -->
<bean name="/myController" class="cn.bdqn.controller.MyController">
<property name="methodNameResolver" ref="parameter"/>
</bean> <!-- 配置视图解析器 解析properties文件 -->
<bean class="org.springframework.web.servlet.view.ResourceBundleViewResolver">
<!--找到我们指定的properties文件 value就是代表的文件的名称 不需要加后缀名 -->
<property name="basename" value="myViews"/>
</bean> </beans>

配置文件xml文件的内容

=====================xml文件中同时存在多个视图解析器的执行顺序======================

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"> <!-- 参数名称 映射成 方法名称 -->
<bean id="parameter" class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver"/> <!-- 处理器 -->
<bean name="/myController" class="cn.bdqn.controller.MyController">
<property name="methodNameResolver" ref="parameter"/>
</bean> <!-- 如果是定义了多个 视图解析器 默认是按照在xml文件中的配置顺序 执行的
如果不想使用默认的执行顺序 可以增加属性 order 设置一个正整数
数值越小 优先级越高
--> <!-- 解析xml文件 -->
<bean class="org.springframework.web.servlet.view.XmlViewResolver">
<property name="location" value="classpath:MyViews.xml"/>
<property name="order" value="3"/>
</bean> <!-- 配置视图解析器 解析properties文件 -->
<bean class="org.springframework.web.servlet.view.ResourceBundleViewResolver">
<!--找到我们指定的properties文件 value就是代表的文件的名称 不需要加后缀名 -->
<property name="basename" value="myViews"/>
<property name="order" value="2"/>
</bean> </beans>

修改后的xml文件

SpringMVC04controller中定义多个方法的更多相关文章

  1. error LNK2005: “找到一个或多个多重定义的符号” 已经在 xxxx.obj 中定义 的解决方法

    1 问题还原 这里我有三个源文件:Base.hpp, Base.cpp 和 main.cpp 在Base.hpp里面定义一个基类,注意,基类只包含构造函数和析构函数的声明,函数在Base.cpp里实现 ...

  2. JS中定义类的方法

    JS中定义类的方式有很多种: 1.工厂方式    function Car(){     var ocar = new Object;     ocar.color = "blue" ...

  3. JS中定义类的方法<转>

    转载地址:http://blog.csdn.net/sdlfx/article/details/1842218 PS(个人理解): 1) 类通过prototype定义的成员(方法或属性),是每个类对象 ...

  4. 面试官:spring中定义bean的方法有哪些?我一口气说出了12种,把面试官整懵了。

    前言 在庞大的java体系中,spring有着举足轻重的地位,它给每位开发者带来了极大的便利和惊喜.我们都知道spring是创建和管理bean的工厂,它提供了多种定义bean的方式,能够满足我们日常工 ...

  5. 【Spring Framework】12种spring中定义bean的方法

    前言 在庞大的java体系中,spring有着举足轻重的地位,它给每位开发者带来了极大的便利和惊喜.我们都知道spring是创建和管理bean的工厂,它提供了多种定义bean的方式,能够满足我们日常工 ...

  6. Js中的假值_ES5中定义的ToBoolean方法强制类型转换后值为false

    你不知道的Javascript(中)--ToBoolean javascript中的值可以分为以下两类: 1.可以被强制类型转换为false的值 2.其他(被强制类型转换为true的值) 假值---以 ...

  7. Android中定义接口的方法

    1.接口方法用于回调(这里定义接口是为了使用其接口方法): public interface ICallback { public void func(); } public class Caller ...

  8. SpringMVC03controller中定义多个方法

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"% ...

  9. php中定义数组的方法

    1.PHP定义数组的格式 数组名=array(); 如:$aa=array();//这样就定义了一个数组, 之后给元素赋值: $aa[0]="9016"; $aa[1]=" ...

随机推荐

  1. 多个显示器, window.open的定位

    // Pops a window relative to the current window position function popup(url, winName, xOffset, yOffs ...

  2. underscorejs-filter学习

    2.6 filter 2.6.1 语法: _.filter(list, predicate, [context]) 2.6.2 说明: 对list集合的每个成员依次进行匹配(根据predicate迭代 ...

  3. Jquery学习笔记1-jquery总体代码框架

    第一次在博客中记录自己的笔记,希望能坚持下去吧,加油! 今天学习的是Jquery的源代码,官网上下载,然后使用DW(dream waver)编辑器打开Js(下载的是未压缩版),版本是2.0.3.第一次 ...

  4. 织梦安装过后出现"...www/include/templets/default/index.htm Not Found!"

    在织梦网站搬家之后再整站更新,往往会遇到访问首页的时候出现www/include/templets/default/index.htm Not Found!,这个问题我遇到过两次,都是这样解决的: 进 ...

  5. javescript扩展方法

    <script type="text/javascript"> //扩展方法 '原型'->'prototype' //通过类对像的prototype设置扩展方法 ...

  6. javascript Array类型 方法大全

    1,创建数组 //第一种是使用Array构造函数 var colors = new Array(); var colors = new Array(20); //创建length为20的数组 var ...

  7. php字符串常见面试题

    >> 本文固定链接: http://php.ncong.com/mianshi/mianshiti_string.html >> 转载请注明: 恩聪php 2014年09月02 ...

  8. [Python笔记]第五篇:递归

    本篇主要内容:递归以及冒泡排序 参考文章:(http://www.cnblogs.com/balian/archive/2011/02/11/1951054.html) 递归的概念 递归的概念很简单, ...

  9. dict两种遍历方法

    采用for...in...遍历: >>> for i in dd: ... print("%s:%s"%(i,dd[i])) ... :chen :hang :w ...

  10. PHP之路——微信公众号授权获取用户信息

    官方文档链接:http://mp.weixin.qq.com/wiki/4/9ac2e7b1f1d22e9e57260f6553822520.html /** * 获取code */ public f ...