• SSM-SpringMVC-12:SpringMVC中BeanNameViewResolver这种视图解析器


     ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥-------------

    视图解析器,这个很熟悉啊,之间就用过,就是可以简写/和.jsp的InternalResourceViewResolver

    我这次书写的BeanNameViewResolver就是另外一种视图解析器,他有优点,也有缺点,优点可以访问项目外部的网页,并且灵活性很好,缺点有,最后写完案例你就明白了

    要说的有处理器中的方法

    package cn.dawn.day08ViewResolver;
    
    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 Dawn on 2018/3/23.
     */
    public class MyViewController extends MultiActionController{
    
        /*外部视图解析器*/
        public String doFirst(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
    
            /*方法返回值String也可以*/
            /*此处的就是具体的视图bean的id*/
            return "OuterViewObject";
        }
    
        /*内部视图解析器*/
        public String doSecond(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
    
            /*此处的就是具体的视图bean的id*/
            return "jstlViewObject";
        }
    }

    再来是自己的xml文件,他需要配三个块,一是我说的BeanNameViewResolver这个视图解析器,还有就是俩个视图,我做了一个外部一个内部的demo

    <?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处理器-->
        <bean id="myViewController" class="cn.dawn.day08ViewResolver.MyViewController">
            <property name="methodNameResolver" ref="parameterMethodNameResolver"></property>
        </bean>
        <!--视图解析器-->
        <bean class="org.springframework.web.servlet.view.BeanNameViewResolver"></bean>
        <!--外部视图-->
        <bean id="OuterViewObject" class="org.springframework.web.servlet.view.RedirectView">
            <!--可以访问不在自己项目中的网页-->
            <property name="url" value="https://www.jd.com"></property>
        </bean>
    
        <!--内部视图-->
        <bean id="jstlViewObject" class="org.springframework.web.servlet.view.JstlView">
            <property name="url" value="/second.jsp"></property>
        </bean>
    
        <!--参数方法名称解析器-->
        <bean id="parameterMethodNameResolver" class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">
            <property name="paramName" value="actionName"></property>
        </bean>
    
        <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
            <!--第一种方式-->
            <property name="urlMap">
                <map>
                    <entry key="/doFirst">
                        <value>myViewController</value>
                    </entry>
                </map>
            </property>
        </bean>
    
    </beans>

    此处要说的点有俩个:

    问题一:我xml中的BeanNameViewResolver视图解析器里面什么值都没有,为什么配,有意义吗?

    答案:

     看到这张图了吧,虽说视图解析器有默认值,但是不是BeanNameViewResolver,要想使用就必须自己配置一道,可以说就近原则,也可以说进行改值,反正这块的视图解析器就变为了BeanNameViewResolver

    问题二:你刚才说的缺点呢?我没看出来

    答案:每使用一道视图,就得手工配置一道,麻烦啊,最重要的一点,如果视图多了,你这个核心的xml配置文件还怎么看?又乱又长。。。。

    所以针对后面这个缺点,进行了优化,需要用到XmlViewResolver这个家伙,准备看下一篇博客吧,小伙子

  • 相关阅读:
    八大排序
    如何在VirtualBox虚拟机软件上安装Win7虚拟系统
    Android 的网络编程
    Android设计模式-观察者模式
    java开发之——[接口回调]
    MVC,MVP设计模式
    [Android四大组件之二]——Service
    [Android四大组件之一]——Activity
    Android中Context详解
    [ Android 五种数据存储方式之四 ] —— ContentProvider存储数据
  • 原文地址:https://www.cnblogs.com/DawnCHENXI/p/8641060.html
Copyright © 2020-2023  润新知