亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

使用hessian+protocol buffer+easyUI綜合案例--登陸

2019-11-15 00:53:16
字體:
來源:轉載
供稿:網友
使用hessian+PRotocol buffer+easyUI綜合案例--登陸

首先先簡單介紹下hessian ,protocol buffer, easyUI框架

hessian:

Hessian是一個輕量級的remoting on http工具,采用的是Binary RPC協議,所以它很適合于發送二進制數據,同時又具有防火墻穿透能力。Hessian一般是通過Web應用來提供服務,因此非常類似于平時我們用的 WebService。只是它不使用SOAP協議,但相比webservice而言更簡單、快捷。Hessian官網:http://hessian.caucho.com/

Hessian 可通過Servlet提供遠程服務,需要將匹配某個模式的請求映射到Hessian服務。也可Spring框架整合,通過它的 DispatcherServlet可以完成該功能,DispatcherServlet可將匹配模式的請求轉發到Hessian服務。Hessian的server端提供一個servlet基類, 用來處理發送的請求,而Hessian的這個遠程過程調用,完全使用動態代理來實現的,,建議采用面向接口編程,Hessian服務通過接口暴露。

Hessian處理過程示意圖:客戶端——>序列化寫到輸出流——>遠程方法(服務器端)——>序列化寫到輸出流 ——>客戶端讀取輸入流——>輸出結果

使用hessian所要下載的包:hessian-4.0.37.jar;

protocol buffer:

protocolbuffer(以下簡稱PB)是google 的一種數據交換的格式,它獨立于語言,獨立于平臺。google 提供了三種語言的實現:java、c++和python,每一種實現都包含了相應語言的編譯器以及庫文件。由于它是一種二進制的格式,比使用xml進行數據交換快許多??梢园阉糜诜植际綉弥g的數據通信或者異構環境下的數據交換。作為一種效率和兼容性都很優秀的二進制數據傳輸格式,可以用于諸如網絡傳輸、配置文件、數據存儲等諸多領域。

EasyUI:

jQuery EasyUI是一組基于jQuery的UI插件集合體,而jQuery EasyUI的目標就是幫助web開發者更輕松的打造出功能豐富并且美觀的UI界面。開發者不需要編寫復雜的javascript,也不需要對CSS樣式有深入的了解,開發者需要了解的只有一些簡單的html標簽。

案例如下:

需求介紹:

實現Server1上的用戶賬號可在其他應用(Server2)上登錄的功能,達到一號多用和用戶數據共享的目的。

主要功能點如下:

①用戶登錄

②顯示用戶信息

登錄流程

①用戶通過瀏覽器訪問Server2的登陸界面。

②用戶輸入賬號密碼,點擊登陸按鈕。

③Server2收到用戶的登錄請求,調用Server1的賬號驗證接口。

④Server1驗證Server2發送過來的賬號信息(用戶名、密碼)后,返回驗證結果。

⑤Server2收到并處理Server1返回的驗證結果,再將相關信息返回給用戶(提示登錄失敗或者顯示用戶信息)。

技術需求

①所有網頁界面均采用easyui編寫。

②服務器之間(Server1和Server2)的通信基于protobuf和 hessian(protobuf用于數據傳輸,hessian用于遠程接口調用)。

③hessian遠程接口方法的入參和返回值類型均為字節數組。

Server2調用Server1的接口時,先構造protobuf對象,將屬性填充完畢后,將該對象序列化得到的字節數組填入接口方法傳給Server1;Server1收到該請求,將Server2傳過來的字節數組反序列化成protobuf對象,獲取其中的屬性值(比如用戶帳號、密碼),處理完成后,將處理結果填入protobuf對象,并返回該對象的序列化結果(字節數組)。

流程圖:

具體實現:

先下載所必須的包 hessioan-4.0.37.jar,必須安裝protocol buffer,下載easyUI包

首先先寫服務端:

創建web項目hessianServer

目錄如下:

在protocol安裝目錄下的examples下創建user.proto文件

package com.hessian.model;option java_package="com.hessian.model";option java_outer_classname="UserProtos";message User{    required string name=1;    required string passWord=2;    required string birth=3;    optional string email = 4;    optional int64 phone=5;}

進入XXX/protobuf-2.4.1/examples目錄,可以看到user.proto文件,執行命令protoc --java_out=. user.proto命令,如果生成com文件夾并在最終生成UserProtos類。

將UserProtos.java和XXX/protobuf-2.4.1/java/target目錄下的protobuf-java-2.4.1.jar,hessioan-4.0.37.jar導入到web項目中

下面編寫服務端代碼

IService:

package com.hessian.service;public interface IService {        public Boolean login(byte[] user);    }

ServiceImpl

package com.hessian.service.impl;import java.io.ByteArrayInputStream;import java.io.IOException;import java.io.ObjectInputStream;import com.google.protobuf.InvalidProtocolBufferException;import com.hessian.model.UserProtos;import com.hessian.model.UserProtos.User;import com.hessian.service.IService;public class ServiceImpl implements IService {       public Boolean login(byte[] user) {            UserProtos.User use=null;        try {             use=UserProtos.User.parseFrom(user); //將字節數組轉化為對象            System.out.println(use);                    } catch (InvalidProtocolBufferException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }                //進行用戶名,密碼驗證        if(use.getName().equals("oumyye")&&use.getPassword().equals("oumyye")){        return true;        }        else {            return false;        }    }  }

web.xml配置

<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">    <welcome-file-list>        <welcome-file>index.jsp</welcome-file>    </welcome-file-list>    <servlet>        <!-- 配置 HessianServlet,Servlet的名字隨便配置,例如這里配置成ServiceServlet-->        <servlet-name>ServiceServlet</servlet-name>        <servlet-class>com.caucho.hessian.server.HessianServlet</servlet-class>                <!-- 配置接口的具體實現類 -->        <init-param>            <param-name>service-class</param-name>            <param-value>com.hessian.service.impl.ServiceImpl</param-value>        </init-param>    </servlet>    <!-- 映射 HessianServlet的訪問URL地址-->    <servlet-mapping>        <servlet-name>ServiceServlet</servlet-name>        <url-pattern>/ServiceServlet</url-pattern>    </servlet-mapping></web-app>

到此服務service1編寫完成

進入http://localhost:8080/HessianServer/ServiceServlet出現

則編寫成功,將src下的代碼打包成hessian-common.jar文件。

下面進行service2客戶端的編寫loginClient

首先也要導入相關jar包,及目錄如下:

編寫前端代碼:

index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE html><html><head>    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">    <title>ValidateBox - jQuery EasyUI Demo</title>    <link rel="stylesheet" type="text/css" href="themes/default/easyui.css">    <link rel="stylesheet" type="text/css" href="themes/icon.css">    <link rel="stylesheet" type="text/css" href="demo.css">    <style type="text/css">        input,textarea{            width:200px;            border:1px solid #ccc;            padding:2px;        }    </style>    <script type="text/Javascript" src="jquery/jquery-1.7.2.min.js"></script>    <script type="text/javascript" src="jquery/jquery.easyui.min.js"></script></head><body>    <h2>登陸</h2>    ${info}    <div>    <form action="Login" method="post">    <table>        <tr>            <td>用戶名:</td>            <td><input class="easyui-validatebox" data-options="required:true,validType:'length[1,3]'" name="name"></td>        </tr>        <tr>            <td>密碼:</td>            <td><input class="easyui-validatebox" data-options="validType:'password'" name="password"></td>        </tr>        </table>        <input type="submit"  value="登陸" style="width: 50px">    </form>        </div>        </body>        </html>

success.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE html><html><head>    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">    <title>ValidateBox - jQuery EasyUI Demo</title>    <link rel="stylesheet" type="text/css" href="themes/default/easyui.css">    <link rel="stylesheet" type="text/css" href="themes/icon.css">    <link rel="stylesheet" type="text/css" href="demo.css">    <style type="text/css">        input,textarea{            width:200px;            border:1px solid #ccc;            padding:2px;        }    </style>    <script type="text/javascript" src="jquery/jquery-1.7.2.min.js"></script>    <script type="text/javascript" src="jquery/jquery.easyui.min.js"></script></head><body>    <h2>登陸成功</h2>        ${name}            </body>        </html>

然后編寫servlet代碼

package com.hessian.servlet;import java.io.IOException;import javax.servlet.RequestDispatcher;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.caucho.hessian.client.HessianProxyFactory;import com.hessian.model.UserProtos.User.Builder;import com.hessian.service.IService;public class loginServlet extends HttpServlet {    /**     *      */    private static final long serialVersionUID = 1L;     public void doGet(HttpServletRequest request, HttpServletResponse response)                throws ServletException, IOException {            doPost(request, response);        }        public void doPost(HttpServletRequest request, HttpServletResponse response)                throws ServletException, IOException {                        String url = "http://192.168.2.108:8080/HessianServer/ServiceServlet";            HessianProxyFactory factory = new HessianProxyFactory();            IService service = (IService) factory.create(IService.class, url);//創建IService接口的實例對象            com.hessian.model.UserProtos.User.Builder ump=com.hessian.model.UserProtos.User.newBuilder();            ump.setName(request.getParameter("name"));            ump.setPassword(request.getParameter("password"));            ump.setEmail("54654@QQ.com");            ump.setBirth("19931223");            ump.setPhone(12313213);            com.hessian.model.UserProtos.User info=ump.build();            byte[] user=info.toByteArray();            if(service.login(user)){                    RequestDispatcher dispatcher = request.getRequestDispatcher("success.jsp");                    dispatcher .forward(request, response);                }else {                    request.setAttribute("info", "登陸失敗!");                    RequestDispatcher dispatcher = request.getRequestDispatcher("index.jsp");                    dispatcher .forward(request, response);                }        }        }

編寫web.xml

<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">    <welcome-file-list>        <welcome-file>index.jsp</welcome-file>    </welcome-file-list>    <servlet>    <servlet-name>Login</servlet-name>    <servlet-class>com.hessian.servlet.loginServlet</servlet-class>    </servlet>        <servlet-mapping>        <servlet-name>Login</servlet-name>        <url-pattern>/Login</url-pattern>        </servlet-mapping></web-app>

這樣整個代碼就算編寫完成了,下面進行測試:

http://localhost:8080/loginClient/ 可進行登陸,當用戶名密碼為oumyye時可登陸成功,跳轉success.jsp頁面


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲一二在线观看| 欧美专区国产专区| 亚洲性日韩精品一区二区| 久久99精品久久久久久琪琪| 亚洲男人av电影| 4444欧美成人kkkk| 欧美视频在线观看 亚洲欧| 精品国产91久久久久久| 欧美一级成年大片在线观看| 欧美精品在线免费观看| 另类视频在线观看| 神马久久桃色视频| 欧洲亚洲免费视频| 91免费综合在线| 亚洲电影第1页| 欧美精品videofree1080p| 97视频在线观看免费| 91久久综合亚洲鲁鲁五月天| 日韩综合视频在线观看| 日韩av高清不卡| 51视频国产精品一区二区| 国产一区二区在线免费视频| 欧美成人精品h版在线观看| 91精品国产免费久久久久久| 亚洲色图av在线| 亚洲精品第一页| 久久亚洲精品毛片| 久久亚洲春色中文字幕| 日本久久久久久久久久久| 国产精品吹潮在线观看| 91成人在线观看国产| 97香蕉超级碰碰久久免费的优势| 欧美黄色免费网站| 欧美日韩另类字幕中文| 国产亚洲美女精品久久久| 日韩成人网免费视频| 国产一区二区三区精品久久久| 国产精品久久久久aaaa九色| 成人h猎奇视频网站| 亚洲成人av在线播放| 成人黄色生活片| 韩曰欧美视频免费观看| 在线播放亚洲激情| 国产精品福利在线观看网址| 国产91精品视频在线观看| 亚洲国产精品999| 久久成人人人人精品欧| 亚洲国产高清自拍| 美日韩精品免费视频| 97视频在线观看免费高清完整版在线观看| 欧美激情亚洲视频| 中文字幕九色91在线| 国产在线播放不卡| 亚洲国产成人精品女人久久久| 亚洲视频在线观看视频| 国产精品吴梦梦| 国产精品久久久久久久久久久久久| 亚洲一区二区三区777| 欧美成人精品一区二区| 日本三级久久久| 国产小视频国产精品| 欧美日韩亚洲视频一区| 黑人极品videos精品欧美裸| 欧美孕妇与黑人孕交| 亚洲国产三级网| 国产精品久久久久7777婷婷| 欧美日韩在线视频观看| 欧美色视频日本版| 欧美成人午夜免费视在线看片| 韩国国内大量揄拍精品视频| 国产精品 欧美在线| 亚洲综合最新在线| 国产欧美久久久久久| 亚洲欧洲日韩国产| 精品久久久久久国产91| 91九色综合久久| 精品magnet| 国产网站欧美日韩免费精品在线观看| 国产精品免费在线免费| 青青草99啪国产免费| 久久男人资源视频| 亚洲精品国产精品国自产在线| 欧美黑人极品猛少妇色xxxxx| 欧美视频免费在线观看| 日本精品免费一区二区三区| 国产精品欧美日韩一区二区| 中文字幕视频一区二区在线有码| 国产精品网址在线| 久久av资源网站| 国产精品精品久久久| 亚洲一区亚洲二区| 亚洲一区二区精品| 国产一区红桃视频| 91免费的视频在线播放| 欧美日韩国产精品一区| 欧美自拍视频在线观看| 久久精品视频99| 欧美精品videofree1080p| 日韩激情av在线播放| 成人福利免费观看| 在线播放日韩av| 96国产粉嫩美女| 国产精品日日摸夜夜添夜夜av| 91精品国产网站| 欧美成人sm免费视频| 欧美在线一级视频| 91免费精品国偷自产在线| 欧美激情一区二区三区成人| 欧美激情亚洲一区| 日韩美女毛茸茸| 奇门遁甲1982国语版免费观看高清| 欧美老女人bb| 91av在线看| 亚洲第一精品自拍| 欧洲日本亚洲国产区| 亚洲精品理论电影| 国产成人精品免高潮费视频| 日韩成人在线观看| 亚洲欧美日韩精品久久亚洲区| 欧美日韩精品中文字幕| 18一19gay欧美视频网站| 俺去了亚洲欧美日韩| 亚洲综合社区网| 久久精品国产清自在天天线| 国产亚洲欧美aaaa| 一区二区三区无码高清视频| 欧美视频在线看| 97精品国产97久久久久久免费| 亚洲欧美制服中文字幕| 国产精品永久免费在线| 欧美日韩裸体免费视频| 97成人在线视频| 中文字幕综合在线| 亚洲午夜未删减在线观看| 国产成人高清激情视频在线观看| 国产精品日本精品| 精品久久久久久久久久| 国产aⅴ夜夜欢一区二区三区| 日韩av中文字幕在线免费观看| 日韩在线精品一区| 97国产在线视频| 国产精品久久久久久影视| 久久久久久国产精品美女| 一区二区三区亚洲| 国产精品国产亚洲伊人久久| 欧美成人激情图片网| 亚洲精品日韩欧美| 国产精品盗摄久久久| 成人激情视频在线播放| 国产亚洲欧美另类中文| 精品国产一区二区三区久久久狼| 中文字幕在线观看日韩| 91成人免费观看网站| 欧美黄色片视频| 91精品国产99久久久久久| 欧美俄罗斯乱妇| 97激碰免费视频| 久久男人资源视频| 国产精品中文字幕在线观看| 91极品视频在线| 怡红院精品视频| 在线日韩精品视频| 成人精品久久一区二区三区| 欧美刺激性大交免费视频|