当前位置: 首页 > news >正文

可以做电算化的网站免费模板网站知乎

可以做电算化的网站,免费模板网站知乎,完整网站开发需要多久,十堰今天刚刚发生新闻概述 本文介绍了如何根据Tomcat给出的websocket实例#xff0c;通过对实例的学习#xff0c;定制自己基于websocket的应用。 环境及版本#xff1a; Ubuntu 22.04.4 LTSApache Tomcat/10.1.20openjdk 11.0.23 2024-04-16浏览器#xff1a;Chrome 相关资源及链接 Class…概述 本文介绍了如何根据Tomcat给出的websocket实例通过对实例的学习定制自己基于websocket的应用。 环境及版本 Ubuntu 22.04.4 LTSApache Tomcat/10.1.20openjdk 11.0.23 2024-04-16浏览器Chrome 相关资源及链接 Class Loader How-To Apache Tomcat 11 (11.0.0-M20) - Class Loader How-To 推荐几篇本站内介绍Websocket原理及tomcat附带的实例的文章可作为参考 Websocket原理-CSDN博客 看完让你彻底理解 WebSocket 原理_websocket原理-CSDN博客 Tomcat实现Web Socket_tomcat 9 wss服务配置-CSDN博客 Tomcat提供的websocket实例 Tomcat安装完成后给出的Examples中包括了有关websocket的例子。 如上图点击‘Examples’进入如下界面 继续点击‘WebSocket Examples’进入如下界面 点击‘Echo example’进入如下界面 从界面可以看出Tomcat提供以下三种方式与服务器建立websocket双向通信 programmatic APIannotation API (basic)annotation API (stream) programmatic编程式即编写一个Java类继承javax.websocket.Endpoint根据tomcat及openjdk的版本不同或继承jakarta.websocket.Endpoint本文中为jakarta并实现它的onOpen、onClose和onError等方法。 annotation注解式实现一个业务类并给其添加websocket相关的注解通过ServerEndpoint(...)注解表明当前业务类是已经实现了WebSocket规范的Endpoint。根据上面tomcat给出的实例界面显示注解式又分为basic和stream两种模式。 本文不对上述三种方式展开详细讨论。 点击上面tomcat界面的三种websocket的实现方式下方的编辑框中会同步显示将实际在代码中用到的websocket URL例如点击‘annotation API (basic)’下面编辑框的内容同步更新为‘ws://host/examples/websocket/echoAnnotation’其中host为服务器的URL含端口以下均使用‘127.0.0.1:8080’作为默认值例如 ws://127.0.0.1:8080/examples/websocket/echoAnnotation 客户端浏览器将使用该URL串作为目标websocket服务器地址。 点击‘Connect’按钮再点击‘Echo message’按钮界面如下 依葫芦画瓢 now我们照着tomcat给出的实例依葫芦画瓢建立自己的websocket应用并试图在这一过程中逐步理解tomcat的websocket实现原理以及相关的配置。 新建一个自己的webapp例如命名为myws 在目录‘opt/tomcat/webapps’新建目录‘myws’将examples实例下‘websocket’目录及其文件拷贝到‘myws’目录下在‘myws’目录下新建目录‘WEB-INF’进入新建的‘WEB-INF’目录继续创建目录‘classes’此目录为本文涉及的tomcat 11加载Java类的默认目录将examples实例下的‘WEB-INF/classes/websocket’目录及其文件拷贝到myws应用下新建的‘classes’目录。 依葫芦画瓢文件拷贝暂时到此。 在新建的myws应用根目录下新建一个index.html文件内容如下 html langzh-CN head meta charsetUTF-8 title项目测试首页列表/title style   body {     background-color: lightblue;   }   h1 {     text-align: center;   }   div.exam_list {     font-family: verdana;     font-size: 18px;     margin-left: 100px;     margin-top:5px;   } /style /head body h1tomcat websocket应用学习/h1 p div classexam_listlia href/myws/websocket/index.xhtmlexamples实例学习/a/li/div /p /body /html 启动浏览器输入URL例如http://hostname/myws出现如下界面 点击页面链接进入如下界面此界面与之前的完全相同 点击‘Echo example’进入如下界面此界面与之前的完全相同 分别点击tomcat下websocket的三种通信实现方式下方编辑框的链接URI为 ws://127.0.0.1:8080/examples/websocket/echoProgrammaticws://127.0.0.1:8080/examples/websocket/echoAnnotationws://127.0.0.1:8080/examples/websocket/echoStreamAnnotation 点击页面其他按钮并操作一切正常注意观察三个URL其仍然连接的是安装包默认提供的examples项目上了故一切正常。 打开并编辑文件‘echo.xhtml’注意如下代码行 div     div idconnect-container         div             spanConnect to service implemented using:/span             br/             !-- echo example using new programmatic API on the server side --             input idradio1 typeradio namegroup1 value/examples/websocket/echoProgrammatic                    onclickupdateTarget(this.value);/ label forradio1programmatic API/label             br/             !-- echo example using new annotation API on the server side --             input idradio2 typeradio namegroup1 value/examples/websocket/echoAnnotation                    onclickupdateTarget(this.value);/ label forradio2annotation API (basic)/label             br/             !-- echo example using new annotation API on the server side --             input idradio3 typeradio namegroup1 value/examples/websocket/echoStreamAnnotation                    onclickupdateTarget(this.value);/ label forradio3annotation API (stream)/label             br/             !-- echo example using new annotation API on the server side --             !-- Disabled by default --             !--             input idradio4 typeradio namegroup1 value/examples/websocket/echoAsyncAnnotation                    οnclickupdateTarget(this.value);/ label forradio4annotation API (async)/label             --         /div 根据代码如前所述每当用户点击了不同的通信方式页面会自动更新websocket连接其中实例代码还注释掉了第四种方式‘AsynAnntation’。 将上述代码中高亮的‘examples’替换为本项目名称‘myws’。刷新页面点击选择不同的通信方式确认编辑框中websocket连接URL更新。 回到页面进行操作OK!一切正常 温馨提示重要的问题说三遍在测试页面之前务必通过tomcat的管理页面重新启动web应用界面如下 点击‘停止’按钮再点击‘启动’按钮。 不知道如何配置管理页面的可直接重启tomcat服务。 重要的事情说三遍一定记得重启应用 tomcat三种websocket通信方式测试 一个小测试 查看目录‘myws/WEB-INF/classes/websocket’除了四个子目录注意该目录下有两个文件一个是‘ExamplesConfig.java’另一个是对应的class文件。 从项目目录中删除该两个文件重新启动web应用再次进入Echo example界面同样进行三种方式的通信测试其中后两种基础注解式/annotation API (basic)和流式注解式/annotation API (stream)正常第一种‘编程式’连接失败连接失败界面如下。 查看目录‘myws/WEB-INF/classes/websocket/echo’该目录下文件列表如下图。 再次回顾前文提到的三种通信方式的URL如下 ws://127.0.0.1:8080/examples/websocket/echoProgrammaticws://127.0.0.1:8080/examples/websocket/echoAnnotationws://127.0.0.1:8080/examples/websocket/echoStreamAnnotation 查看文件EchoAnnotation.java在类定义之前有一处申明代码如下 注解式下通过‘ServerEndpoint’添加注解后在项目网站启动时tomcat服务会自动扫描WEB-INF/calsses目录下java类并将注解类与ws服务关联。 查看文件EchoStreamAnnotation.java同样有一处类似的申明如下 在EchoEndpoint.java文件中没有发现类似的注解。 所以在删除了文件ExampleConfig并重新启动应用后注解式的方式依然有效编程式的方式连接失败。 重新拷贝ExampleConfig.java/.class到应用目录查看ExampleConfig.java内容如下 package websocket; import java.util.HashSet; import java.util.Set; import jakarta.websocket.Endpoint; import jakarta.websocket.server.ServerApplicationConfig; import jakarta.websocket.server.ServerEndpointConfig; import websocket.drawboard.DrawboardEndpoint; import websocket.echo.EchoEndpoint; public class ExamplesConfig implements ServerApplicationConfig {     Override     public SetServerEndpointConfig getEndpointConfigs(             SetClass? extends Endpoint scanned) {         SetServerEndpointConfig result new HashSet();         if (scanned.contains(EchoEndpoint.class)) {             result.add(ServerEndpointConfig.Builder.create(                     EchoEndpoint.class,                     /websocket/echoProgrammatic).build());         }         if (scanned.contains(DrawboardEndpoint.class)) {             result.add(ServerEndpointConfig.Builder.create(                     DrawboardEndpoint.class,                     /websocket/drawboard).build());         }         return result;     }     Override     public SetClass? getAnnotatedEndpointClasses(SetClass? scanned) {         // Deploy all WebSocket endpoints defined by annotations in the examples         // web application. Filter out all others to avoid issues when running         // tests on Gump         SetClass? results new HashSet();         for (Class? clazz : scanned) {             if (clazz.getPackage().getName().startsWith(websocket.)) {                 results.add(clazz);             }         }         return results;     } } 首先类ExampleConfig继承自ServerApplicationConfig该类会执行目录自动扫描对于目录及子目录下所有继承自‘Endpoint’的类进行处理并分别映射了两个ws服务 /websocket/echoProgrammatic/websocket/drawboard 其中第一个正是echo测试中的第一种基于编程式的通信方式所对应的服务第二个为多人协同画板应用的实例服务对应的注册名称。 对于所有注解式实现的websocket服务类示例代码中进行了过滤操作即任何不是以‘websocket.’开头的服务都将被屏蔽。上面的实际测试中删除ExamplesConfig注解式的不需要代码中的add(clazz)操作也可以正常工作。 另外在自己的应用中可将配置文件/类ExamplesConfig更改为项目对应的名称例如本例中更改为MywsConfig.java/class记得类名与文件一致重新编译.java并重启web应用。 记录一下ubuntu下成功编译MywsConfig.java的命令好记性不如烂笔头主要是指定import的相关库/类的路径如下 javac -cp /opt/tomcat/webapps/myws/WEB-INF/classes:/opt/tomcat/lib/* MywsConfig.java 其他 Tomcat有关websocket实现的包在目录$CATALINA_HOME/lib$CATALINA_HOME的默认安装目录为‘/opt/tomcat’下包含三个文件如下图 本文未涉及注解式以及编程式websocket通信的各接口的分析相关文章可在站内搜索。
http://www.dnsts.com.cn/news/104569.html

相关文章:

  • 重庆建设工程造价管理协会网站性价比高的网站建设
  • 礼品册兑换 网站建设智慧团建在线登录
  • 手机做网站的网站不需要丢链接可以百度收录的网站
  • ps企业站网站做多大的网页编辑简单分为网页美工编辑和
  • 成都网站建设模版国外做滑板网站
  • 网站备案帐号是什么意思the7企业中英文wordpress模板
  • 网站建设看什么书crm系统开发
  • 找哪些公司做网站浙江新手网络推广
  • 常州网站支付通道建设网站开发和ipv6
  • 做网站6000左右的电脑wordpress无刷新分页
  • 怎样免费做彩票网站珠宝网站模板
  • 专业建站网站服务网站上线前要做哪些准备
  • 网站做百度竞价厦门模板建站哪家好
  • 网站建设考虑的因素茶叶网站建设策划书
  • 昆山做网站的那家好哈尔滨招标信息网官网
  • 专业的集团网站开发开发动漫设计难不难学
  • 宝安公司免费网站建设wordpress搭建软件下载
  • 想做一个网站平台怎么做的七牛云建网站
  • 广告网站制作多少钱常州建站优化
  • 长春火车站现在正常通车吗深圳响应式网站开发
  • 大学生兼职网站设计论文官方网站建设银行信用卡
  • 小说网站建设方案书海南综合网站
  • 攻击网站步骤正能量不良网站推荐2020
  • 石家庄专业做网站注册电气工程师报考条件
  • 深圳网站建设合同范本买奢侈品代工厂做的产品的网站
  • 织梦网站上传保存文档a wordpress
  • 做网站保存什么格式最好网站缓存优化怎么做
  • 手机网站外链公司网站开发费用济南兴田德润评价
  • 商丘做网站sqlongliqi医疗器械做网站到哪里先备案
  • 做企业网站织梦和wordpress哪个好常州中小企业网站制作