自定义视图(SpringMVC)

一、首先理解视图的解析过程
1)请求处理方法执行完成后,最终返回一个 ModelAndView 对象。
ModelAndView 对象,它包含了逻辑名(访问URL)和模型对象(javaBean数据)的视图
2)视图解析器(ViewResolver)负责根据返回值(ModelAndView )作为页面地址得到视图对象。
即:将逻辑视图解析为一个具体的视图对象
常用的解析器:
InternalResourceViewResolver
3) 视图(view)的作用是渲染模型数据,将模型里的数据以某种形式呈现给客户。
常见的视图实现类:
二、自定义视图
ViewResolver和view都是两个接口,要实现返回值到视图的实现,必须得实现这两个接口
//多个视图解析器依次解析,如果某个解析成功就直接返回值;如果没有成功下一个解析器继续
for (ViewResolver viewResolver : this.viewResolvers) {
View view = viewResolver.resolveViewName(viewName, locale);
if (view != null) {
return view;
}
}
public class MyCustomViewResolver implements ViewResolver,Ordered {
//保存当前视图解析器的优先级
private int order = Integer.MAX_VALUE;
/**
* 将ModelAndView 中视图名解析成View对象返回
*/
@Override
public View resolveViewName(String ViewName, Locale arg1) throws Exception {
// TODO Auto-generated method stub
//如果ModelAndView的视图名字是以download:或sql:开头的,那么创建一个 MyCustomView()视图对象
if(ViewName.startsWith("download:")||ViewName.startsWith("sql:")){
//返回视图对象,该视图对象为自定义的
return new MyCustomView();
}
return null;
}
@Override
public int getOrder() {
// TODO Auto-generated method stub
return order;
}
public void setOrder(Integer order){
this.order = order;
}
}
public class MyCustomView implements View{
/**
* 返回内容类型
*/
@Override
public String getContentType() {
// TODO Auto-generated method stub
//相当于response.setContextType()
return "text/html;charset=utf-8";
}
/**
* 渲染<br/>
* Map<String, ?> model 隐含模型中的数据
*/
@Override
public void render(Map<String, ?> model, HttpServletRequest request, HttpServletResponse response) throws Exception {
// TODO Auto-generated method stub
System.out.println("这是我自定义的视图");
response.getWriter().write(UUID.randomUUID().toString());
}
}
<!-- 加载自定义的视图解析器 -->
<bean class="com.atguigu.customview.MyCustomViewResolver">
<property name="order" value="1"></property>
</bean>
<!--默认的视图解析器:对于forword; rdirect: 字符串等,生成一个重定向或者转发的视图对象 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/"></property>
<property name="suffix" value=".jsp"></property>
<!-- 设置优先级,数字越小,优先级越高 -->
<property name="order" value="2"></property>
</bean>
自定义视图(SpringMVC)的更多相关文章
- SpringMVC系列(九)自定义视图、重定向、转发
一.自定义视图 1. 自定义一个视图HelloView.java,使用@Component注解交给Spring IOC容器处理 package com.study.springmvc.views; i ...
- SpringMVC自定义视图Excel视图和PDF视图
SpringMVC自定义视图 Excel视图和PDF视图 SpringMVC杂记(十一) 使用Excel视图 Spring MVC 视图解析器(ViewResolver ) java实现导出excel ...
- SpringMvc配置自定义视图
1.在dispatcherServlet-servlet.xml配置自定义视图 <!-- 配置视图 BeanNameViewResolver 解析器: 使用视图的名字来解析视图 --> & ...
- SpringMVC:自定义视图及其执行过程
一:自定义视图 1.自定义一个实现View接口的类,添加@Component注解,将其放入SpringIOC容器 package com.zzj.view; import java.io.PrintW ...
- SpringMVC自定义视图 Excel视图和PDF视图
一.自定义视图-Excel视图 1.Maven依赖 引入POI <dependency> <groupId>org.apache.poi</groupId> < ...
- springmvc自定义视图
自定义视图 可以整合jfreechart.excel @RequestMapping("/testView") public String testView(){ System.o ...
- 基于BeanNameViewResolver解析器,自定义视图
概述 基于spring-mvc自定义视图,以BeanNameViewResolver作为解析器,以满足特殊需求. 本文以输出多个pdf文件的压缩文件,供前台下载的需求为例:但是不提供服务层实现. 实现 ...
- 《连载 | 物联网框架ServerSuperIO教程》- 13.自定义视图显示接口开发,满足不同的显示需求
1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架Serve ...
- Android中的自定义视图控件
简介 当现有控件不能满足需求时,就需要自定义控件. 自定义控件属性 自定义控件首先要继承自View,重写两个构造函数. 第一个是代码中使用的: public MyRect(Context contex ...
随机推荐
- centos 上安装phpstorm
phpstorm在centos上运行依赖JDK,所以先安装JDK环境. 假如是centos自带的openjdk,直接卸载,不支持phpstorm. 下载jdk-7u45-linux-i586.tar. ...
- python六十一课——高阶函数之reduce
2).reduce(fn,lsd): 参数一:fn --> 函数对象 参数二:lsd --> 序列对象 功能: 先将lsd中的第一和第二个元素去除传入到fn中参与运算, 运算后得到结果,再 ...
- Android Activity.startActivity流程简介
http://blog.csdn.net/myarrow/article/details/14224273 1. 基本概念 1.1 Instrumentation是什么? 顾名思义,仪器仪表,用于在应 ...
- Arduino IDE for ESP8266教程(0)配置IDE
淘宝链接 https://detail.tmall.com/item.htm?id=540067174120&spm=a1z09.2.0.0.6f7c6509ujAvQs&_u=71q ...
- linux 的常用命令---------第十一阶段
软件管理rpm.yum 在 windows 与 linux 之间 实现小文件传输(仅支持在 X shell 中完成文件传输,虚拟机中不可实现): # yum install lrzsz -y ...
- Rinkeby中测试币的申请
https://www.rinkeby.io/#faucet 从这个页面可以看见测试币的请求是有要求的,下面说明怎么做: 之前使用的是google账号,即第二种方式来获取.后面gmail出现了问题,一 ...
- all与any的用法
all函数:检测矩阵中是否全为非零元素 any函数:检测矩阵中是否有非零元素,如果有,则返回1,否则,返回0.用法和all一样 语法: B = all(A) B = all(A, dim) 复制代码 ...
- AI 逻辑回归
逻辑回归 参考链接 https://zhuanlan.zhihu.com/p/44591359
- 【Codeforces 115D】Unambiguous Arithmetic Expression
Codeforces 115 D 题意:给一个没有括号的表达式,问有多少种添加括号的方法使得这是一个合法的表达式?输入可能有正负号.加减乘除.数字. 思路1: 这是不能过的\(naive\)的\(dp ...
- http协议进阶(四)报文首部
之前写的关于报文首部的传送门: 报文首部:http://www.cnblogs.com/imyalost/p/5708445.html 通用首部字段:http://www.cnblogs.com/im ...