加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

基于REST的Webservice

发布时间:2020-12-16 22:55:15 所属栏目:安全 来源:网络整理
导读:基于REST的Webservice 步骤: (1)配置mysql和tomcat工作环境; (2)设置 Jersey 的环境; 首先,为 Eclipse 上的 Tomcat创建服务器运行时。这是用于 RESTful Web 应用程序的 Web 容器。然后创建一个名为 “Jersey” 应用程序。 (3)建立动态Web工程,

基于REST的Webservice

步骤:

(1)配置mysql和tomcat工作环境;
(2)设置 Jersey 的环境;
首先,为 Eclipse 上的 Tomcat创建服务器运行时。这是用于 RESTful Web 应用程序的 Web 容器。然后创建一个名为 “Jersey” 应用程序。
(3)建立动态Web工程,然后创建配置文件web.xml;
(4)开发实现post和get功能的RESTful webservice;
(5)使用mysql创建bookinformations数据库,插入相关信息。如图所示:

这里写图片描述


(6)添加json支持,创建json client,用于传输json文件,数据以json格式传输;
(7)部署项目到Tomcat容器。
在Jersey项目上点击右键,Export—WAR file,生成Jersey.war文件,复制该文件到Tomcat安装目录下,重新启动tomcat,Jersey.war文件将被自动解压。
(8)测试项目。

Questions:

1.How many components make of Java EE application model? What are they each responsible for?

不管是经典的JAVAEE架构,还是本书所介绍的轻量级JAVAEE架构,大致上都可以分为如下几层:

->Domain Object(领域对象)层:此层由系列的POJO(Plain Old java Object,普通的、传统的Java对象)组成,这些对象是该系统的Domain Object,往往包含了各自所需要实现的业务逻辑方法。

->DAO(Data access Object,数据库访问对象)层:此层由系列的DAO组件组成,这些DAO实现了对数据库的创建、查询、更新和删除(CRUD)等原子操作。

->业务逻辑层:此层由系列的业务逻辑对象组成,这些业务逻辑对象实现了系统所需要的业务逻辑方法。这些业务逻辑方法可能仅仅用于暴漏Domain Object对象所实现的业务逻辑方法,也可能是依赖DAO组件实现的业务逻辑方法。

->控制器层:此层由系列控制器组成,这些控制器用于拦截用户请求,并调用业务逻辑组件的业务逻辑方法,处理用户请求,并根据处理结果转发到不同的表现层组件。

->表现层:此层由系列的JSP页面、Velocity页面、PDF文档视图组件组成、负责收集用户请求,并将显示处理

2.What are the differences between REST and SOPA?

SOAP(Simple Object Access Protocol,)简单对象访问协议
简单对象访问协议是交换数据的一种协议规范,是一种轻量的、简单的、基于XML(标准通用标记语言下的一个子集)的协议,它被设计成在WEB上交换结构化的和固化的信息。

Rest即表述性状态传递(英文:Representational State Transfer,简称REST)是一种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸缩性。

REST的思想归结以下有如下几个关键点:
(1)面向资源的接口设计;
(2)抽象操作为基础的CRUD;
(3)Http是应用协议而非传输协议;
(4)无状态,自包含,作为接口设计都需要能够做到这点,也是作为可扩展和高效性的最基本的保证.

Differences:
(1)SOAP在成熟度上优于REST;
由于REST只是一种基于Http协议实现资源操作的思想,因此各个网站的REST实现都自有一套,在后面会讲诉各个大网站的REST API的风格。也正是因为这种各自实现的情况,在性能和可用性上会大大高于SOAP发布的web service,但统一通用方面远远不及SOAP。由于这些大网站的SP往往专注于此网站的API开发,因此通用性要求不高。

(2)在效率和易用性上来说,REST更胜一筹;
REST被人们的重视,其实很大一方面也是因为其高效以及简洁易用的特性。这种高效一方面源于其面向资源接口设计以及操作抽象简化了开发者的不良设计,同时也最大限度的利用了Http最初的应用协议设计理念。同时,在我看来REST还有一个很吸引开发者的就是能够很好的融合当前Web2.0的很多前端技术来提高开发效率。例如很多大型网站开放的REST风格的API都会有多种返回形式,除了传统的xml作为数据承载,还有(JSON,RSS,ATOM)等形式,这对很多网站前端开发人员来说就能够很好的mashup各种资源信息。

(3)SOAP的安全性比REST高;
SOAP在安全方面是通过使用XML-Security和XML-Signature两个规范组成了WS-Security来实现安全控制的,当前已经得到了各个厂商的支持,.net ,php ,java 都已经对其有了很好的支持。
REST没有任何规范对于安全方面作说明。
(4)SOAP比REST更容易让人接受;
开发人员的传统设计思想让REST的形式被接受还需要一点时间。同时在资源型数据服务接口设计上来说按照REST的思想来设计相对来说要容易一些,而对于一些复杂的服务接口来说,可能强要去按照REST的风格来设计会有些牵强。

3.Which container are you using in this case? Is there any other container and can you describe their pros and cons?

Tomcat
容器是一种服务调用规范框架,J2EE 大量运用了容器和组件技术来构建分层的企业级应用。在 J2EE 规范中,相应的有 WEB Container 和 EJB Container 等。
WEB 容器更多的是跟基于 HTTP 的请求打交道。而 EJB 容器不是。它是更多的跟数据库、其它服务打交道。

Tomcat 是一个小型的轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。

Weblogic
BEAWebLogic是用于开发、集成、部署和管理大型分布式Web应用、 网络应用和数据库应用的Java应用服务器。将Java的动态功能和Java Enterprise标准的安全性引入大型网络应用的开发、集成、部署和管理之中。
BEAWebLogicServer拥有处理关键Web应用系统问题所需的性能 、可扩展性和高可用性。

4.JDBC连接数据库的流程及其原理

(1)在开发环境中加载指定数据库的驱动程序。
MySQL支持JDBC的驱动程序的是:mysql-connector-java-5.1.18-bin.jar)

(2)在Java程序中加载驱动程序。在Java程序中,
Class.forName(“指定数据库的驱动程序”)
Class.forName(“com.mysql.jdbc.Driver”)

(3)创建数据连接对象
Connection connection = DriverManager.getConnection(“连接数据库的URL”,“用户名”,”密码”)。URL=协议名+IP地址(域名)+端口+数据库名称;用户名和密码是指登录数据库时所使用的用户名和密码。
Connection connect =
DriverManager.geiConnection(“jdbc:mysql://localhost:3306/DatabaseName”,”root”,”123” )

(4)创建Statement对象
Statement 类的主要是用于执行静态 SQL 语句并返回它所生成结果的对象。
Statement statament =connection.createStatement();
Statement statamentMySQL =connectMySQL.createStatement();

(5)调用Statement对象的相关方法执行相对应的 SQL 语句
statement.excuteUpdate( “INSERTINTO table (name,age,sex,address,depart,worklen,wage)” + “VALUES (‘Tom1’,321,‘M’,‘china’,’Personnel’,’3’,’3000’ ) “) ;
通过调用Statement对象的executeQuery()方法进行数据的查询,而查询结果会得到ResulSet对象,ResulSet表示执行查询数据库后返回的数据的集合,ResulSet对象具有可以指向当前数据行的指针。通过该对象的next()方法,使得指针指向下一行,然后将数据以列号或者字段名取出。如果当next()方法返回null,则表示下一行中没有数据存在。使用示例代码如下:
ResultSet resultSel =statement.executeQuery( “select * from table” );

(6)关闭数据库连接:
Connection的close() 方法及时关闭数据连接。

问题与经验总结

1、CentOS yum安装mysql后 Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’问题。

如果仅仅只yum 安装了mysql这个包,启动mysql时就会提示:
ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’
yum安装mysql这个包其实是MySQL 客户端程序和共享库,所以我们还需要安装php-mysql和mysql-server这两个包.

$[root@localhost ~] yum install mysql mysql-server php-mysql -y

$ [root@localhost ~] chkconfig mysqld on

$[root@localhost ~] service mysqld start

$ [root@localhost ~] service httpd restart

2、centos6.x下安装eclipse
http://www.centoscn.com/image-text/install/2014/0507/2924.html

3、Github项目缺陷跟踪

http://www.worldhello.net/gotgithub/04-work-with-others/050-issue.html

4、数据库mysql要打开、服务器要配置正确,一个tomcat一次只能跑一个服务端。Dynamic web service 工程所需要的jar包不能通过buildpath引用,要放在WEB-INF下的lib下,这是tomcat的要求。

5、部署Dynamic web service 时,Server Locations要选第二项,即Use Tomcat installation.

6、访问服务器出现404错误,有可能是url不正确,客户端请求的url和服务端里xml文件下的配置要匹配。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读