一: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 CXFRestlet(最早的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缓存文件的形式返回到页面显示。

总结

  简单的说,FreeMarker就是一种用Java编写的模板引擎,它根据模板输出多种规格的文本。特别指出的是,FreeMarker与Web应用框架无关,它同样可以应用在非Web应用程序环境中,而且,FreeMarker并不是只能生成HTML页面,它也可以生成各种文本,如XML/RTF/Java源代码等。
  Freemarker是一个非常优秀的模版引擎,这个模版引擎可用于任何场景,FreeMarker负责将数据模型中的数据合并到模版中,从而生成标准输出。
  FreeMarker特别适应与MVC模式的Web应用,通常有Java程序准备要显示的数据,由FreeMarker模版引擎来生成页面,而FreeMarker模版则提供页面布局支持,从而能更好地规范MVC架构,保证视图逻辑和业务逻辑分离。

Restful、Jersey和JAX-RS的更多相关文章

  1. 解决 jersey javax.ws.rs.core.UriBuilder.fromUri(UriBuilder.java:119)

    检查是否Jar冲突 保留一个jersey-server-*.jar

  2. 第四篇:用IntelliJ IDEA 搭建基于jersey的RESTful api

    编译器:Intellij IDEA 系统环境: MAC OS 相关技术:Maven.tomcat 7.jdk8 1.创建项目 首先创建一个web Application项目(这里我们打算用maven引 ...

  3. RESTful WebService 入门实例

      /* 新建MavenProject,使用以下代码,创建类和POM文件.使用命令行切换到Project根目录,运行mvn package(或者,选中pom.xml 文件右键单击 > run a ...

  4. 设计模式--Restful笔记(一)

    一.REST基础概念 首先REST是 Representational State Transfer 的缩写,如果一个架构符合REST原则,它就是RESTful架构. 在REST中的一切都被认为是一种 ...

  5. java各种框架的比较,分析

    Spring 框架 优点 1.提供了一种管理对象的方法,可以把中间层的对象有效地组织起来 2.采用了分层结构,可以增量引入到项目中. 3.代码测试较容易 4.非侵入性,应用程序对Spring API的 ...

  6. JAX-RS

    一.简介 JAX-RS(Java API for RESTful Web Services),是JAVAEE6中提出的Java 编程语言的应用程序接口,支持按照表述性状态转移(REST)架构风格创建W ...

  7. 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. ...

  8. 调用链系列二、Zipkin 和 Brave 实现(springmvc、RestTemplate)服务调用跟踪

    Brave介绍 1.Brave简介 Brave 是用来装备 Java 程序的类库,提供了面向标准Servlet.Spring MVC.Http Client.JAX RS.Jersey.Resteas ...

  9. Zipkin和Brave实现http服务调用的跟踪

    使用Zipkin和Brave实现http服务调用的跟踪,Brave 是用来装备Java程序的类库,提供了面向标准Servlet.Spring MVC.Http Client.JAX RS.Jersey ...

  10. 原理分析dubbo分布式应用中使用zipkin做链路追踪

    zipkin是什么 Zipkin是一款开源的分布式实时数据追踪系统(Distributed Tracking System),基于 Google Dapper的论文设计而来,由 Twitter 公司开 ...

随机推荐

  1. Redis介绍及Jedis测试

    1.Redis简介 Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库.缓存和消息中间件. 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes ...

  2. vue vue-style-loader !css-loader错误

    最近在学习vue框架,使用webpack打包vue项目,在执行npm run start的时候 出现如下错误: This dependency was not found: * !!vue-style ...

  3. redis3.0 集群在windows上的配置(转)

    1. 安装Redis版本:win-3.0.501https://github.com/MSOpenTech/redis/releases页面有,我下载的是zip版本的:Redis-x64-3.0.50 ...

  4. [国嵌攻略][136][DM9000网卡驱动深度分析]

    网卡初始化 1.分配描述结构,alloc_etherdev 2.获取平台资源,platform_get_resource 2.1.在s3c_dm9k_resource中有相关的资源 2.2.add地址 ...

  5. phpcms v9——工作需要【套模板】

    phpcms v9 模板标签说明整理 作者:匿名 来源:ChinaZ源码报导 浏览:44061次 2011-6-17 15:52:09 字号:大 中 小 [摘要]本文介绍phpcms v9中模板标签使 ...

  6. iOS的相对路径和绝对路径

    iOS程序有固定的文件访问限制,只能在自己的沙盒内. UIImage *img=[UIImage imageNamed:@"cellicon.png"]; 这段代码从相对路径加载了 ...

  7. 工厂模式Java

    一.工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的. 工厂模式在<Java与模式>中分为三类:1)简单工厂模式(Simple Factor ...

  8. 分析业务模型-类图(Class Diagram)

    分析业务模型-类图(Class Diagram)     分析业务模型-类图(Class Diagram)(上) 摘要:类图(Class Diagram)可能是用得最多的一种UML图.类图的基本语法并 ...

  9. 【笔记】css 实现宽度自适应屏幕 高度自适应宽度

    如果说宽高自适应屏幕尺寸那么大家可能会想到 div{ width: 100%; height: 100% } 但是如果我要自适应屏幕尺寸的同时还要变成正方形呢?(高度和宽度相等而高度不能写死) 那就要 ...

  10. Select、Poll、Epoll、 异步IO 介绍

    一.概念相关介绍 同步IO和异步IO,阻塞IO和非阻塞IO分别是什么,到底有什么区别?不同的人在不同的上下文下给出的答案是不同的.所以先限定一下本文的上下文. 本文讨论的背景是Linux环境下的net ...