war3必须安装的游戏组件_在单独的WAR组件中对SPA资源和API实现进行分区

war3必须安装的游戏组件

单页应用程序正Swift吸引人们的注意力,以实现基于Web的丰富,健壮和移动友好的应用程序。 从本质上讲,这需要更改应用程序体系结构,在该体系结构中,整个应用程序用户界面都是使用JavaScript来实现的,而服务器端代码则为服务器端应用程序逻辑和数据访问提供了基于RESTful,基于JSON的API。 该模型如下所示:

例子1

单独的客户端和服务器端部署组件的案例

这种SPA转移为用户带来了体验和性能上的好处,并提供了将用户界面与服务器端逻辑完全分离的机会。 从代码分区的角度来看,我们通过应用模型视图控制器(MVC)模式将UI与应用程序逻辑分离。 从部署应用程序生命周期的角度来看,它们仍然是耦合的-也就是说,应用程序是在一个组件中与静态客户端元素和服务器端元素一起打包和部署的。

似乎自然的本能是将客户端和服务器端元素都打包到单个JEE WAR组件中。 这可以使应用程序的生命周期更简单,但是,应用程序的构建似乎自然地组织了使用UI的开发人员和使用服务器端API的开发人员,并且由于使用了两种不同的开发语言,因此更为自然。 因此,将应用程序分为用于UI和服务器端API元素的单独的可部署WAR,而不是一个WAR,可以带来以下好处:

  • API对于UI开发保持稳定(不是移动目标)
  • UI控制何时引入服务器端API更改
  • 支持UI和API层的并发开发人员路径
  • 可以测试对UI的更改并将其移至质量检查和生产环境中,而无需重新测试API层
  • 可以更改底层API实施/技术,而不会影响UI
  • UI实现/技术可以更改而不会影响API
  • 在运行时引入UI元素的机会(利用JavaScript动态行为)

这是此拓扑的图片:

例子2

怎么样?

由于UI是使用动态JavaScript实现的,因此不必使用JEE WAR组件来容纳UI资源。 可以使用任何Web服务器,例如Apache或非常流行的Node.js服务器 。 但是,已经支持JEE的企业将获得对WAR的生命周期支持,这为使用服务器端动态行为进行资源的初始加载,身份验证以及以动态方式集成或中介事物打开了大门。

例如,代替使用index.html初始加载SPA,可以使用index.jsp将某些用户/客户端特定的逻辑应用于加载过程。

Servlet解决方案

支持SPA API /端点的一种解决方案是在静态内容SPA WAR中实现Servlet,该Servlet将API URL路由重定向到端点所驻留的服务器。 这是通过在web.xml中定义一个servlet以及到服务器的API调用的映射来实现的。

这是一个示例web.xml配置,该配置处理以API开头的URI:

<servlet><servlet-name>api</servlet-name><display-name>api</display-name><servlet-class>com.khs.spa.servlet.ApiServlet</servlet-class><init-param><param-name>redirect</param-name><param-value>localhost:8080/khs-command-ref</param-value></init-param></servlet><servlet-mapping><servlet-name>api</servlet-name><url-pattern>/api/*</url-pattern></servlet-mapping>

Servlet将根据上面显示的重定向初始化参数值中定义的URL重定向到API WAR。

重定向API HTTP GET / POST / PUT / DELETE请求的API Servlet实现如下所示:

package com.khs.spa.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ApiServlet extends HttpServlet {private static final long serialVersionUID = 4345668988238038540L;private String redirect = null;@Overridepublic void init() throws ServletException {super.init();// load redirect for servletredirect = getServletConfig().getInitParameter("redirect");if (redirect == null) {throw new RuntimeException("redirect value not set in servlet <init-param>");}}private void doService(HttpServletRequest request,HttpServletResponse response) throws RuntimeException, IOException {// you could do extra stuff here, i.e. logging etc...String path = request.getRequestURI().split(request.getContextPath())[1];String route = redirect + path;response.sendRedirect(route);}@Overrideprotected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {doService(request, response);}@Overrideprotected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {doService(request, response);}@Overrideprotected void doPut(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {doService(request, response);}@Overrideprotected void doDelete(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {doService(request, response);}@Overrideprotected long getLastModified(HttpServletRequest req) {return super.getLastModified(req);}@Overrideprotected void doHead(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {super.doHead(req, resp);}@Overrideprotected void doOptions(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {super.doOptions(req, resp);}@Overrideprotected void doTrace(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {super.doTrace(req, resp);}
}

注意事项

此方法假定无状态API实现。 由于涉及重定向,因此如果API WAR基于会话,则除非采用某种联合会话机制,否则它将不起作用。 身份验证和授权机制可以在客户端SPA UI-WAR和/或API层进行。 同样,如果需要为SPA访问多个API服务或企业系统,则仍可以在SPA UI-WAR中应用它们。

单页应用程序不仅使我们能够实现丰富/响应的用户界面,而且还促进了对数据和应用程序逻辑的轻量级易用的宁静API的使用。 用户界面的这种物理运行时解耦使“废弃”用户界面的概念更加切合实际,并且可以通过API层实现可重用服务的可用性。

  • 代码项目

参考: Keyhole Software博客上的JAR合作伙伴 David Pitt 将SPA资源和API实现划分为单独的WAR组件 。

翻译自: https://www.javacodegeeks.com/2014/02/partitioning-spa-resources-and-api-implementations-in-separate-war-components.html

war3必须安装的游戏组件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/344163.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[渝粤教育] 西南科技大学 西方经济学 在线考试复习资料

西方经济学——在线考试复习资料 一、单选题 1.市场失灵指的是( ) A.在私人部门和公共部门之间资源配置不均 B.不能产生任何有用成果的市场过程 C.以市场为基础的对稀缺资源的无效率配置 D.收入分配不均 2.通常由总成本曲线的变动而引起的通货膨胀称为( ) A.需求拉动型通货膨胀…

[渝粤教育] 西南科技大学 财务管理与分析 在线考试复习资料(4)

财务管理与分析——在线考试复习资料 一、单选题 1.某投资方案年营业收入240万元,年销售成本170万元,其中折旧70万元,所得税率40%,则该方案年营业现金净流量为( )。 A.70万元 B.112万元 C.140万元 D.84万元 2.如果投资规模不同的两个独立投资项目的评价,应优先选择( )。 A.净现…

避免在Cassandra中使用清单

Apache Cassandra是一种快速且可扩展的数据库&#xff0c;多年来&#xff0c;它变得与传统SQL数据库一样容易使用。 至少在表面上。 您使用类似SQL的查询&#xff0c;但是它们有很多限制&#xff1b; 您有一个模式&#xff0c;但是修改它并不像在SQL数据库中那样灵活&#xff…

matlab 矩阵jocobi迭代_高校MATLAB被禁用,掀起中国本土软件脆弱的冰山一角

近日哈工大、哈工程高校被美国禁止用正版的MATLAB软件&#xff0c;此消息一出可谓使得全体用过MATLAB的工作者为之震撼。因为少了这款软件&#xff0c;无异于缺失了有力的左膀右臂&#xff0c;如何才能游刃有余地遨游在科研和工作领域呢&#xff1f;然而对于外行人却不知道这款…

[渝粤教育] 西南科技大学 高级英语(2) 在线考试复习资料

高级英语&#xff08;2&#xff09;——在线考试复习资料 一、单选题 1. The speaker went on and on, she had to ________ herself to stay awake. A. punch B. pink C. pinch D. pin 2. The two daughters’ sweet words _______ King Lear into believing that they reall…

【渝粤教育】电大中专学前儿童发展心理学作业 题库

1学前儿童心理学是()的分支。 A发展心理学 B儿童发展心理学 C儿童教育心理学 D儿童心理学 正确 正确答案&#xff1a;左边查询 学生答案&#xff1a;A 2提出儿童的心理最初只是一块白板的是()。 A卢梭 B洛克 C福禄贝尔 D维果斯基 错误 正确答案&#xff1a;左边查询 学生答案&a…

controll层跳转页面_java web开发中的各种层

java后端开发前&#xff0c;还是应该将各种层划分好&#xff0c;知道各自的作用&#xff0c;今天做一下总结。Dao层、Entity层、Service层、Controller层、view层1、Dao层(持久层、数据访问层)功能&#xff1a;只负责与数据库的数据进行交互&#xff0c;dao层是在Mybatis框架下…

【渝粤教育】电大中专审计原理与实务_1作业 题库

1.下列关于国家审计的表述&#xff0c;正确的是() A.是对综合经济管理部门和专业监督部门的监督工作实施再监督 B.审计主体是中央审计机关&#xff0c;不包括地方审计机关 C.只对财政预算执行的情况和决算进行审计 D.审计机关做出的审计决定&#xff0c;被审计单位和有关人员可…

【渝粤教育】电大中专幼儿园课程论 (1)作业 题库

作业视频教务托管&#xff0c;壹叁路路贰陆陆壹〇肆〇 显性课程是 ( )的课程 A.指定的 B.随机的 C.无计划的 D.有计划的 错误 正确答案&#xff1a;左边查询 学生答案&#xff1a;未作答 2.幼儿园课程最核心的要素是( ) A.教育方法 B.教育理念 C.教学原则 D.课程内容 错误 正确…

java 内存同步_Java中的硬件事务性内存,或者为什么同步将再次变得很棒

java 内存同步总览 硬件事务内存有可能允许多个线程同时以推测方式访问相同的数据结构&#xff0c;并使缓存一致性协议确定是否发生冲突。 HTM旨在为您提供细粒度锁定的可伸缩性&#xff0c;粗粒度锁定的简单性以及几乎没有锁定的性能。 如果JVM支持&#xff0c;则您的程序或库…

图像的灰度级数越多越好_MATLAB-数字图像处理 图像直方图归一化

图像直方图归一化图像直方图概念&#xff1a;图像直方图是反映一个图像像素分布的统计表&#xff0c;其实横坐标代表了图像像素的种类&#xff0c;可以是灰度的&#xff0c;也可以是彩色的。纵坐标代表了每一种颜色值在图像中的像素总数或者占所有像素个数的百分比。图像是由像…

POE交换机隐藏指标是什么?

POE交换机有一个非常重要的隐藏指标&#xff0c;只有大神才知道&#xff01;我只告诉您一次哦&#xff01;记住喽&#xff01;接下来跟着飞畅科技的小编一起来看看POE交换机隐藏指标是什么吧&#xff01; POE交换机隐藏指标是什么&#xff1f; POE交换机一个非常重要的隐藏指标…

【渝粤教育】电大中专新媒体营销实务 (11)作业 题库

1.第四媒体发展到宽带互联网阶段成为&#xff08; &#xff09; A.网络新媒体 B.移动新媒体 C.数字新媒体 错误 正确答案&#xff1a;左边查询 学生答案&#xff1a;未作答 2.新媒体形式是指新媒体的使用模式、变现形式与应用形式。该说法&#xff08; &#xff09; A.正确 B.错…

JDK 13:什么是AggressiveOpts?

JVM 11中已弃用Java VM标志-XX:AggressiveOpts [请参见JDK-8199777和JDK-8199778 ]“因为其行为是不明确的。” JDK-8199778的“问题”部分进一步说明了&#xff08;我添加了重点 &#xff09;&#xff1a; AggressiveOpts已被用作实现各种实验性能功能的包罗万象的方法&#…

【渝粤教育】电大中专消费者行为学 (3)作业 题库

1.消费行为学的研究对象是市场商品交换活动中消费者各种心理现象和行为的产生、发展及其规律。主要表现在以下哪几方面&#xff08;&#xff09; A.消费活动中营销环境 B.以上选项全选 C.消费者行为的发展变化趋势 D.消费者在消费过程中的行为和规律 E.消费者在购买行为中的心理…

擦地机器人修理_自带眼睛还有嘴,喷水式擦地机器人效果实测

小时候家里大扫除时&#xff0c;我最喜欢抢着扫把扫地&#xff0c;因为扫地相对比较轻松&#xff0c;快速扫完灰尘和垃圾就能跑出去玩。而擦地板相比扫地就麻烦多了&#xff0c;大面积的地板需要蹲下来一块一块擦&#xff0c;还要来回清洗擦布&#xff0c;现在父母年龄大了&…

PoE交换机不供电了该怎么办?

交换机供电方式有很多&#xff0c;有集中供电&#xff0c;独立供电&#xff0c;220V交流电供电&#xff0c;PoE供电&#xff0c;随着不同场合的使用&#xff0c;特别是poe交换机使用非常多&#xff0c;但是出现的问题也不少。其中比较常见的就是PoE交换机供电突然不供电了&…

【渝粤教育】电大中专电大中专沟通技巧考试考核试题 (2)作业 题库

1可以通过&#xff08; &#xff09;的方法来对抗讲话时的紧张感。 A心理暗示 B自我鼓励 C运用合适的肢体语言 D以上方法均可 错误 正确答案&#xff1a;左边查询 学生答案&#xff1a;A 2以下说法正确的是&#xff08; &#xff09; A沟通要有明确的目标 B沟通不需要形成协议 …

pv实现前趋图_Excel 数据透视图实现简易交互式数据面板

美国Ebay公司成立于1995年的圣何塞&#xff0c;是一家可让全球民众上网买卖物品的线上拍卖及购物网站。本文将结合Ebay&#xff08;某类体育用品的&#xff09;在线拍卖数据&#xff0c;主要使用Excel数据透视表为工具&#xff0c;来实现简易的交互式数据面板以求对数据进行可视…

poe交换机标准与非标准的区别介绍

POE指的是在现有的以太网Cat.5布线基础架构不作任何改动的情况下&#xff0c;在为一些基于IP的终端&#xff08;如IP电话机、无线局域网接入点AP、网络摄像机等&#xff09;传输数据信号的同时&#xff0c;还能为此类设备提供直流电的技术&#xff0c;就是支持以太网供电的交换…