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()"); 
    } 
 
}
SpringMVC04controller中定义多个方法详解编程语言

 1 public class MyController extends MultiActionController { 
 2  
 3     // 新增 方法修饰符要是public 
 4     public ModelAndView add(HttpServletRequest request, 
 5             HttpServletResponse response) throws Exception { 
 6         return new ModelAndView("/WEB-INF/jsp/success.jsp", "result", "add()"); 
 7     } 
 8  
 9     // 修改 
10     public ModelAndView update(HttpServletRequest request, 
11             HttpServletResponse response) throws Exception { 
12         return new ModelAndView("/WEB-INF/jsp/success.jsp", "result", 
13                 "update()"); 
14     } 
15  
16 }

创建对应的controller

 

SpringMVC04controller中定义多个方法详解编程语言
SpringMVC04controller中定义多个方法详解编程语言

复制代码
<?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文件

SpringMVC04controller中定义多个方法详解编程语言
SpringMVC04controller中定义多个方法详解编程语言

复制代码
<?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文件的设置

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

SpringMVC04controller中定义多个方法详解编程语言

SpringMVC04controller中定义多个方法详解编程语言

 

会执行我们设置的解析器

PropertiesMethodNameResolver

SpringMVC04controller中定义多个方法详解编程语言

 

 

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

 

视图解析器

SpringMVC04controller中定义多个方法详解编程语言
SpringMVC04controller中定义多个方法详解编程语言

复制代码
/** 
 
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> 
 
 
*/
复制代码

部分代码

 

访问外部资源

SpringMVC04controller中定义多个方法详解编程语言
SpringMVC04controller中定义多个方法详解编程语言

复制代码
<%@ 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

SpringMVC04controller中定义多个方法详解编程语言
SpringMVC04controller中定义多个方法详解编程语言

复制代码
<?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文件

SpringMVC04controller中定义多个方法详解编程语言
SpringMVC04controller中定义多个方法详解编程语言

复制代码
<?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文件

SpringMVC04controller中定义多个方法详解编程语言
SpringMVC04controller中定义多个方法详解编程语言

复制代码
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

SpringMVC04controller中定义多个方法详解编程语言
SpringMVC04controller中定义多个方法详解编程语言

复制代码
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文件

SpringMVC04controller中定义多个方法详解编程语言
SpringMVC04controller中定义多个方法详解编程语言

复制代码
<?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文件中同时存在多个视图解析器的执行顺序======================

SpringMVC04controller中定义多个方法详解编程语言
SpringMVC04controller中定义多个方法详解编程语言

复制代码
<?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>

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/12166.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论