SpringMVC04controller中定义多个方法
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中定义多个方法的更多相关文章
- error LNK2005: “找到一个或多个多重定义的符号” 已经在 xxxx.obj 中定义 的解决方法
1 问题还原 这里我有三个源文件:Base.hpp, Base.cpp 和 main.cpp 在Base.hpp里面定义一个基类,注意,基类只包含构造函数和析构函数的声明,函数在Base.cpp里实现 ...
- JS中定义类的方法
JS中定义类的方式有很多种: 1.工厂方式 function Car(){ var ocar = new Object; ocar.color = "blue" ...
- JS中定义类的方法<转>
转载地址:http://blog.csdn.net/sdlfx/article/details/1842218 PS(个人理解): 1) 类通过prototype定义的成员(方法或属性),是每个类对象 ...
- 面试官:spring中定义bean的方法有哪些?我一口气说出了12种,把面试官整懵了。
前言 在庞大的java体系中,spring有着举足轻重的地位,它给每位开发者带来了极大的便利和惊喜.我们都知道spring是创建和管理bean的工厂,它提供了多种定义bean的方式,能够满足我们日常工 ...
- 【Spring Framework】12种spring中定义bean的方法
前言 在庞大的java体系中,spring有着举足轻重的地位,它给每位开发者带来了极大的便利和惊喜.我们都知道spring是创建和管理bean的工厂,它提供了多种定义bean的方式,能够满足我们日常工 ...
- Js中的假值_ES5中定义的ToBoolean方法强制类型转换后值为false
你不知道的Javascript(中)--ToBoolean javascript中的值可以分为以下两类: 1.可以被强制类型转换为false的值 2.其他(被强制类型转换为true的值) 假值---以 ...
- Android中定义接口的方法
1.接口方法用于回调(这里定义接口是为了使用其接口方法): public interface ICallback { public void func(); } public class Caller ...
- SpringMVC03controller中定义多个方法
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"% ...
- php中定义数组的方法
1.PHP定义数组的格式 数组名=array(); 如:$aa=array();//这样就定义了一个数组, 之后给元素赋值: $aa[0]="9016"; $aa[1]=" ...
随机推荐
- 【USACO 1.2.3】命名那个数字
[问题描述] 在威斯康辛州牛大农场经营者之中,都习惯于请会计部门用连续数字给母牛打上烙印.但是,母牛用手机时并没感到这个系统的便利,它们更喜欢用它们喜欢的名字来呼叫它们的同伴,而不是用像这个的语句&q ...
- ubuntu系统mysql.h no such file or directory
在Ubuntu系统中,你已经安装了mysql,即你使用sudo apt-get install mysql-server mysql-client然而使用C语言访问mysql数据库时,却发现出现了如下 ...
- 简洁的MysqlHelper
把MySqlXXX的类更改为SqlXXX就可以成为sqlHelper. 另外C#也提供了MysqlHelper和sqlHelper,用起来也挺方便的. public class MySqlHelper ...
- winform批量查询单号剔除重复
//查询分单函数 private string GetQueryInSubbillNo() { string strSubbillNO = " ...
- C++学习笔记6——类的多态
简介: 同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果.在运行时,可以通过指向基类的指针,来调用实现派生类中的方法. 虚函数: 在某基类中声明为virtual并在一个或多个派生类中被重 ...
- 转:开源项目学习方法ABC
文章来自于 http://yizhaolingyan.net/?p=123#comment-207 学习各种开源项目,已经成为很多朋友不可回避的工作内容了.笔者本人也是如此.在接触并学习了若干个开源项 ...
- 疯狂java实战演义 弹球游戏代码
package org.crazyit.ball; import java.awt.Image; import java.io.File; import javax.imageio.ImageIO; ...
- iso18092-2004中ISO14443,Felica的关系
ISO18092协议介绍了P2P通讯中的ACTIVE模式和PASSIVE通讯模式,其实ISO18092使用了ISO14443协议和非国际标准的FELICA通讯协议,这里总结了一下.
- 可重入与线程安全(Reentrancy and Thread-Safety)
http://blog.csdn.net/zzwdkxx/article/details/49338067 http://blog.csdn.net/zzwdkxx/article/details/4 ...
- BZOJ1264: [AHOI2006]基因匹配Match
1264: [AHOI2006]基因匹配Match Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 541 Solved: 347[Submit][S ...