好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

j2ee学习笔记知识点精粹(servlet,websoket,webservice,jax-rs,ejb,jpa).doc

15页
  • 卖家[上传人]:第***
  • 文档编号:31336910
  • 上传时间:2018-02-07
  • 文档格式:DOC
  • 文档大小:575.20KB
  • / 15 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 说明:在编程中我们会在某个类、方法或变量前面加上@x,来表明这个类、方法或变量具有 x 属性1.Servlet1).Servlet 是什么?Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层2).Servlet 有以下几点优势(1).性能明显更好2).Servlet 在 Web 服务器的地址空间内执行这样它就没有必要再创建一个单独的进程来处理每个客户端请求3).Servlet 是独立于平台的,因为它们是用 Java 编写的4).服务器上的 Java 安全管理器执行了一系列限制,以保护服务器计算机上的资源因此,Servlet 是可信的5).Java 类库的全部功能对 Servlet 来说都是可用的它可以通过 sockets 和 RMI 机制与 applets、数据库或其他软件进行交互3).Servlet 架构过程为:(1) 客户端发送请求至服务器端;(2) 服务器将请求信息发送至 Servlet;(3) Servlet 生成响应内容并将其传给服务器响应内容动态生成,通常取决于客户端的请求;(4) 服务器将响应返回给客户端。

      4).servlet 生命周期(1).客户端请求该 Servlet;(2).加载 Servlet 类到内存;(3).实例化并调用 init()方法初始化该 Servlet;(4).service()(根据请求方法不同调用 doGet() 或者 doPost(),此外还有 doGet()、doPut()、doTrace() 、doDelete()、doOptions());(5).destroy()5).看一下老师 ppt 和教程(这个很不错 servlet-api.chm2.web socket(1).web socket: 是 HTML5 一种新的协议它实现了浏览器与服务器全双工通信(full-duplex)2).websocket 的优点以前我们实现推送技术,用的都是轮询,在特点的时间间隔有浏览器自动发出请求,将服务器的消息主动的拉回来,在这种情况下,我们需要不断的向服务器 发送请求,然而 HTTP request 的 header 是非常长的,里面包含的数据可能只是一个很小的值,这样会占用很多的带宽和服务器资源会占用大量的带宽和服务器资源WebSocket API 最伟大之处在于服务器和客户端可以在给定的时间范围内的任意时刻,相互推送信息。

      在建立连接之后,服务器可以主动传送数据给客户端此外,服务器与客户端之间交换的标头信息很小WebSocket 并不限于以 Ajax(或 XHR)方式通信,因为 Ajax 技术需要客户端发起请求,而 WebSocket 服务器和客户端可以彼此相互推送信息; WebSocket 的握手过程主要有一下两个步骤:1).WebSocket 客户端首先发起一个连接请求请求数据中包括服务器的 IP 和端口、以及客户端随机生成的 Key 等2).服务器端根据客户端的 key 生成密钥,并将密钥返回给客户端,握手成功由于 WebSocket 的连接本质是一个 TCP 连接,所以与传统的浏览器轮询方式比,这种方式对于数据传输的稳定性和数据量大小方面都有一定的优势而很多实验也证明在流量比较大的情况下,使用 WebSocket 也具有很大的性能优势3).如何使用 websocket(分客户端和服务器端,两个启动后保持连接才能即时通信,当然了系统性能会降低)客户端在支持 WebSocket 的浏览器中,在创建 socket 之后可以通过 onopen,onmessage,onclose 即 onerror 四个事件实现对 socket 进行响应.一个简单是示例:var wsServer = 'ws://localhost:8888/Demo'; var websocket = new WebSocket(wsServer); websocket.onopen = function (evt) { onOpen(evt) }; websocket.onclose = function (evt) { onClose(evt) }; websocket.onmessage = function (evt) { onMessage(evt) }; websocket.onerror = function (evt) { onError(evt) }; function onOpen(evt) { console.log("Connected to WebSocket server."); } function onClose(evt) { console.log("Disconnected"); } function onMessage(evt) { console.log('Retrieved data from server: ' + evt.data); } function onError(evt) { console.log('Error occured: ' + evt.data); }1).var ws = new WebSocket(“ws://localhost:8888/Demo”);申请一个 WebSocket 对象,参数是需要连接的服务器端的地址,同 http 协议使用 http://开头一样,WebSocket 协议的 URL 使用 ws://开头,另外安全的 WebSocket 协议使用 wss://开头。

      ws.send(“hello”)用于叫消息发送到服务端2).ws.onopen = function() { console.log(“open”)};当 websocket 创建成功时,即会触发 onopen 事件3).ws.onmessage = function(evt) { console.log(evt.data) };当客户端收到服务端发来的消息时,会触发 onmessage 事件,参数 evt.data 中包含 server 传输过来的数据4).ws.onclose = function(evt) { console.log(“WebSocketClosed!”); };当客户端收到服务端发送的关闭连接的请求时,触发 onclose 事件5).ws.onerror = function(evt) { console.log(“WebSocketError!”); };如果出现连接,处理,接收,发送数据失败的时候就会触发 onerror 事件我们可以看出所有的操作都是采用事件的方式触发的,这样就不会阻塞 UI,使得 UI 有更快的响应时间,得到更好的用户体验服务端这里我使用的是 tomat 7.0 和 eclipse4.2在 tomcat 下使用 websocket 首先需要导入相关的 jartomcat7 提供的与 WebSocket 相关的类均位于包 org.apache.catalina.websocket 之中( 包 org.apache.catalina.websocket 的实现包含于文件 catalina.jar 之中这里我们把 tomcat 的全部导入就行了在 build path->configure build path->librarise->add library->server runtime->apache tomcat v7.0 image同时需要 import 以下包import org.apache.catalina.websocket.MessageInbound;import org.apache.catalina.websocket.StreamInbound;import org.apache.catalina.websocket.WsOutbound;import org.apache.catalina.websocket.WebSocketServlet; 需要两个类第一个用于处理 websocket 请求第二个用于处理每一次具体的 WebSocket 任务 第一个类public class SocketServer extends WebSocketServlet {private static final long serialVersionUID = 1L;//……@Overrideprotected StreamInbound createWebSocketInbound(String arg0,HttpServletRequest arg1) {// TODO Auto-generated method stubreturn new ChatWebSocket(users);}}这个 Servlet 继承自 WebSocketServlet,实现 createWebSocketInbound 方法。

      该方法返回第二个类的实例第二个类(传统的非注解开发)public class ChatWebSocket extends MessageInbound {@Overrideprotected void onTextMessage(CharBuffer message) throws IOException {}@Overrideprotected void onOpen(WsOutbound outbound) {}@Overrideprotected void onClose(int status) { }@Overrideprotected void onBinaryMessage(ByteBuffer arg0) throws IOException {}//其余略} //文本消息响应protected void onTextMessage(CharBuffer message) throws IOException { }//二进制消息响应protected void onBinaryMessage(ByteBuffer arg0) throws IOException { }//sendObject(envelope)//数据流getSendStream() – Java InputStreamgetSendWriter() – Java Writer//建立连接的触发的事件protected void onOpen(WsOutbound outbound) { }//关闭连接时触发的事件 protected void onClose(int status) { }注解开发:在类上加@ServerEndpoint,在每个方法上面写对应的注解就可以了@WebSocketEndpointClass level annotation for websocket server endpoint@WebSocketClient Class level annotation for websocket client endpoint@WebSocketOpen Method level annotation signifies a method to be called whenever a new client connects to this endpoint@WebSocketCloseMethod level annotation signifies a method to be called whenever a new client is about to disconnects from this endpoint@WebS。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.