Restful、Jersey和JAX-RS
一:MVC与SpringMVC
MVC:是一种思想,是一种设计模式
SpringMVC:是一个框架,实现了MVC这种思想。
之前:写JSP页面,比较繁琐。eg:在页面显示用户列表,我们会在JSP页面,使用<foreach>标签,循环输出所有User对象。此时JSP页面,和Model实体类混合在一起,没有进行分离出来。没法写js
而使用SpringMVC后,可以将View和Model分离,可以单独返回页面,也可以setAttribute()设置数据,在前台页面,可以通过js将数据渲染出来。
二:Restful、Jersey和JAX-RS
restful:是一种风格,可以唯一将网络上的资源表示出来。通过http://ip:port/xiangmu/url,通过协议,ip,端口,项目,url唯一表示一个资源。
REST 指的是一组架构约束条件和原则。
REST的目的是便于不同软件/程序在网络(例如互联网)中互相传递信息。约定大于配置,有了统一的规范,大家在接口设计时能够保证理解的一致性。
JAX-RS:Java API for RESTful Web Services,是java的一个小框架,实现了restful风格,将网络上的资源唯一的标识出来。
JAX-RS提供了一些注解将一个资源类,一个POJO Java类,封装为Web资源。
JAX-RS和所有JAVA EE的技术一样,只提供了技术标准,允许各个厂家有自己的实现版本,实现版本有:RESTEasy(JBoss), Jersey(Sun提供的参考实现), Apache CXF, Restlet(最早的REST框架,先于JAX-RS出现), Apache Wink。JAX-RS基于JavaEE的Servlet。标准中定义的注解大大简化资源位置和参数的描述,仅仅使用注解就可以将一个POJO java类封装成一个Web资源。JAX-RS也有类似于Spring依赖注入的方式,减少类之间的耦合度。
Jersey:是一个框架,实现了restful风格,类似于SpringMVC实现了MVC设计思想。
Jersey框架中,会用到java中JAX-RS框架的一些注解,同时它又有它自己所独有的技术。
三:FreeMarker
FreeMarker是一款模板引擎,是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件。
该模板引擎专门用来解析文件的。当然不仅仅是解析ftl格式的文件,也可以是xml,rtf文件等,我们可以理解为freemarker是一种网页展现技术。
freemarker的文件一般后缀是ftl,可以解析HTML、xml等文件。可以将html,xml等文件内容写在ftl文件中,就表示要使用freemarker技术来对html、xml文件进行解析它。
FreeMarker Template Language(FTL),属于简单、专用的语言。
以解析html为例:
1.ftl文件中:可以写html,可以写指令,包括<#if>、<#list>、${}等来获取值。eg:${latestProduct.url}"
2..在装载网页的时候,Freemarker模板自动从数据模型中提取数据,并解释整个网页为我们熟知的HTML页面。
3.ftl文件,是Freemarker模板的文件后缀名。ftl文件会有对应的html缓存文件,解析的时候,会去查找对应的html文件。freemarker引擎会解析ftl格式的文件,最终以html的格式返回到页面,就类似与jsp文件最终会解析为html代码,以流的方式返回到页面。
jsp文件,本质也是一个servlet文件,返回数据的时候,拼接html代码,<tbody>、<tr>等方式,最后解析,通过二进制流的方式输出到页面中去。 这点和ftl文件很相似,jsp是转换为out流的形式输出内容,而ftl文件是最中转换为html缓存文件的形式返回到页面显示。
总结
Restful、Jersey和JAX-RS的更多相关文章
- 解决 jersey javax.ws.rs.core.UriBuilder.fromUri(UriBuilder.java:119)
检查是否Jar冲突 保留一个jersey-server-*.jar
- 第四篇:用IntelliJ IDEA 搭建基于jersey的RESTful api
编译器:Intellij IDEA 系统环境: MAC OS 相关技术:Maven.tomcat 7.jdk8 1.创建项目 首先创建一个web Application项目(这里我们打算用maven引 ...
- RESTful WebService 入门实例
/* 新建MavenProject,使用以下代码,创建类和POM文件.使用命令行切换到Project根目录,运行mvn package(或者,选中pom.xml 文件右键单击 > run a ...
- 设计模式--Restful笔记(一)
一.REST基础概念 首先REST是 Representational State Transfer 的缩写,如果一个架构符合REST原则,它就是RESTful架构. 在REST中的一切都被认为是一种 ...
- java各种框架的比较,分析
Spring 框架 优点 1.提供了一种管理对象的方法,可以把中间层的对象有效地组织起来 2.采用了分层结构,可以增量引入到项目中. 3.代码测试较容易 4.非侵入性,应用程序对Spring API的 ...
- JAX-RS
一.简介 JAX-RS(Java API for RESTful Web Services),是JAVAEE6中提出的Java 编程语言的应用程序接口,支持按照表述性状态转移(REST)架构风格创建W ...
- Java Web Services (0) - Overview
前言第1章 Web服务快速入门 1.1 Web服务杂项 1.2 Web服务有什么好处 1.3 Web服务和面向服务的架构 1.4 Web服务简史 1.4.1 从DCE/RPC到XML-RPC 1.4. ...
- 调用链系列二、Zipkin 和 Brave 实现(springmvc、RestTemplate)服务调用跟踪
Brave介绍 1.Brave简介 Brave 是用来装备 Java 程序的类库,提供了面向标准Servlet.Spring MVC.Http Client.JAX RS.Jersey.Resteas ...
- Zipkin和Brave实现http服务调用的跟踪
使用Zipkin和Brave实现http服务调用的跟踪,Brave 是用来装备Java程序的类库,提供了面向标准Servlet.Spring MVC.Http Client.JAX RS.Jersey ...
- 原理分析dubbo分布式应用中使用zipkin做链路追踪
zipkin是什么 Zipkin是一款开源的分布式实时数据追踪系统(Distributed Tracking System),基于 Google Dapper的论文设计而来,由 Twitter 公司开 ...
随机推荐
- [bzoj1316] 树上的询问
裸的点分治.. 及时把已经确定的询问清掉就能快不少.时间复杂度O(nlogn*p) #include<cstdio> #include<iostream> #include&l ...
- c++(爬楼梯)
前两天上网的时候看到一个特别有意思的题目,在这里和朋友们分享一下: 有一个人准备开始爬楼梯,假设楼梯有n个,这个人只允许一次爬一个楼梯或者一次爬两个楼梯,请问有多少种爬法? 在揭晓答案之前,朋友们可以 ...
- solr服务的搭建(以solr4.1实现)
1.准备工作:一个干净的Tomcat,solr-4.10.3. 2.新建一个文件夹我这里命名为solr,将Tomcat和solr-4.10.3放进去.新建一个solrhome的文件夹,里面放的是sol ...
- NullPointerException org.apache.commons.digester.Digester.getXMLReader(Digester.java:1058)
http://pwu-developer.blogspot.com/2010/01/nullpointerexception.html Maven is great build tool making ...
- 最小生成树之Prim算法
描述 最近,小Hi很喜欢玩的一款游戏模拟城市开放出了新Mod,在这个Mod中,玩家可以拥有不止一个城市了! 但是,问题也接踵而来--小Hi现在手上拥有N座城市,且已知这N座城市中任意两座城市之间建造道 ...
- N的N次方
题目描述 现给你一个正整数N,请问N^N的最左边的数字是什么? 输入 输入包含多组测试数据.每组输入一个正整数N(N<=1000000). 输出 对于每组输入,输出N^N的最左边的数字. 样例输 ...
- 【深度学习系列】PaddlePaddle可视化之VisualDL
上篇文章我们讲了如何对模型进行可视化,用的keras手动绘图输出CNN训练的中途结果,本篇文章将讲述如何用PaddlePaddle新开源的VisualDL来进行可视化.在讲VisualDL之前,我们先 ...
- 使用python爬取百度贴吧内的图片
1. 首先通过urllib获取网页的源码 # 定义一个getHtml()函数 def getHtml(url): try: page = urllib.urlopen(url) # urllib.ur ...
- dede的pagelist标签的listsize数字属性详解
转载▼http://blog.sina.com.cn/s/blog_a4f3bd4e01012c8n.html dede的pagelist标签的listsize数字属性详解.见远seo经常用织梦搭建各 ...
- struts异常:No result defined for action
问题描述: No result defined for action com.freedom.funitureCityPSIMS.controller.login.CheckAction and re ...