zoukankan      html  css  js  c++  java
  • 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文件
  • 相关阅读:
    Visual SVN1.5以上版本下载及破解过程
    C#线程系列讲座(2):Thread类的应用
    a标签的href 和onclick
    Windows 服务快捷启动命令
    iframe 跨域自动适应高度
    修正认知:string、Empty和null三者的正确区别

    线索二叉树
    最大连续子序列
    寻找最近点对
  • 原文地址:https://www.cnblogs.com/999-/p/6124946.html
Copyright © 2011-2022 走看看