java rest 图_SpringMVC视图及REST风格
什么是视图解析器?
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风格相关推荐
- springmvc视图解析器_SpringMVC视图及REST风格
什么是视图解析器? springMVC用于处理视图最重要的两个接口是ViewResolver和View. ViewResolver的主要作用是把一个逻辑上的视图名称解析成一个真的的视图,而Spring ...
- Eclipse 插件用法:Eclipse 利用 Amateras UML 生成 Java 类图、时序图和 UML 类图
文章目录 前言 一.安装 Eclipse 官方提供的安装框架 GEF 1.1.Eclipse 中第三方插件更新/安装策略 1.2.为什么选择 GEF 框架? 1.3.GEF 框架安装 二.安装 Ama ...
- JAVA Swing 图形化界面编程
JAVA Swing 图形化界面编程 目录 1.组件 1.1 基本组件 1.2. 组件边框 1.3. JToolBar 工具条 1.4 JColorChooser 颜色选择器 1.5 JFileCho ...
- Java 集合类图(转)
1.java集合类图 1.1 1.2 上述类图中,实线边框的是实现类,比如ArrayList,LinkedList,HashMap等,折线边框的是抽象类,比如AbstractCollection,Ab ...
- couchbase_Couchbase 101:从Java应用程序创建视图(MapReduce)
couchbase 使用Couchbase 2.0开发新应用程序时,有时需要从代码中动态创建视图. 例如,在安装应用程序,编写一些测试时,可能会需要此方法:或者,在构建框架时,您也可以使用此方法,并希 ...
- Couchbase 101:从Java应用程序创建视图(MapReduce)
使用Couchbase 2.0开发新应用程序时,有时需要从代码中动态创建视图. 例如,在安装应用程序,编写一些测试时,可能会需要此方法:或者,在构建框架时,您也可以使用它,并希望动态创建视图以查询数据 ...
- [转载]Qt之模型/视图(自定义风格)
原文地址:Qt之模型/视图(自定义风格)作者:一去丶二三里 关于自定义风格是针对视图与委托而言的,使用事件与QSS都可以进行处理,今天关于美化的细节讲解一下. 先看下图: 先撇开界面的美观性(萝卜青菜 ...
- [转载]Qt之模型/视图(自定义风格)_vortex_新浪博客
原文地址:Qt之模型/视图(自定义风格)作者:一去丶二三里 关于自定义风格是针对视图与委托而言的,使用事件与QSS都可以进行处理,今天关于美化的细节讲解一下. 先看下图: 先撇开界面的美观性(萝卜青菜 ...
- java数据类型图:
java数据类型图: ┏数值型━┳━整数型:byte short int long ┏基本数据类型━━┫ ...
最新文章
- 07JavaScript中的数组
- win10下使用wget
- Python类属性和实例属性分别是什么?
- 无人机飞控开发平台培训理论课程——飞行原理
- 硬核 | 关于Linux内核的简明知识
- 干货!看云原生时代阿里云的四个“最”
- java中为什么不能强制转换_为什么Java中的强制转换异常致命?
- php原创程序,[原创]我写的最短的微博程序(PHP)
- mysql 集群操作系统_mysql集群部署
- Redis可视化客户端管理及监控工具TreeNMS
- 如何增加(软件测试)自动化测试面试成功率?只需学会主流设计模式PO+关键字驱动!
- 只能修饰唯一一个html元素的选择器是,HTML常用标签和CSS选择器的使用及演示——2019.1.14...
- Color颜色——颜色模式、颜色基本特征、网页颜色以及其代码
- kubernetes Pod驱逐机制
- 天童美语育儿书籍推荐《愿你慢慢长大》
- 微信摇一摇周边新功能上线
- 移动硬盘不被系统识别的处理
- kali之vulhub,medium_socnet
- Python常用的数据清洗方法
- 电商不仅仅有CRUD——0基础了解电商中的引流工具谷歌GMC