一: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. angular2 表单验证

    模版式表单 (1) angular遇到form自动接管,不想自动接管,添加ngNoForm,当标签为div时,但想被表单接管,添加ngForm; (2) ngForm可以被模版本地变量引用,以便在模版 ...

  2. Myeclipse2014 已有项目更换JDK

    原先项目使用JDK是1.7,今天项目加入了一个新包,只支持JAVA8,让我们都升级一下本地的JDK,我突然发现我还没有在myeclipse上升级过JDK呢.捣鼓了一下,也不难,记录一下. 1.下载ja ...

  3. eclipse中git提交冲突问题

    1.工程->Team->同步:  2.从远程pull至本地,就会出现如下内容:  3.使用Merge Tool,执行第二项 使用HEAD合并后的效果: 4.再手动修改 4.修改后的文件需要 ...

  4. 使用phpMyAdmin批量修改Mysql数据表前缀的方法

    多个网站共用一个Mysql数据库时,为使数据库管理不混乱,一般采用不同的网站使用不同前缀名的方式进行区分.而如何批量修改已有数据库的前缀名呢?全部导出修改后再导入?还是一个表一个表的修改?今天我要介绍 ...

  5. 织梦DedeCMS提示信息框的修改,修改ShowMsg方法函数

    http://www.360doc.com/content/14/0408/13/16498929_367236469.shtml 织梦DedeCMS系统,处处都在用到提示信息,但是这个提示框,前台后 ...

  6. Python3 的函数(2)

    1.形参和实参 def MyFun(x): return x ** 3 y = 3 print(MyFun(y)) x为形参,y为实参. 2.函数文档 在函数内用单引号引起来的一段文字,在调用函数时不 ...

  7. Jasper之table报表

    这段时间用Jasper画报表,讲真的Jasper IDE真的很难用,网上找很久都没找到用table画的配置方法,以下是直接操作源码画table的方法,不用IDE一样可以做出来(不过样式还是得借助IDE ...

  8. char,varchar,nvarchar,text区别与联系

    CHAR,NCHAR 定长,速度快,占空间大,需处理VARCHAR,NVARCHAR,TEXT 不定长,空间小,速度慢,无需处理NCHAR.NVARCHAR.NTEXT处理Unicode码

  9. Windows10下用Anaconda3安装TensorFlow教程

    这是我在自己的笔记本电脑上用Anaconda3安装TensorFlow的教程 1. 安装好Anaconda3版本 (1) 注:可以发现最新版本是Anaconda5了(没关系,下载就是了) (2) 注意 ...

  10. ASP.net core 2.0.0 中 asp.net identity 2.0.0 的基本使用(三)—用户账户及cookie配置

    修改用户账户及cookie配置 一.修改密码强度和用户邮箱验证规则: 打开Startup.cs,找到public void ConfigureServices(IServiceCollection s ...