• SpringMVC (五)视图解析器


    SpringMVC中的视图解析器默认的是InternalResourceViewResolver类,在第一次写springmvc的案例的时候就是使用的这种

    现在说一下两种配置方式

    首先是 BeanNameViewResolver

    这种配置方式就不需要原来的配置了,直接删掉原来的就可以了

    首先springmvc.xml中要配置,其他的不变

    <!--视图解析器BeanNameViewResolver-->
        <bean id="viewResolver" class="org.springframework.web.servlet.view.BeanNameViewResolver"></bean>
    <!--外部试图对象-->
    <bean id="outViewObject" class="org.springframework.web.servlet.view.RedirectView">
    <property name="url" value="https://www.jd.com"></property>
    </bean>
    <!--内部视图解析器-->
    <bean id="innerViewObject" class="org.springframework.web.servlet.view.JstlView">
    <property name="url" value="/second.jsp"></property>
    </bean>

    在后台的类的方法中

    package demo06ViewResolver;
    
    import org.springframework.web.servlet.ModelAndView;
    import org.springframework.web.servlet.mvc.multiaction.MultiActionController;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    /**
     * Created by mycom on 2018/3/18.
     */
    public class MyViewResolver extends MultiActionController {
        //外部引用对象
        public String doFirst(HttpServletRequest request, HttpServletResponse response){
            return "outViewObject";
        }
    
        public String doSecond(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
            return "innerViewObject";
        }
    }

    我们也可以将配置文件中外部对象和内部对象放到另一个配置文件中,比如:myView.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           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.xsd">
    
    
        <!--外部试图对象-->
        <bean id="outViewObject" class="org.springframework.web.servlet.view.RedirectView">
            <property name="url" value="https://www.jd.com"></property>
        </bean>
        <!--内部视图解析器-->
        <bean id="innerViewObject" class="org.springframework.web.servlet.view.JstlView">
            <property name="url" value="/second.jsp"></property>
        </bean>
    </beans>

    那么在原来的配置文件中写什么呢,我把整个配置文件弄过来,我标记的就是需要改动的

    <?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: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.xsd">
    
        <!--注册处理器-->
        <bean id="myMultiActionController" class="demo06ViewResolver.MyViewResolver" >
            <property name="methodNameResolver" ref="methodNameResolver"></property>
        </bean>
        <!--视图解析器BeanNameViewResolver-->
        <bean id="viewResolver" class="org.springframework.web.servlet.view.BeanNameViewResolver"></bean>
    
        <!--XmlViewResolver-->
        <bean class="org.springframework.web.servlet.view.XmlViewResolver">
            <property name="location" value="classpath:myView.xml" ></property>
        </bean>
    
    
        <!--参数方法名称解析器-->
        <!--<bean id="parameterMethodNameResolver" class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">
            <property name="paramName" value="actionName"></property>
        </bean>-->
    
        <!--属性方法名称解析器-->
        <bean id="methodNameResolver" class="org.springframework.web.servlet.mvc.multiaction.PropertiesMethodNameResolver">
            <property name="mappings">
                <props>
                    <prop key="/first">doFirst</prop>
                    <prop key="/second">doSecond</prop>
                </props>
            </property>
        </bean>
    
        <!--处理器映射器-->
        <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
            <!--方式一-->
            <property name="mappings">
                <props>
                    <prop key="/*">myMultiActionController</prop>
                </props>
            </property>
        </bean>
    
    </beans>
  • 相关阅读:
    laytpl模板——怎么使用ajax与数据交互
    项目中遇到的几个日期转换的场景
    input可以自动换行吗???
    EL表达式 if 和 if else语句的写法
    小程序开发之背景图片的设置
    主流浏览器内核
    HTTP状态码
    (四)js数组方法一
    (效果二)js实现两个变量值的交换
    (十八)js控制台方法
  • 原文地址:https://www.cnblogs.com/my-123/p/8644369.html
Copyright © 2020-2023  润新知