什么是视图解析器?

springMVC用于处理视图最重要的两个接口是ViewResolver和View。

ViewResolver的主要作用是把一个逻辑上的视图名称解析成一个真的的视图,而SpringMVC中用于把View对象呈现给客户端的是View对象本身,而ViewResolver只是把逻辑视图名称解析为对象的View对象。

View接口的主要作用是用来处理视图,返给给客户端。

视图解析器的执行流程:

请求方法执行完成后,最终返回一个ModelAndView对象,对于那些返回String,View,ModelMap等类型SpingMVC最终会在内部给他们装配成一个ModelAndView对象,它包含了逻辑名和模型对象的视图。StringMVC借助视图解析器得到最终的视图对象,最终的视图可以是JSP,也可能是其他的文件形式的视图。对于最终采取那一种方式渲染处理器并不关心,处理器重点焦距在生产模型数据的工作上,从来实现了MVC充分的解耦。

视图:

视图的作用是渲染模型数据,将模型里面的数据以某种形式呈现给用户。为了实现视图模型和具体实现技术的解耦,Sping定义了一个View接口。视图对象由视图解析器负责实例化,由于视图是无状态的,所以它们不会有线程安全问题。

常用的视图实现类:

InternalResourceView:将JSP资源封装成一个视图,是springmvc默认使用的视图解析器。

JstlView:在JSP项目中引入jstl包springmvc会自动使用该解析器

MapingJackJsonView:将模型通过Jackson开源框架的ObjectMapper以Json方式输出。

AbstractExcelView:Excel文档视图的抽象类,该视图基于POI构造Excel文档

AbstractPdfVIew:PDF文档视图的抽象类,该视图基于iText构建Pdf文档

BeanNameViewResolver:将逻辑视图名解析为一个Bean,Bean的id等于逻辑视图名。

视图解析器的作用比较单一,将逻辑视图解析为一个具体的视图对象,所有的视图解析器必须实现ViewResolver接口。

JSP是最常用的视图技术,可以使用InternalResourceView作为视图解析器

项目中只要引入了JSTL标签则springmvc会自动把视图有InternalResourceView转换成JstlView,JstlView是它的子类。

每一个视图解析器都实现了Ordered接口并开发出一个order属性,可以通过它设置解析器的优先级,order越小优先级越高。Spring MVC会按视图解析器顺序的优先级对逻辑视图名进行解析,直到解析成功并返回视图对象,否则会抛出ServletException异常

自定义视图:

@Component

public class MyView implements View {

@Override

public String getContentType() {

return "text/html";

}

@Override

public void render(Map model, HttpServletRequest request, HttpServletResponse response) throws Exception {

response.getWriter().println("

Spring MVC Custom view

");

}

}

我们需要将这个自定义的视图实现View接口然后重写接口中的两个方法。然后我们把这个类声明成Bean交给spring管理。在这里我们配置一个beanName解析器。

然后写一个请求,这个请求返回Bean的名字,默认是首字母小写以驼峰式展现。

@RequestMapping("myView")

public String myView(){

System.out.println("myView load ...");

return "myView";

}

这样就可以完成我们的自定以视图。

关与重定向:

如果返回字符串中带有”redirect:“或”forward:“,SpringMvc会将其做特殊的处理。

如果我们需要直接访问视图可以这样配置

REST章节

REST(Representational State Transfer):即(资源)表现层状态传递。

资源(Resources):网络上的一个实体,或者说网络上的一段信息。它可以是一段文本,一段歌曲,一张图片等等,可以用一个URL指向它,每个资源都有一个特定的,独一无二的URL,要访问这个资源,直接访问这个URI即可。

表现层(Representation):将资源呈现出来的形式。

状态转化(State Transfer):每发出一个请求,就代表客户端和服务器一次交互。HTTP协议是一个无状态的协议,即所有的状态都保存在服务器端。客户端想要操作服务器,必须通过某些手段,让服务器发生状态转化,而这种转化是建立在表现层之上的,所以就是表现层状态转化。

在我们的SpringMVC之中支持HTTP四种请求状态,REST规定的HTTP协议中四种表示操作方式的动词

GET请求:获取资源

POST请求:新建资源

PUT:更新资源

DELETE:删除资源

我们需要在WEB.xml中配置实现PUT,DELETE请求方式,大家都知道在我们传统的HTML中只有GET,POST两种请求方式。

HiddenHttpMethodFilter

org.springframework.web.filter.HiddenHttpMethodFilter

HiddenHttpMethodFilter

/*

GET请求

GET请求:

test RestGet请求

@RequestMapping(value="/testRest/{id}",method=RequestMethod.GET)

public String testRestGet(@PathVariable Integer id){

System.out.println("GET请求,获取id为:" + id + "的对象!");

return SUCCESS;

}

Post请求

POST请求:

@RequestMapping(value="/testRest",method=RequestMethod.POST)

public String testRestPost(){

System.out.println("POST请求,添加新的对象!");

return SUCCESS;

}

PUT和DELETE请求想要使用必须添加上面的过滤器,并且在Post请求中加上隐藏域name=”_method”,value=”PUT/DELETE”。

PUT,请求其实是由POST请求转换而来的。

PUT请求:

@RequestMapping(value="/testRest",method=RequestMethod.PUT)

public String testRestPut(){

System.out.println("PUT请求,更新操作!");

return SUCCESS;

}

DELETE请求

DELETE请求:

@RequestMapping(value="/testRest/{id}",method=RequestMethod.DELETE)

public String testRestDelete(@PathVariable Integer id){

System.out.println("DELETE请求,删除操作!" + id);

return SUCCESS;

}

重复一次第一章的内容在我们springmvc拦截所有请求会导致css,js,图片等不能引入我们可以这样解决:

https://www.cnblogs.com/SimpleWu/category/1354870.html

java rest 图_SpringMVC视图及REST风格相关推荐

  1. springmvc视图解析器_SpringMVC视图及REST风格

    什么是视图解析器? springMVC用于处理视图最重要的两个接口是ViewResolver和View. ViewResolver的主要作用是把一个逻辑上的视图名称解析成一个真的的视图,而Spring ...

  2. Eclipse 插件用法:Eclipse 利用 Amateras UML 生成 Java 类图、时序图和 UML 类图

    文章目录 前言 一.安装 Eclipse 官方提供的安装框架 GEF 1.1.Eclipse 中第三方插件更新/安装策略 1.2.为什么选择 GEF 框架? 1.3.GEF 框架安装 二.安装 Ama ...

  3. JAVA Swing 图形化界面编程

    JAVA Swing 图形化界面编程 目录 1.组件 1.1 基本组件 1.2. 组件边框 1.3. JToolBar 工具条 1.4 JColorChooser 颜色选择器 1.5 JFileCho ...

  4. Java 集合类图(转)

    1.java集合类图 1.1 1.2 上述类图中,实线边框的是实现类,比如ArrayList,LinkedList,HashMap等,折线边框的是抽象类,比如AbstractCollection,Ab ...

  5. couchbase_Couchbase 101:从Java应用程序创建视图(MapReduce)

    couchbase 使用Couchbase 2.0开发新应用程序时,有时需要从代码中动态创建视图. 例如,在安装应用程序,编写一些测试时,可能会需要此方法:或者,在构建框架时,您也可以使用此方法,并希 ...

  6. Couchbase 101:从Java应用程序创建视图(MapReduce)

    使用Couchbase 2.0开发新应用程序时,有时需要从代码中动态创建视图. 例如,在安装应用程序,编写一些测试时,可能会需要此方法:或者,在构建框架时,您也可以使用它,并希望动态创建视图以查询数据 ...

  7. [转载]Qt之模型/视图(自定义风格)

    原文地址:Qt之模型/视图(自定义风格)作者:一去丶二三里 关于自定义风格是针对视图与委托而言的,使用事件与QSS都可以进行处理,今天关于美化的细节讲解一下. 先看下图: 先撇开界面的美观性(萝卜青菜 ...

  8. [转载]Qt之模型/视图(自定义风格)_vortex_新浪博客

    原文地址:Qt之模型/视图(自定义风格)作者:一去丶二三里 关于自定义风格是针对视图与委托而言的,使用事件与QSS都可以进行处理,今天关于美化的细节讲解一下. 先看下图: 先撇开界面的美观性(萝卜青菜 ...

  9. java数据类型图:

    java数据类型图:                                 ┏数值型━┳━整数型:byte short int long               ┏基本数据类型━━┫   ...

最新文章

  1. 07JavaScript中的数组
  2. win10下使用wget
  3. Python类属性和实例属性分别是什么?
  4. 无人机飞控开发平台培训理论课程——飞行原理
  5. 硬核 | 关于Linux内核的简明知识
  6. 干货!看云原生时代阿里云的四个“最”
  7. java中为什么不能强制转换_为什么Java中的强制转换异常致命?
  8. php原创程序,[原创]我写的最短的微博程序(PHP)
  9. mysql 集群操作系统_mysql集群部署
  10. Redis可视化客户端管理及监控工具TreeNMS
  11. 如何增加(软件测试)自动化测试面试成功率?只需学会主流设计模式PO+关键字驱动!
  12. 只能修饰唯一一个html元素的选择器是,HTML常用标签和CSS选择器的使用及演示——2019.1.14...
  13. Color颜色——颜色模式、颜色基本特征、网页颜色以及其代码
  14. kubernetes Pod驱逐机制
  15. 天童美语育儿书籍推荐《愿你慢慢长大》
  16. 微信摇一摇周边新功能上线
  17. 移动硬盘不被系统识别的处理
  18. kali之vulhub,medium_socnet
  19. Python常用的数据清洗方法
  20. 电商不仅仅有CRUD——0基础了解电商中的引流工具谷歌GMC

热门文章

  1. 手把手教你从Core Data迁移到Realm
  2. HDU 2955 Robberies
  3. 如何快速搭建开放、多租户的电商云平台
  4. SybaseIQ - utility_db介绍
  5. 自己写的sqlHelper 以及读取配置文件
  6. c#Struts框架理念和自制Struts框架下 复杂版
  7. mysql免安装版配置方法
  8. NYOJ 679 贪婪的商店
  9. Adnroid提高效率之资源文件改名
  10. 【python】self cls