美文网首页
spring-mvc-4-视图

spring-mvc-4-视图

作者: liangxifeng833 | 来源:发表于2018-01-22 20:25 被阅读23次

    SpringMVC如何解析视图

    Paste_Image.png Paste_Image.png Paste_Image.png

    常用的视图实现类

    Paste_Image.png

    视图解析器的作用

    Paste_Image.png

    常用的视图解析器实现类

    Paste_Image.png Paste_Image.png Paste_Image.png

    不经过控制器,直接响应页面

    1.配置springmvc.xml配置文件

    <bean>
        <!-- 配置直接转发的页面,不需要经过控制器 -->
        <mvc:view-controller path="/newSuccess" view-name="success"/>
    </beans>
    

    2.直接在浏览器访问:http://localhost:8081/spring-mvc-helloworld/newSuccess,就可以直接访问静态success.jsp页面

    3.但是这样配置后,@RequestMapping()就会失效,所以如果配置mvc:view-controlle后想要@RequestMapping仍然起作用,应该加上

        <!-- 配置直接转发的页面,不需要经过控制器 -->
        <mvc:view-controller path="/newSuccess" view-name="success"/>
        <!-- 如果配置mvc:view-controlle后想要@RequestMapping仍然起作用, 在实际开发过程中通常都需配置 mvc:annotation-driven标签 -->
        <mvc:annotation-driven></mvc:annotation-driven>
    

    自定义视图

    1.首先自己实现一个View接口 HelloView.java

    package lxf.springmvc.views;
    import java.util.Date;
    import java.util.Map;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import org.springframework.stereotype.Component;
    import org.springframework.web.servlet.View;
    /**
     * 自定义视图
     * @author lxf
     */
    @Component
    public class HelloView  implements View{
        /**
         * 视图输出类型
         */
        @Override
        public String getContentType() {
            // TODO Auto-generated method stub
            return "text/html"  ;
        }
        /**
         * 渲染视图
         */
        @Override
        public void render(Map<String, ?> model, HttpServletRequest request, HttpServletResponse response)
                throws Exception {
            // TODO Auto-generated method stub
            response.getWriter().print("hello view , time " + new Date());   
        }
    }
    

    2.在 springmvc.xml中配置视图解析器并设置优先级

        <!-- 配置视图BeanNameViewResolver解析器:使用视图的名字来解析视图 -->
        <!-- 通过order属性来定义视图解析器的优先级,order值越小优先级越高 -->
        <bean  class="org.springframework.web.servlet.view.BeanNameViewResolver">
            <property name="order"  value="100"></property>
        </bean>
    

    3.修改SpringMVCTest控制器

    @RequestMapping("springmvc")
    @Controller
    public class SpringMVCTest {
        public static final String SUCCESS = "success";
        /**
         * 测试自定义视图
         */
        @RequestMapping("/testView")
        public String testView(){
            return "helloView";
        }
    }
    

    4.访问测试:http://localhost:8081/spring-mvc-helloworld/springmvc/testView
    页面输出:hello view , time Wed Aug 09 19:12:55 CST 2017

    关于重定向

    Paste_Image.png

    1.修改 SpringMVCTest 控制器

        /**
         *  测试重定向
         */
        @RequestMapping(value="testRedirect")
        public String testRedirect()
        {
            System.out.println("testRedirect");
            //重定向
            return "redirect:/index.jsp";
            //内部转发
            //return "forward:/index.jsp";
        }
    

    2.访问:http://localhost:8081/spring-mvc-helloworld/springmvc/testRedirect会跳转到 index.jsp 页面;

    点击查看演示代码

    相关文章

      网友评论

          本文标题:spring-mvc-4-视图

          本文链接:https://www.haomeiwen.com/subject/jneqrxtx.html