Apache Mina的学习应用(二)

  继续上篇文章

 在注册自定义协议的工厂的实现类:通过继承MINA的 DemuxingProtocolCodecFactory实现自定义协议的编码的类。

消息结果的:
package cn.com.unutrip.java.opensource.mina.sumup.codec;
import org.apache.mina.core.buffer.IoBuffer;
import org.apache.mina.core.session.IoSession;
import org.apache.mina.filter.codec.ProtocolDecoderOutput;
import cn.com.unutrip.java.opensource.mina.sumup.message.AbstractMessage;
import cn.com.unutrip.java.opensource.mina.sumup.message.ResultMessage;
import static cn.com.unutrip.java.opensource.mina.sumup.codec.Constants.RESULT;
import static cn.com.unutrip.java.opensource.mina.sumup.codec.Constants.RESULT_CODE_LEN;
/**
 * 
 * @author longgangbai
 *
 */
public class ResultMessageDecoder extends AbstractMessageDecoder{
     private  int code;
     private boolean readCode;
 
     public ResultMessageDecoder(){
         super(Constants.RESULT);
     }
     /**
      * 解析消息的body体的信息
      * @param session
      * @param in
      * @return
      */
     protected  AbstractMessage decodeBody(IoSession session ,IoBuffer in)
     {
   if(!readCode)
   {
      if(in.remaining()<RESULT)
      {
   return null;
      }    
      code=in.getShort();
      readCode=true;
   }
   if(code==Constants.RESULT_OK)
   {
         if(in.remaining()<RESULT_CODE_LEN)
         {
              return null;
         }
         ResultMessage m=new ResultMessage();
         m.setOk(true);
         m.setValue(in.getInt());
         readCode=false;
         return m;
   }else{
       ResultMessage m=new ResultMessage();
         m.setOk(false);
         readCode=false;
         return m;
   }
     }
    @Override
    public void finishDecode(IoSession arg0, ProtocolDecoderOutput arg1)
     throws Exception {
    }
}
package cn.com.unutrip.java.opensource.mina.sumup.codec;
import org.apache.mina.core.buffer.IoBuffer;
import org.apache.mina.core.session.IoSession;
import cn.com.unutrip.java.opensource.mina.sumup.message.ResultMessage;
/**
 * 加密消息头和消息的体的信息
 * @author longgangbai
 *
 * @param <T>
 */
public  class ResultMessageEncoder<T extends ResultMessage> extends  AbstractMessageEncoder<T> {
      public ResultMessageEncoder(){
   super(Constants.RESULT);
      }
     
      /**
       * 解析消息的体的方法的
       * @param session
       * @param message
       * @param out
       */
      protected  void encodeBody(IoSession session ,T message ,IoBuffer out)
      {
    if(message.isOk())
    {
        out.putShort((short)Constants.RESULT_OK);
        out.putInt(message.getValue());
    }else{
        out.putShort((short)Constants.RESULT_ERROR);
    }
      }
      /**
       * 
       * @throws Exception
       */
      public void dispose()throws Exception{}
}
 
package cn.com.unutrip.java.opensource.mina.sumup.codec;
/**
 * 定义解析的常量接口
 * @author longgangbai
 *
 */
public interface Constants {
         public static final int TYPE_LEN = 2;
         public static final int SEQUENCE_LEN = 4;
         public static final int HEADER_LEN = TYPE_LEN + SEQUENCE_LEN;
         public static final int BODY_LEN = 12;
         public static final int RESULT = 0;
         public static final int ADD = 1;
         public static final int RESULT_CODE_LEN = 2;
         public static final int RESULT_VALUE_LEN = 4;
         public static final int ADD_BODY_LEN = 4;
         public static final int RESULT_OK = 0;
         public static final int RESULT_ERROR = 1;
}
 
 
 
package cn.com.unutrip.java.opensource.mina.sumup.codec;
import org.apache.mina.filter.codec.demux.DemuxingProtocolCodecFactory;
import cn.com.unutrip.java.opensource.mina.sumup.message.AddMessage;
import cn.com.unutrip.java.opensource.mina.sumup.message.ResultMessage;
/**
 * 加密解密的解析工厂类
 * @author longgangbai
 *
 */
public class SumUpProtocolCodecFactory extends DemuxingProtocolCodecFactory {
   public SumUpProtocolCodecFactory(boolean server)
   {
       //注册服务端的操作
// 备注客户端和服务端的解析和加密的相反的消息体
       if(server)
       {
     super.addMessageDecoder(AddMessageDecoder.class);
     super.addMessageEncoder(ResultMessage.class, ResultMessageEncoder.class);
       //注册客户端的操作
       }else{
    super.addMessageEncoder(AddMessage.class,AddMessageEncoder.class);
    super.addMessageDecoder(ResultMessageDecoder.class);
       }
   }
}
消息实体类:
package cn.com.unutrip.java.opensource.mina.sumup.message;
import java.io.Serializable;
/**
 * 各种信息的基类
 * @author longgangbai
 *
 */
public abstract class AbstractMessage implements Serializable {
    private int sequence;
    public int getSequence() {
        return sequence;
    }
    
    public void setSequence(int sequence) {
        this.sequence = sequence;
    }
}
package cn.com.unutrip.java.opensource.mina.sumup.message;
/**
 * 发送信息的模型
 * @author longgangbai
 *
 */
public class AddMessage  extends AbstractMessage {
    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    private int value;
    public int getValue() {
        return value;
    }
    
    public void setValue(int value) {
        this.value = value;
    }
    @Override
    public String toString(){
   return getSequence()+"ADD ( "+value+")";
    }
  
}
package cn.com.unutrip.java.opensource.mina.sumup.message;
/**
 * 存储结构的模型的信息
 * @author longgangbai
 *
 */
public class ResultMessage extends AbstractMessage {
    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    private boolean ok;
    private int value;
    public boolean isOk() {
        return ok;
    }
    public void setOk(boolean ok) {
        this.ok = ok;
    }
    public int getValue() {
        return value;
    }
    public void setValue(int value) {
        this.value = value;
    }
    
    @Override
    public String toString(){
 if(ok){
     return getSequence()+" :RESULT ( " +value+")";
 }else{
     return  getSequence()+" :RESULT ( ERROR)";
 }
    }
  
}

 

文章尚未写完,请关注下文。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
系统根据B/S,即所谓的电脑浏览器/网络服务器方式,运用Java技术性,挑选MySQL作为后台系统。系统主要包含对客服聊天管理、字典表管理、公告信息管理、金融工具管理、金融工具收藏管理、金融工具银行卡管理、借款管理、理财产品管理、理财产品收藏管理、理财产品银行卡管理、理财银行卡信息管理、银行卡管理、存款管理、银行卡记录管理、取款管理、转账管理、用户管理、员工管理等功能模块。 文中重点介绍了银行管理的专业技术发展背景和发展状况,随后遵照软件传统式研发流程,最先挑选适用思维和语言软件开发平台,依据需求分析报告模块和设计数据库结构,再根据系统功能模块的设计制作系统功能模块图、流程表和E-R图。随后设计架构以及编写代码,并实现系统能模块。最终基本完成系统检测和功能测试。结果显示,该系统能够实现所需要的作用,工作状态没有明显缺陷。 系统登录功能是程序必不可少的功能,在登录页面必填的数据有两项,一项就是账号,另一项数据就是密码,当管理员正确填写并提交这者数据之后,管理员就可以进入系统后台功能操作区。进入银行卡列表,管理员可以进行查看列表、模糊搜索以及相关维护等操作。用户进入系统可以查看公告和模糊搜索公告信息、也可以进行公告维护操作。理财产品管理页面,管理员可以进行查看列表、模糊搜索以及相关维护等操作。产品类型管理页面,此页面提供给管理员的功能有:新增产品类型,修改产品类型,删除产品类型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值