spring-mvc-4-视图

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 页面;

点击查看演示代码

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,120评论 19 139
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 47,151评论 6 342
  • 要加“m”说明是MB,否则就是KB了. -Xms:初始值 -Xmx:最大值 -Xmn:最小值 java -Xms8...
    dadong0505阅读 10,369评论 0 53
  • 我拒绝所有结束 就拒绝了开始 我拒绝所有悲伤 就拒绝了欢喜 我拒绝了整个世界 于是就拒绝了你 你不回话吗 隔山隔水...
    卖樱桃的老鱼阅读 1,801评论 3 3
  • 古时候有一户姓张的人家,这家有两兄弟,哥哥是泥水匠,专给人家垒灶台,弟弟是画师,每天在家读书绘画。 哥哥垒灶台的...
    尕尔玛吉的大西北阅读 4,576评论 0 0

友情链接更多精彩内容