• Jkas
  • 首页
  • 开发指南
  • 在线文档
  • 下载文档
  • JAVA进阶
  • 关于

    关于于Jkas

  •     |--版本Version

    版本介绍

  • 入门

    一、Jkas包结构

    二、目录结构

    三、如何开始

  • 配置

    一、环境要求

    二、框架配置文件

    三、web.xml配置

    四、数据库连接池配置

  • 基本

    一、系统基本函数

    二、XML操作

    三、ini文件读写

    四、获取系统信息

  • 文件

    一、文件读取

    二、文件复制

    三、文件移动

    四、文件写入

    五、文件或目录删除

    六、其它文件操作

  • 图片

    一、生成缩略图

    二、图片加水印

  • 上传

    文件上传

  • 网络
  •     |--HTTP

    一、GET请求

    二、POST请求

    三、下载文件

  •     |--SOCKET

    一、SOCKET请求

  • 邮件

    一、邮件发送

  • 控制
  •     |--基础入门

    一、控制器编码步骤

  •     |--专用方法

    1、系统方法

    2、用户请求

    3、session

    4、cookie

    5、语言获取

    6、url编码

    7、URL重定向

    8、资源引入

  • 模型

    如何开始?

  •     |--查询

    一、简单查询

    二、简化查询

    三、另类查询

    四、分页

  •     |--新增

    一、简单新增

    二、简化新增

  •     |--更新

    一、简单更新

    二、简化更新

  •     |--删除

    一、简单删除

    二、简化删除

  •     |--预处理

    一、查询

    二、插入

    三、更新

    四、删除

    五、批量处理

  •     |--批量处理

    一、批量新增

    二、批量更新

    三、批量删除

  •     |--存储过程

    赋予权限

    一、方法函数

    二、存储过程

  •     |--事务处理

    操作步骤

  • 视图

    一、初始化设置

    二、变量赋值

    三,渲染模板

    四、渲染字符串

    五、模板语法

  • 缓存

    注意事项

    一、缓存读取

    二、缓存写入

    三、缓存删除

    四、缓存清空

  • 语言

    语言相关操作

  • 工具
  •     |--加解密

    1、MD5

    2、SHA

    3、RSA

    4、DES

    5、AES

    6、ECDSA

  •     |--编码

    1、Base64

    2、JSON

    3、XML&Map

    4、url编码

  •     |--一维码

    1、编码

    2、解码

    3、条码知识

  •     |--二维码

    1、编码

    2、解码

  •     |--压缩

    一、压缩

    二、解压

  •     |--验证码

    1、输出

    2、验证码获取

  •     |--时间日期

    1、整数时间

    2、日期

    3、星期

  •     |--日志

    日志输出

  •     |--有效性

    有效性验证

  • 扩展
  •     |--Javascript

    实现目的?

  •             |----正向调用

    Java调用Javascript

  •             |----逆向调用

    JavaScript里面调用框架函数方法

  •     |--Ucenter

    作用描述

  •             |----Uclient

    说明及注意事项

    1、导入类

    2、实例化

    3、登录

    4、注册

    5、更新

    6、删除

    7、查询

  •             |----Userver

    接口描述

    1、登录请求接口:login

    2、注册请求接口:register

    3、修改请求接口:modify

    4、删除请求接口:drop

    5、查询请求接口:check

  • 关于

    关于于Jkas

    jkas3480.png

    一个开发速度比PHP还更快的JAVA WEB框架

    Jkas (Java Kit As Server)  是一个为高效Java Web开发而诞生的轻量极框架,是一个基于MVC设计模式的Web应用框架,Jkas作为控制器(Controller)来建立模型与视图的数据交互。这样的设计也使得业务逻辑控制器能够与Servlet API完全脱离开。

       提醒:目前该框架只支持MySQL数据库!


    关于作者

      周胡顺(Joe):没什么好说的,一直从事互联网好多年,设计开发过不少系统,掌握不少计算机语言,仅此而已!

      有兴趣交流就加Q:421361697 或个人微信:soonec



  • 版本Version

    版本介绍

    Version: 1.10 

  • 入门

    一、Jkas包结构

    内核包名:com.z.core

    工具包名:com.z.utils

    插件包名:com.z.plugin

    视图包名:com.z.view

     

    二、目录结构

    data/

         certs/                                           密钥目录

                jkas.license                            框架密钥

         config.ini                                      全局配置文件

     

    temp/                                                临时目录

          logs/jkas_年-月.log                        框架日志文件

     

    WEB-INF/                                         

            lib                                               框架库文件目录

            classes/beetl.properties               视图格式化配置

            web.xml                                      站点配置文件

     

    locale/                                                语言文件目录

     

    static/                                                 CSS/JS资源目录

     

    themes/                                              视图主题目录

     

    三、如何开始

     

    1、控制器继承于com.z.core.Base 类

     

    import com.z.core.Base;

          public class Index extends Base

          {

              public void index()

                 {

                    echo("welcome to jkas");

                 }

          }

     

    2、模型继承于com.z.core.Model类

    import com.z.core.Model;

          public class User extends Model

          {  public User()

                   {

                   }

            }

     


    3、访问方式

    模块名在开启模块功能时有效!

    域名[/模块名]/控制器名[/方法名/参数名/参数值/参数名/参数值/.../.../].后缀 //[]方括号里面的内容为可有可无,方法名没有默认为index

    如:

    http://www.test.com/test.do

    http://www.test.com/test/about.do

    http://www.test.com/test/about/name/jkas/age/1.do


  • 配置

    一、环境要求

    java jdk 1.8

    tomcat 8

    resin 4.5

    mysql > 5.0

     

    二、框架配置文件

    [SERVER]

    ;默认语言
    locale=zh_CN

    ;是否禁用语言加载//如果是做api类的,禁语言加载,提升性能

    locale_enable=1

    ;系统名
    site_name=JKAS

    ;默认字符编码
    charset=UTF-8

    ;控制器映射包路径

    app_package=test.z.app

    ;默认后缀
    url_endwith=.do

    ;是否开启模块模式,开启后,控制器包名要加上模块名称,同时语言路径也需要加上模块名称,视图模板路径也需要加上模块名称

    module_enable=0

    ;默认模块
    module_default=default

    ;模块列表,该列表指定的模块名,才启用模块功能,全部启用的话,不设置或设置成为*

    module_list=test,test2

    ;样式域名
    css_domain=http://css.z.com

    ;js域名
    js_domain=http://js.z.com

    ;图片域名
    img_domain=http://img.z.com

    ;资源根目录

    res_root_path=static

    ;CSS资源域名

    rescss_domain=http://libcss.z.com

    ;JS资源域名

    resjs_domain=http://libjs.z.com

    ;图片上传保存路径
    img_save_path=images

     

    [FILTER]

    ;是否启用过滤器
    filter_enabled=1

    ;过滤字符串,多个用|分开
    filter_str=

    [MAIL]

    ;发邮件服务器地址
    smtp_host=smtp.qq.com

    ;邮件端口
    smtp_port=465

    ;邮件认证用户
    smtp_user=421361697@qq.com

    ;邮件认证密码
    smtp_pass=************

    ;邮件是否启用ssl
    smtp_ssl=1

    ;邮件是否开启调试
    smtp_debug=0

    [UPLOAD]

    ;默认最大上传文件
    upload_max_size=1024

    ;默认上传类型
    upload_allow_type=.jpeg,.jpg,.png,.gif

    ;cache config default|redis|memcache,pass for redis
    [CACHE]

    ;缓存是否启用
    cache_enable=1

    ;缓存类型
    cache_type=default

    ;缓存服务器地址及端口
    cache_host=192.168.54.233:6379

    ;缓存服务器认证密码
    cache_pass=123456

    ;默认缓存有效时间(分钟)
    cache_expired=30

    [VIEW]

    ;是否启用视图,如果做api类应用,禁用视图将提升性能

    view_enable=1

    ;视图模板类型(后缀)
    view_tpl=html

    ;视图模板路径
    view_path=themes

    ;视图模板主题
    view_theme=green

    [LOG]

    ;是否开启日志
    log_enable=1

    [DATABASE]

    ;数据库表前缀
    table_prefix=gl_
    data_source=dbconfig //必须与resin或tomcat配置的数据源保持一致

    ;数据库类型mysql oracle mssql 暂时只支持mysql
    db_type=mysql

    [CLIENT]
    clients=50

     

    ;用户整合配置

    [UCLIENT]

    ;是否启用,0 不启用,1 启用

    uc_enable=0

    ;接口类型,1为数据库接口,2为网络接口
    uc_type=1

    ;appid,要与用户中心应用id一致
    uc_appid=234

    ;通信密钥,要与用户中心应用密钥保持一致
    uc_authkey=sldfdsfsdf

    ;用户数据源
    uc_data_source=dbconfiguc //必须与resin或tomcat配置的数据源保持一致

    ;用户数据库表前缀
    uc_table_prefix=gl_

    ;用户中心接口域名
    uc_api=http://uc.z.com

    ;用户中心接口后缀

    uc_endwith=.do

    三、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">

    <display-name>GELIFOOD</display-name>
    <description>GELIFOOD WEB SITE</description>

      <servlet>
        <servlet-name>routerServlet</servlet-name>
        <servlet-class>com.z.Router</servlet-class>
      <load-on-startup>1</load-on-startup>
      </servlet>

      <servlet-mapping>
        <servlet-name>routerServlet</servlet-name>
        <url-pattern>*.do</url-pattern><!--后缀要和config.ini里面的配置一致-->
      </servlet-mapping>

     

      <servlet-mapping>
        <servlet-name>routerServlet</servlet-name>
        <url-pattern>/jkas.js</url-pattern>
      </servlet-mapping>

      <servlet-mapping>
        <servlet-name>routerServlet</servlet-name>
        <url-pattern>*.jl</url-pattern>
      </servlet-mapping>

     

    <welcome-file-list> 
        <welcome-file>index.do</welcome-file> 
    </welcome-file-list>

     

    <session-config>
          <session-timeout>30</session-timeout>
    </session-config>

     

    <!-- tomcat运行的话必须要加 -->

    <resource-ref> 
        <res-ref-name>dbconfig</res-ref-name> 
        <res-type>javax.sql.DataSource</res-type> 
        <res-auth>Container</res-auth> 
    </resource-ref>

    </web-app>


    四、数据库连接池配置

    注意把mysql的jdbc驱动复制到相应的web服环境(resin或tomcat) 的lib目录下面

    1、resin:

     <character-encoding>UTF-8</character-encoding> 
        <database>
            <jndi-name>dbconfig</jndi-name><!--必须与上面系统配置文件数据源配置保持一致-->
            <driver type="com.mysql.jdbc.Driver">
            <url>jdbc:mysql://localhost:3306/dbname</url>
            <user>root</user>
            <password>123456</password>
            </driver>
            </database>

     

    2、tomcat

    在context.xml里面配置数据库连接池

    <Resource
    name="dbconfig" <!--必须与上面系统配置文件数据源配置保持一致-->
    type="javax.sql.DataSource"
    driverClassName="com.mysql.jdbc.Driver"
    maxIdle="2"
    maxWait="5000"
    username="gldev_u"
    password="123456"
    url="jdbc:mysql://localhost:3306/dbname"
    maxActive="4"/>

     

    3、数据库连接参数解析

    <url>jdbc:mysql://192.168.2.181:3306/gl_master?characterEncoding=utf8&amp;useSSL=false&amp;useOldAliasMetadataBehavior=true</url>

    用UTF-8编码进行连接;ssl关闭;字段别名可读开启


  • 基本

    一、系统基本函数

    String C(String confkey)//配置读取

    int random(int n)//获取随机数0~n

    int random(int min,int max)//获取随机数min~max

    int toInt(String str)//字符串转整数

    int toInt(Object str)

    long toLong(String str)//字符串转长整数

    long toLong(Object str)//字符串转长整数

    float toFloat(String str)//字符串转浮点数

    float toFloat(Object str)//字符串转浮点数

    double toDouble(String str)//字符串转双精度

    double toDouble(Object str)//字符串转双精度

    String str(int num)//整数转字符串

    String str(long num)//长整数转字符串

    String str(float num)//浮点数转字符串

    String str(double num)//双精度数转字符串

    String str(Object obj)//对象转字符串

    StringBuilder concat(String str1,String str2,String str3,...,String strn)//字符串连接

    String strc(String str1,String str2,String str3,...,String strn)//字符串连接

    boolean isEmpty(Object obj)//判断对象是否为null或""

    boolean isNull(Object obj)//判断对象是否为null

    String uuid()//获得32位UUID随机码 如:1baad974-b648-4066-950d-9f58380dbb14

    String sys(String key)//获取系统信息,计算机名,ip、网卡地址等,详情主查看第十二条

    HashMap<String,String> sys()//以Map格式返回信息所有信息

    String version() //框架版本号

    String name()//框架名称

    HashMap<String,Long> jvmmemory()//查看jvm内存情况 total:可使用;used:已使用;free:空闲;max:最大可用

    Float price(Float price)//四舍五入,保留2位小数

    Float price(Float price,int scale,int roundingMode) scale 保留小数位数,roundingMode:UP,DOWN,CEILING,FLOOR,HALF_UP,HALF_DOWN,HALF_EVEN,UNNECESSARY


    二、XML操作

    1、单一内容读取

    HashMap<String,String> xmlparse(String xmlfile,String nodename)

    如:

    login.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <languages>
    <l name="welcome_login">Welcome Login!</l>
    <l name="user_holder">Enter the username</l>
    </languages>

     

    java:

    HashMap<String,String> res=xmlparse("login.xml","l");

     

    2、复杂X ML操作

    Element xmlfile(String filepath)//解析mxl文件

    Element xmlstr(String str)//解析xml字符串


    三、ini文件读写

    1、导入类:

    import com.z.utils.iniRW;

    2、初始化

    IniRW ini=new IniRW(String inipath);//参数为ini路径

    3、读取

    String get(String key);

    4、写入

    void set(String key,String value);

    5、保存

    void save();


    四、获取系统信息

    HashMap<String,String> sys()//以Map格式返回信息所有信息

    String sys(String key)//获取系统信息,计算机名,ip、网卡地址等

    key的值为如下参数之一:

    computername //计算机名
    file.encoding//系统文件编码
    file.separator//系统文件路径分隔符
    hostname//系统主机名
    ip//系统IP
    java.class.path//系统java classpath
    java.class.version//系统java class版本
    java.ext.dirs//系统java 扩展目录
    java.home //系统java环境安装目录
    java.io.tmpdir//系统临时目录
    java.library.path//系统环境变量PATH
    java.runtime.name//java运行环境
    java.runtime.version//java运行环境版本
    java.version//java版本
    java.vm.info//java虚拟机信息
    java.vm.name//java虚拟机名称
    java.vm.version//java虚拟机版本
    line.separator//系统换行符
    mac//系统网卡地址
    os.arch//系统架构
    os.name//操作系统名称
    os.version//操作系统版本
    path.separator//系统路径分隔
    user.country//所在国家
    user.dir//WEB服务器安装目录
    user.language//使用语言环境
    user.name//用户名
    user.timezone//时区
    userdomain//域|工作组
    username//系统用户名


  • 文件

    一、文件读取

    默认UTF-8编码

    String fr(String filepath)

    String fr(String filepath ,String charset)

    byte[] fb(String filepath)


    二、文件复制


    boolean fc(String srcpath,String despath)


    三、文件移动

    boolean fm(String srcpath,String despath)


    四、文件写入


    boolean fw(String filepath,String content)

    boolean fw(String filepath,byte[] content)

    boolean fw(String filepath,byte[] content,boolean isAppend) //追加方式写入


    五、文件或目录删除


    boolean fd(String filepath)


    六、其它文件操作


    boolean fe(String filepath)//判断文件是否存在

    boolean isdir(String path)//判断是否是目录

    boolean isfile(String filepath)//判断是否是文件


  • 图片

    一、生成缩略图


    String thumb(String src,String des,int w,int h,boolean flag)

    flag为是否自动补白


    二、图片加水印


    1、文字水印

    void watertxt(String picpath,String words,int position,String font,int fontsize,String color,int rotate)

    注:position:0,1,2,3,4分别对应左上,右上,左下,右下,中间

    如:

    watertxt("C:/test.jpg","Jkas",0,"微软雅黑",48,"00FF00",45);

    2、图片水印

    void waterpic(String picpath,String waterpic,int position,int rotate)

    注:position:0,1,2,3,4分别对应左上,右上,左下,右下,中间

    如:

    waterpic("C:/test.jpg","C:/water.png",0,0);


  • 上传

    文件上传

    上传类型与大小请先在配置文件进行设置

    ArrayList<HashMap<String,String>> FILES() //用户上传文件列表

     

    结构:

    code:状态值 1:成功 -1:类型不允许 -2:文件大小超过上传限制 0:未知错误

    error:为空表示成功,不为空表示错误信息

    name:文件表单名

    size:文件大小

    filename:文件真实名

    temp_name:文件临时名称
    type:文件类型

    suffix:文件后缀

     

    进度获取:

    content_length 为请求总大小

    HashMap<String,Long>upgress=session("upgress");

    结构:HashMap<String,Long>

    name:receivedsize//name为上传表单名称,receivedsize为已经上传大小,单位为字节(byte)

     

    String imgPath();//返回默认图片保存配置路径


  • 网络
  • HTTP

    一、GET请求


    String get(String url)//默认30秒超时

    String get(String url,int timeOut)//timeOut:超时限制,单位秒


    二、POST请求


    String post(String url)//默认30秒超时

    String post(String url,int timeOut)//timeOut:超时限制,单位秒

    String post(String url,HashMap<String, Object> params)

    String post(String url,HashMap<String, Object> params,int timeOut)


    三、下载文件


    boolean download(String url,String filepath)//下载文件并保存到指定路径

    byte[] download(String url)//下载文件,并转为字节流


  • SOCKET

    一、SOCKET请求


    String socket(String ip,int port,String str)

    参数:

    ip:请求主机地址

    port:请求主机商品

    str:发送的字符串

     

    返回值:

    返回服务器响应一行(目前版本只支持读取一行响应)


  • 邮件

    一、邮件发送


              String mail(String to,String subject,String content)

              String mail(String to,String subject,String content,String fromname)


  • 控制
  • 基础入门

    一、控制器编码步骤

    1、包导入:

    import com.z.core.Base;

     

    2、继承Base

    public class Test extends Base {

    }

     

    3、初始化方法为init()

    public class Test extends Base {

      public void init()

         {//初始操作

          }

    }

     

    4、写相应的action

    public class Test extends Base {

      public void init()

         {//初始操作

          }

     

    public void index()

      { echo("welcome to jkas!");//实现业务逻辑

      }

    }


  • 专用方法

    1、系统方法


    boolean init();//初始化方法 返回false不继续执行action

    void ec ho(String str)

    void ec ho(Object obj)//以字符串输出对象

    void ec ho(Object obj1,Object obj2,Object obj3,...,Object objn)//以字符串输出对象

    void echo(int num)

    String getApp() 为控制器

    String getAct() 为请求方法

    String webRoot() 网站根域名

    String rootPath() 网站根目录

     

    如:

    echo("jkas");

    echo(1);


    2、用户请求


    HashMap

    String P(String parametername)//根据参数名获取提交参数

    String Plow(String parametername)//全部转为小写字母

    String Pup(String parametername)//全部转为大写字母

    int Pint(String parametername);//把参数自动转为整数返回

    int Pfloat(String parametername);//把参数自动转为浮点数返回

    int Pdouble(String parametername);//把参数自动转为双精度数返回

    HashMap

    ArrayList<HashMap

    HttpServletRequest getRequest() //获得request对象

    HttpServletResponse getResponse() //获取reponse对象

    long contentLength() 为请求总大小

    boolean IS_POST() //是否POST请求

    boolean IS_GET() //是否GET请求

    String clientIp()//获取客户端IP

    String clientIp(String headerName)//获取自定义转发的IP,headerName为自定义的IP转发请求头名称

    InputStream getInputStream()//获取输入流对象

    ByteArrayOutputStream getInputByte()//返回输入流转ByteArray输出流

    String getInputString()//输入流转字符串

    String getRequestUrl()//获取请求Url

    String getQueryString()//获取请求参数部分

    String header(String headerName)//获取来自客户端的请求头


    如:

    String a=P("a");

    HashMap<String,String> P();//返回所有用户请求参数


    3、session


    1)、session 读取

    Object session(String key)

    String sess2str(String key);//以字符串形势获取session

    int sess2int(String key);//以整数形式获取session

    long sess2long(String key);//以长整数形式获取session

    float sess2float(String key);//以浮点数形式获取session

    double sess2double(String key)//以双精度数形式获取session

     

    2)、session 写

    void session(String key,Object value)

    session删除把值设为null,如:session("a",null);

    4、cookie


    1)、cookie 读

    HashMap<String,String> cookies()//读出所有cookie为HashMap格式

    String cookie(String key)//读出指定键的cookie

     

    2)、cookie 写

    void cookie(String key,String value)//设置cookie 默认时间为30000秒;默认路径为“/”

    void cookie(String key,String value,int expired)//默认路径为/

    void cookie(String key,String value,int expired,String path)

    cookie删除把值设置为null或把过期时间设置为0即可


    5、语言获取


    String L(String lankey)


    6、url编码


    String url(String url);

    String url(String url,String params);

    String url(String app,String act,HashMap<String,String>params)

    String url(String module,String app,String act,HashMap<String,String>params)//开启模块方式后使用该方式


    7、URL重定向


    1)、服务端转发(url不变);

    void forw ard(String url);

    2)、客户端转发(url改变);

    void redir ect(String url);


    8、资源引入


    String imports(String type,String res)//type为资源类型,值为:css,js,libcss,libjs,返回包括HTML标签

    String url(String type,String res);//type为资源类型,值为:css,js,libcss,libjs,返回完整URL路径

    String img(String res)//返回完整图片路径

    当配置文件配置了相应资源的域名时,返回的路径将按指定的域名返回!


  • 模型

    如何开始?

    模型类命名方式均以大写M结尾

     

           1、导入类

           import com.z.core.Model;

     

        

          2、继承类

            class MemberM extends Model

           {

                 public MemberM()

                   { setTable("members");//模型对应表名,不设置默认为模型名称
                     primaryKey("member_id");//对应表主键(必须)

                   }

           }

     

     

           3、实例化并使用

            MemberM m=new MemberM();

            String tablename=m.tablename();

     

          4、SQL语句调试

             String toSql(String action);//action 为:select update delete insert

             输出最终的SQL语句


  • 查询

    一、简单查询

    (优点:执行性能高效,缺点:SQL要全部自己写)

    实例化:

    Member m=new Member();

     

    1、ArrayList<HashMap> select(String sql)

    如:m.select("select * from "+m.tablename());//m.select()等效

     

    2、String getOne(String sql)

    3、HashMap<String,String> getRows(String sql)

    4、HashMap<String,Object> getRowsObj(String sql);

    5、ArrayList<String> getCols(String sql)

    6、HashMap<String,String> get(int prikey)//根据主键获取单条信息

    7、HashMap<String,String> getInfo(Object prikey)//根据主键获取单条信息

    8、HashMap<String,Object> getInfoObj(Object prikey)//根据主键获取单条信息


    二、简化查询

    (优点:SQL自动生成,缺点:性能会有所损耗)

    Member m=new Member();

    1、m.table("test").fields("a,b,c").where("a>1").and("c=1").or("b=2").order("a desc").order("b asc").limit("1,10").count().select();

    2、m.getCount();//返回符合条件的总记录,必须在执行查询时带count()函数才会有值

     

    3、简化方法介绍

    fields(String field)

    values(String values)

     set(String field)

    and(String where)

    or(String where)

    where(String where)

    where(String where,String relation)

    order(String sort)

    limit(String limit)

    table(String table)

    join(String table)

    join(String table,String lk,String rk)

    join(String table,String lk,String rk,String type)

    count()

    count(String field)

     

    String getOne();

    ArrayList<HashMap> select();

    HashMap<String,String> getRows();

    HashMap<String,Object> getRowsObj();

    ArrayList<String> getCol();


    三、另类查询

    (大量数据情况下效率会高,分开两个部分,减少HashMap的操作时间)

    DbResults select2(String sql)//返回DbResults 对象

    DbResults 对象方法:

    HashMap<String,Integer> getRows()//获取全部字段名

    ArrayList<String[]> getCols()//获取查询记录

    String get(String colname)//获取第一条记录的对应列名的值

    String get(int colnum,String colname)//获取第colnum条记录对应列名的值


    四、分页


    1、导入分页类

    import com.z.utils.Page;

    2、分页操作

    Page( int page, int pagenum);//page:当前页;pagenum:每页显示数;实例构造函数

    void setDisplayPages(int num)//设置显示页码条数

    void setCount(int count)//设置总记录数

    HashMap<String,Integer> getInfo()//获取分页信息

    分页信息结构:



    pages:总页

    s:页码起始数

    e:页码终止数

    pos:记录当前页起始位置

    count:总记录数

    page:当前页

    pagenum:每页显示记录条数


     

    例子:

    Users u=new Users();
      int pagenum=10;
      int page=Pint("page");
      Page p=new Page(page,pagenum);
      ArrayList<HashMap> users=u.count().limit(p.getPos(),pagenum).select();
      p.setCount(u.getCount());
      assign("users",users);
      assign("pageinfo",p.getInfo());


  • 新增

    一、简单新增


    int query(String sql) 


    二、简化新增


    Member m=new Member();

    m.fields("a,b,c,d").values("1,2,3,4").insert();

    m.fields("a,b,c,d").values("1,2,3,4").replace();

    m.insert(HashMap<String key,Object value>);


  • 更新

    一、简单更新


    int query(String sql) 


    二、简化更新


    Member m=new Member();

    m.set("a=1,b=2,c=3,d=4").where("a>0").update();

    m.where("a=1").update(HashMap<String key,Object value>);

    m.update("a=1",HashMap<String key,Object value>);


  • 删除

    一、简单删除


    int query(String sql) 

    int drop(prikey)

    二、简化删除


    Member m=new Member();

    m.where("a>1").delete();


  • 预处理

    一、查询

    1、简单查询

    • ArrayList<HashMap> prepareSelect(String sql,HashMap<Integer,Object> params);

    • String prepareOne(String sql,HashMap<Integer,Object> params)

    • HashMap<String,String> prepareRows(String sql,HashMap<Integer,Object> params)

    • HashMap<String,Object> prepareRowsObj(String sql,HashMap<Integer,Object> params)

    • ArrayList<String> prepareCols(String sql,HashMap<Integer,Object> params)

    • int prepareQuery(String sql,HashMap<Integer,Object> params)

     

    2、简化查询(预处理不能用count()进行记录统计,总记录统计自行prepareOne查询)

    • ArrayList<HashMap> prepareSelect(HashMap<Integer,Object> params);

    Member m=new Member();

    HashMap<Integer,Object> params=new HashMap<Integer,Object>();

    params.put(1,1);

    m.where("a>?").prepareSelect(params);

     

    • String prepareOne(HashMap<Integer,Object> params)

    • HashMap<String,String> prepareRows(HashMap<Integer,Object> params)

    • HashMap<String,Object> prerpareRowsObj(HashMap<Integer,Object> params)

    • ArrayList<String> prepareCols(HashMap<Integer,Object> params)


    二、插入


    1、简单插入

    int prepareQuery(String sql,HashMap<Integer,Object> params)

    2、简化插入

    int prepareInsert(HashMap<Integer,Object> params)

    int prepareMapInsert(HashMap<String key,Object value> params)

    int prepareReplace(HashMap<Integer,Object> params)

    Member m=new Member();

    HashMap<Integer,Object> params=new HashMap<Integer,Object>();

    params.put(1,1);

    m.fields("a").values("?").prepareInsert(params);


    三、更新


    1、简单更新

    int prepareQuery(String sql,HashMap<Integer,Object> params)

    2、简化更新

    int prepareUpdate(HashMap<Integer,Object> params)

    int prepareMapUpdate(HashMap<String key,Object value> params)

    int prepareUpdate(String where,HashMap<String key,Object value> params)

    Member m=new Member();

    HashMap<Integer,Object> params=new HashMap<Integer,Object>();

    params.put(1,1);

    m.set("a=?").prepareUpdate(params);


    四、删除


    1、简单删除

    int prepareQuery(String sql,HashMap<Integer,Object> params)

    2、简化删除

    int prepareUpdate(HashMap<Integer,Object> params)

    Member m=new Member();

    HashMap<Integer,Object> params=new HashMap<Integer,Object>();

    params.put(1,1);

    m.where("a=?").prepareDelete(params);


    五、批量处理


    第1步:void prepares(String sql);//预处理准备

    第2步(以下其一操作,重复多次情况用):预处理执行

    ArrayList<HashMap> preparesSelect(HashMap<Integer,Object> params)

    String preparesOne(HashMap<Integer,Object> params)

    HashMap<String,String> perparesRows(HashMap<Integer,Object> params)

    ArrayList<String> preparesCols(HashMap<Integer,Object> params)

    int preparesQuery(HashMap<Integer,Object> params)

    第3步:

    void preparesClose();//关闭所有资源(必须)


  • 批量处理

    一、批量新增


    int [] batchQuery(ArrayList<String> sqls)

    int[] prepareBatchInsert(ArrayList<HashMap<Integer,Object>> params)

    int[] prepareBatchReplace(ArrayList<HashMap<Integer,Object>> params)


    二、批量更新


    int [] batchQuery(ArrayList<String> sqls)

    int[] prepareBatchUpdate(ArrayList<HashMap<Integer,Object>> params)


    三、批量删除


    int [] batchQuery(ArrayList<String> sqls)

    int[] prepareBatchDrop(ArrayList<HashMap<Integer,Object>> params)


  • 存储过程

    赋予权限

    注:调用前要给用户赋予相应权限 

     过程:GRANT SELECT ON mysql.proc TO 'user'@'localhost';  

     函数:GRANT SELECT ON mysql.func TO 'user'@'localhost';   

     取消权限:REVOKE SELECT ON mysql.func from 'user'@'localhost'

    一、方法函数


    String call(String funname,HashMap<Integer,Object> params);

    如:

    mysql存储方法:

    DROP FUNCTION `myfun` ;

    CREATE DEFINER 
    = `root`@`localhost` FUNCTION `myfun` (

    `a` INT,
    `b` INT

    ) RETURNS INT( 11 ) NOT DETERMINISTIC CONTAINS SQL SQL SECURITY DEFINER BEGIN #Routine body goes here...
    RETURN a 
    + b;

    END

     

    java调用:

    HashMap<Integer,Object> params=new HashMap<Integer,Object>();
        params.put(1,79);
        params.put(2,858);
        String a=m.call("myfun(?,?)",params);


    二、存储过程


    HashMap<Integer,Object> exec(String spname,HashMap<String,Object> params);

    如:

    Mysql存储过程:

    DROP PROCEDURE `myadd` ;

    CREATE DEFINER 
    = `root`@`localhost` PROCEDURE `myadd` ( IN `a` INT, IN `b` INT, OUT `c` INT, INOUT `d` INT ) NOT DETERMINISTIC CONTAINS SQL SQL SECURITY DEFINER BEGIN #Routine body goes here...
    SELECT a + b
    INTO c;

    SELECT b + d
    INTO d;

    SELECT * 
    FROM gl_members;

    SELECT * 
    FROM gl_test;

    SELECT * 
    FROM gl_user;

    END

     

     

    Java调用:

    HashMap<String,Object> params=new HashMap<String,Object>();
        params.put("1",79);
        params.put("2",88);
        params.put("3>","integer");//>代表为输出参数,值为输出参数类型,类型见下面说明。
        params.put("4a","99ainteger");a代表为输入输出参数,a可以是除了数字和>的任意字符,但必须确保与值不重复;字符前表示输入值,字符后面表示输出类型,类型说明参见下面。
        HashMap<Integer,Object> a=m.ex ec("myadd(?,?,?,?)",params);

    返回值说明:

    0:ArrayList<ArrayList>//结果集,如果存储过程有结果集产生,则返回,有多个则返回多个

    1~n:则是对应输出参数的值,参字符串形式返回

     

    输出类型说明:

    bigint
    binary
    bit
    blob
    char
    clob
    date
    decimal
    double
    float
    integer
    java_object
    longvarbinary
    longvarchar
    numeric
    other
    real
    smallint
    time
    timestamp
    tinyint
    varbinary
    varchar


  • 事务处理

    操作步骤

    严格按照步骤,1、2,3、5,一步不能少:

     

    1、启动事务:

    transStart()

     

    2、执行事务:

    简单原始:

    transQuery(String sql)

    transBatchQuery(ArrayList<String> sqls)

     

    简化操作:

    int transInsert()

    int transReplace()

    int transDrop()

    int transUpdate()

    int transPrepareInsert(HashMap<Integer,Object> params)

    int[] transPrepareBatchInsert(ArrayList<HashMap<Integer,Object>> params)

    int transPrepareReplace(HashMap<Integer,Object> params)

    int[] transPrepareBatchReplace(ArrayList<HashMap<Integer,Object>> params)

    int transPrepareUpdate(HashMap<Integer,Object> params)

    int[] transPrepareBatchUpdate(ArrayList<HashMap<Integer,Object>> params)

    int transPrepareDrop(HashMap<Integer,Object> params)

    int[] transPrepareBatchDrop(ArrayList<HashMap<Integer,Object>> params)

     

     

    3、提交事务

    transCommit()

     

    4、回滚事务(如果有异常,此步才需要)

    transRollback()

     

    5、结束事务

    transEnd()


  • 视图

    一、初始化设置

    String viewPath()//获取视图路径

    void viewPath(String viewPath)//设置视图路径

    String viewTheme()//获取主题路径

    void viewTheme(String viewTheme)//设置主题路径

    void viewInit()//初始化视图

    void viewInit(String view_path,String view_theme)//带参数初始化视图


    二、变量赋值


    void assign(String k,String v)


    三,渲染模板


    void disp lay()//默认渲染APP下面ACTION名称的模板

    void display(String tpl)//tpl路径是以主题路径为基准(在开启模块功能情况下,还要加上模块路径),渲染指定路径模板

    String fetch(String tpl)//tpl路径是以站点根目录为基准


    四、渲染字符串


          String fetch_str(String str)


    五、模板语法


    timeFormat//日期格式化 如:${strdate,timeFormat="yyyy-MM-dd"}

    strCut//字符串截取 如:${str,strCut="5"}

    price//四舍五入保留两个小数据 如${price,price}

    url//格式化url,

    如:<% url("test/url","a=b&c=d&e=f");%> 输出test/url/a/b/c/d/e/f.do

    ${'abc/def',url} 输出/abc/def.do

    ${'abc/def',url="a=b&c=d"} 输出 /abc/def/a/b/c/d.do

    请阅读官方文档:http://ibeetl.com/guide/#beetl


  • 缓存

    注意事项

    注:缓存操作前,请先配置好缓存并启用缓存

    一、缓存读取


    Object cac he(String key)


    二、缓存写入


    void cache(String key,Object value)

    void cache(String key,Object value,int expired)


    三、缓存删除


    void cache(String key,null)


    四、缓存清空

     

    void cache(0)


  • 语言

    语言相关操作

    语言需要初始化方可用:

    初始化方法:

    localeInit();
     

    语言统一放在loc ale目录下面,按APP小写名称进行命名,在开启模块功能情况下,还要加上模块路径

     

    系统会根据Cookie的locale值自动加载不同语言

     

    语言文件是键值对方式,样例如下:

    common.l //视图或程序全局通用

    common.j //json全局通用

    locale/zh_CN/login.l  //视图语言

    locale/zh_CN/login.j  //json语言,专供js调用,调用方法 JL.null_username


    null_username=用户名不能为空

    null_password=密码不能为空
    wrong_auth=用户名密码不正确
    wrong_capacha=验证码不正确

     

     

    语言文件读取用 String L(String lanname)

     

          如:

        程序调用:String notice=L("null_username");//notice的值为用户名不能为空

     

    视图调用:${L.null_username}

    JS调用: JL.null_username


  • 工具
  • 加解密

    1、MD5


    String md5(String str)

    String md5(byte[] str)//字节流

    String md5(String str,boolean isfile)//str为文件路径,isfile为true时,计算文件的MD5值


    2、SHA


    String sha(String str);//默认128位

    String sha(byte[] str);//字节流,默认128位

    String sha1(String str);//128位

    String sha1(byte[] str);//字节流,128位

    String sha2(String str);//256位

    String sha2(byte[] str);//字节流,256位

    String sha3(String str);//384位

    String sha3(byte[] str);//字节流,384位

    String sha5(String str);//512位

    String sha5(byte[] str);//字节流,512位

    String sha(String str,int bit)//bit 为256 384 512

    String sha(byte[] str,int bit)//bit 为256 384 512

    String sha(String str,boolean isfile)//str为文件路径,isfile为true时,计算文件的SHA1值

    String sha(String str,int bit,boolean isfile)//str为文件路径,isfile为true时,计算文件的SHA1 SHA256 SHA384 SHA512值 bit 为1 256 384 512



    3、RSA

    密钥生成:

    HashMap<String,String> RsaGenerateKey()//privatekey,publickey

     

    加密:

    byte[] rsaEncode(String pubkey,String str)//pubkey为base64编码

    byte[] rsaEncode(byte[] pubkey,byte[] str)

     

    解密:

    String rsaDecode(String prikey,String enstr) //prikey,enstr均为base64编码
    String rsaDecode(byte[] prikey,byte[] enstr)

    byte[] rsaDecodeByte(String prikey,String enstr)

    byte[] rsaDecodeByte(byte[] prikey,byte[] enstr)

     

    签名与验签:

    String RsaSignMd5(String src,String privateKeyEnc)// 签名方式:MD5withRSA src:签名字符串,privateKeyEnc:私钥

    boolean RsaVerifyMd5(String src, String result,String publicKeyEnc)//验签 src:签名原字符串,result:签名,publicKeyEnc:公钥

     

    String RsaSignSha1(String src,String privateKeyEnc)// 签名方式:SHA1withRSA src:签名字符串,privateKeyEnc:私钥

    boolean RsaVerifySha1(String src, String result,String publicKeyEnc)//验签 src:签名原字符串,result:签名,publicKeyEnc:公钥


    4、DES

    (注:此加密方式为本框架定制专用,不能通用)

    说明:

     * DES的密钥(key)长度是为8个字节,加密解密的速度是最快的
     * DESede的密钥(key)长度是24个字节,即3DES
     * AES的密钥(key)长度是16个字节
     * BlowFish的密钥(key)长度是可变的(1<=key<=16),加密最快,强度最高

     

    加密:

    byte[] desEncode(String str,String key)//默认以DES方式加密

    byte[] desEncode(String data,String key,String algorithm)//algorithm: 加密方式,值必须为 DES | DESede | Blowfish | AES 之一,下同

    byte[] desEncodeBytes(byte[] data,String key)

    byte[] desEncodeBytes(byte[] data,String key,String algorithm)

    boolean desEncodeFile(String file,String desfile,String key)//file:需要加密的文件地址,desfile:加密后保存的文件地址

    boolean desEncodeFile(String filepath,String desfile,String key,String algorithm)

     

    解密:

    String desDecode(byte[] data,String key)

    String desDecode(byte[] data,String key,String algorithm)

    byte[] desDecodeBytes(byte[] data,String key)

    byte[] desDecodeBytes(byte[] data,String key,String algorithm)

    byte[] desDecodeFile(String encfile,String key)

    byte[] desDecodeFile(String filepath,String key,String algorithm)

    String desDecodeFileStr(String encfile,String key)//encfile:已经加密过的文件地址

    String desDecodeFileStr(String filepath,String key,String algorithm)


    5、AES

    (128位,注:此加密方式为本框架定制专用,不能通用)

    加密:

    byte[] aesEncode(String str,String key)

    byte[] aesEncodeBytes(byte[] data,String key)

     

    解密:

    String aesDecode(byte[] data,String key)

    byte[] aesDecodeBytes(byte[] data,String key)


    6、ECDSA

    密钥生成:

    HashMap

     

    签名:

    String EcdsaSign(String src,String privateKeyEnc)//src:签名字符串,privateKeyEnc:私钥

     

    验签:

    boolean EcdsaVerify(String src, String result,String publicKeyEnc)//src:签名原字符串,result:签名,publicKeyEnc:公钥


  • 编码

    1、Base64


    String base64Encode(String str)//编码

    String base64Encode(byte[] str)//字节流编码

    String base64Decode(String str)//解码

    byte[] base64ToBytes(String str)//解码成字节流


    2、JSON


    JSONArray jsonArr(Object obj)//转成json数组

    JSONObject json(Object obj)//转成json对象

    String jsonStr(Object obj)//对象或数组转成json字符串

    String jsonObjStr(Object obj)//对象转成json字符串

    String jsonArrayStr(Object obj)//数组转成json字符串

    HashMap<String,Object> json2map(JSONObject json)//json对象转为map格式

    HashMap<String,Object> json2map(String jsonstr)//json字符串转为map格式


    3、XML&Map


    HashMap<String, String> xml2map(String strXML)//xml转map

    String map2xml(HashMap<String, String> data)//map转xml


    4、url编码


    String urlencode(String str);//默认认框架编码

    String urlencode(String str,String charset)

    String urldecode(String str);//默认认框架编码

    String urldecode(String str,String charset);


  • 一维码

    1、编码

    String barcode(String contents,String format,int width,int height,String savepath,String filename)//format:条码类型,ean_8,ean_13,code_39,code_128,codabar

    BufferedImage barcode(String contents,String format,int width,int height)//format:条码类型,ean_8,ean_13,code_39,code_128,codabar

    void barcodeOut(String contents,String format,int width,int height)//直接输出到浏览器,format:条码类型,ean_8,ean_13,code_39,code_128,codabar


    2、解码

    String barDecode(String filename)

    3、条码知识

    Code39码(标准39码)、Codabar码(库德巴码)、EAN-13码(EAN-13国际商品条码)、EAN-8码(EAN-8国际商品条码)、Code128码(Code128码,包括EAN128码)

     

    在EAN-13的编码体系中,前三位数字表示商品生产商的国家(并不是商品所属公司的国家),中国的编码是690~699,美国是(000~019、030~039、060~139),日本是(450~459、490~499)


  • 二维码

    1、编码


           String qrcode(String str,int width,int height,String savepath,String filename)//保存为文件

           BufferedImage qrcode(String str,int width,int height) //返回图片数据

           void qrcodeOut(String str,int width,int height)//输出图片


    2、解码


        String qrDecode(String filename)


  • 压缩

    一、压缩


    byte[] gzip(String str)

    byte[] gzip(String str,String charset)

    boolean zip(String srcFile,String zipFile)//srcFile:需要压缩的文件或目录 zipFile:压缩后保存路径及文件名


    二、解压


    String ungzip(byte[] gzstr)

    String ungzip(byte[] gzstr,String charset)

    boolean unzip(String zipFile,String desPath)//zipFile:需要解压的文件,desPath:解压到目标目录


  • 验证码

    1、输出


    /capacha


    2、验证码获取


    String verCode=session("verCode").toString();

    String verCode=sess2str("verCode");


  • 时间日期

    1、整数时间


    int time()//10位

    long microtime()//13位


    2、日期


    String date()/返回当前日期,格式为:yyyy-MM-dd HH:mm:ss

    String date(String format)

    String date(long time,String format)

    String date(long time)//格式默认:yyyy-MM-dd HH:mm:ss

    String date(int time,format)

    String date(int time)//格式默认:yyyy-MM-dd HH:mm:ss

     

    时间日期标识符: 
          yyyy:年 
          MM:月 
          dd:日  
          hh:1~12小时制(1-12)
          HH:24小时制(0-23) 
          mm:分 
          ss:秒  
          S:毫秒  
          E:星期几 
          D:一年中的第几天 
          F:一月中的第几个星期(会把这个月总共过的天数除以7) 
          w:一年中的第几个星期 
          W:一月中的第几星期(会根据实际情况来算) 
          a:上下午标识 
          k:和HH差不多,表示一天24小时制(1-24)。 
          K:和hh差不多,表示一天12小时制(0-11)。
          z:表示时区  


    3、星期


    int week()//返回当日星期

    int week(Date dt)//返回指定日期星期


  • 日志

    日志输出

    日志保存位置为:temp/logs/

    日志输出:

    void log(String logmsg);//错误日志,会输出所在文件,类,方法及所在行号

    void log(String type,String logmsg);//type为 :info,notice 只输出信息,不输出所在文件,类,方法行号


  • 有效性

    有效性验证

    导入类:import com.z.utils.Valid;

    boolean va lid(String regex,String str);//直接验证,参数一为正则表达式,参数2为要验证的字符串

    Valid valid();//返回 valid对象

    valid对象可用方法:

    boolean check(String regex,String str)//通过自定义正则进行验证

    boolean checkEmail(String email)//验证邮件地址格式

    boolean checkIdCard(String idCard)//验证身份证号码

    boolean checkMobile(String mobile)//验证手机号码

    boolean checkPhone(String phone)//验证电话号码

    boolean checkChinese(String chinese)//验证中文

    boolean checkURL(String url)//验证链接

    boolean checkIpAddress(String ipAddress)//验证IP地址

     

    正则举例:

    String regex="^[a-zA-Z0-9u4E00-u9FA5_]+$";//匹配数字、字母、中文及下划线

    boolean isvalid=valid(regex,"abc");

     


    元字符

    描述

    将下一个字符标记符、或一个向后引用、或一个八进制转义符。例如,“\n”匹配 。“ ”匹配换行符。序列“\”匹配“”而“(”则匹配“(”。即相当于多种编程语言中都有的“转义字符”的概念。

    ^

    匹配输入字符串的开始位置。如果设置了RegExp对象的Multiline属性,^也匹配“ ”或“ ”之后的位置。

    $

    匹配输入字符串的结束位置。如果设置了RegExp对象的Multiline属性,$也匹配“ ”或“ ”之前的位置。

    *

    匹配前面的子表达式任意次。例如,zo*能匹配“z”,“zo”以及“zoo”。*等价于{0,}。

    +

    匹配前面的子表达式一次或多次(大于等于1次)。例如,“zo+”能匹配“zo”以及“zoo”,但不能匹配“z”。+等价于{1,}。

    ?

    匹配前面的子表达式零次或一次。例如,“do(es)?”可以匹配“do”或“does”中的“do”。?等价于{0,1}。

    {n}

    n是一个非负整数。匹配确定的n次。例如,“o{2}”不能匹配“Bob”中的“o”,但是能匹配“food”中的两个o。

    {n,}

    n是一个非负整数。至少匹配n次。例如,“o{2,}”不能匹配“Bob”中的“o”,但能匹配“foooood”中的所有o。“o{1,}”等价于“o+”。“o{0,}”则等价于“o*”。

    {n,m}

    m和n均为非负整数,其中n<=m。最少匹配n次且最多匹配m次。例如,“o{1,3}”将匹配“fooooood”中的前三个o。“o{0,1}”等价于“o?”。请注意在逗号和两个数之间不能有空格。

    ?

    当该字符紧跟在任何一个其他限制符(*,+,?,{n},{n,},{n,m})后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。例如,对于字符串“oooo”,“o+?”将匹配单个“o”,而“o+”将匹配所有“o”。

    .点

    匹配除“ ”之外的任何单个字符。要匹配包括“ ”在内的任何字符,请使用像“[sS]”的模式。

    (pattern)

    匹配pattern并获取这一匹配。所获取的匹配可以从产生的Matches集合得到,在VBScript中使用SubMatches集合,在JScript中则使用$0…$9属性。要匹配圆括号字符,请使用“(”或“)”。

    (?:pattern)

    匹配pattern但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。这在使用或字符“(|)”来组合一个模式的各个部分是很有用。例如“industr(?:y|ies)”就是一个比“industry|industries”更简略的表达式。

    (?=pattern)

    正向肯定预查,在任何匹配pattern的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如,“Windows(?=95|98|NT|2000)”能匹配“Windows2000”中的“Windows”,但不能匹配“Windows3.1”中的“Windows”。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始。

    (?!pattern)

    正向否定预查,在任何不匹配pattern的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如“Windows(?!95|98|NT|2000)”能匹配“Windows3.1”中的“Windows”,但不能匹配“Windows2000”中的“Windows”。

    (?<=pattern)

    反向肯定预查,与正向肯定预查类似,只是方向相反。例如,“(?<=95|98|NT|2000)Windows”能匹配“2000Windows”中的“Windows”,但不能匹配“3.1Windows”中的“Windows”。

    (?<!pattern)

    反向否定预查,与正向否定预查类似,只是方向相反。例如“(?<!95|98|NT|2000)Windows”能匹配“3.1Windows”中的“Windows”,但不能匹配“2000Windows”中的“Windows”。

    x|y

    匹配x或y。例如,“z|food”能匹配“z”或“food”或"zood"(此处请谨慎)。“(z|f)ood”则匹配“zood”或“food”。

    [xyz]

    字符集合。匹配所包含的任意一个字符。例如,“[abc]”可以匹配“plain”中的“a”。

    [^xyz]

    负值字符集合。匹配未包含的任意字符。例如,“[^abc]”可以匹配“plain”中的“plin”。

    [a-z]

    字符范围。匹配指定范围内的任意字符。例如,“[a-z]”可以匹配“a”到“z”范围内的任意小写字母字符。

    注意:只有连字符在字符组内部时,并且出现在两个字符之间时,才能表示字符的范围; 如果出字符组的开头,则只能表示连字符本身.

    [^a-z]

    负值字符范围。匹配任何不在指定范围内的任意字符。例如,“[^a-z]”可以匹配任何不在“a”到“z”范围内的任意字符。

    

    匹配一个单词边界,也就是指单词和空格间的位置(即正则表达式的“匹配”有两种概念,一种是匹配字符,一种是匹配位置,这里的就是匹配位置的)。例如,“er”可以匹配“never”中的“er”,但不能匹配“verb”中的“er”。

    B

    匹配非单词边界。“erB”能匹配“verb”中的“er”,但不能匹配“never”中的“er”。

    cx

    匹配由x指明的控制字符。例如,cM匹配一个Control-M或回车符。x的值必须为A-Z或a-z之一。否则,将c视为一个原义的“c”字符。

    d

    匹配一个数字字符。等价于[0-9]。

    D

    匹配一个非数字字符。等价于[^0-9]。

    f

    匹配一个换页符。等价于x0c和cL。

    匹配一个换行符。等价于x0a和cJ。

    匹配一个回车符。等价于x0d和cM。

    s

    匹配任何不可见字符,包括空格、制表符、换页符等等。等价于[ f v]。

    S

    匹配任何可见字符。等价于[^ f v]。

    匹配一个制表符。等价于x09和cI。

    v

    匹配一个垂直制表符。等价于x0b和cK。

    w

    匹配包括下划线的任何单词字符。类似但不等价于“[A-Za-z0-9_]”,这里的"单词"字符使用Unicode字符集。

    W

    匹配任何非单词字符。等价于“[^A-Za-z0-9_]”。

    xn

    匹配n,其中n为十六进制转义值。十六进制转义值必须为确定的两个数字长。例如,“x41”匹配“A”。“x041”则等价于“x04&1”。正则表达式中可以使用ASCII编码。

    um

    匹配num,其中num是一个正整数。对所获取的匹配的引用。例如,“(.)1”匹配两个连续的相同字符。

    标识一个八进制转义值或一个向后引用。如果 之前至少n个获取的子表达式,则n为向后引用。否则,如果n为八进制数字(0-7),则n为一个八进制转义值。

    m

    标识一个八进制转义值或一个向后引用。如果 m之前至少有nm个获得子表达式,则nm为向后引用。如果 m之前至少有n个获取,则n为一个后跟文字m的向后引用。如果前面的条件都不满足,若n和m均为八进制数字(0-7),则 m将匹配八进制转义值nm。

    ml

    如果n为八进制数字(0-7),且m和l均为八进制数字(0-7),则匹配八进制转义值nml。

    un

    匹配n,其中n是一个用四个十六进制数字表示的Unicode字符。例如,u00A9匹配版权符号(&copy;)。

    < >匹配词(word)的开始(<)和结束(>)。例如正则表达式<the>能够匹配字符串"for the wise"中的"the",但是不能匹配字符串"otherwise"中的"the"。注意:这个元字符不是所有的软件都支持的。
    ( )将 ( 和 ) 之间的表达式定义为“组”(group),并且将匹配这个表达式的字符保存到一个临时区域(一个正则表达式中最多可以保存9个),它们可以用 1 到9 的符号来引用。
    |将两个匹配条件进行逻辑“或”(Or)运算。例如正则表达式(him|her) 匹配"it belongs to him"和"it belongs to her",但是不能匹配"it belongs to them."。注意:这个元字符不是所有的软件都支持的。
    +匹配1或多个正好在它之前的那个字符。例如正则表达式9+匹配9、99、999等。注意:这个元字符不是所有的软件都支持的。
    ?匹配0或1个正好在它之前的那个字符。注意:这个元字符不是所有的软件都支持的。
    {i} {i,j}匹配指定数目的字符,这些字符是在它之前的表达式定义的。例如正则表达式A[0-9]{3} 能够匹配字符"A"后面跟着正好3个数字字符的串,例如A123、A348等,但是不匹配A1234。而正则表达式[0-9]{4,6} 匹配连续的任意4个、5个或者6个数字


     

    常用:


    规则正则表达式语法  
    一个或多个汉字^[u0391-uFFE5]+$ 
    邮政编码^[1-9]d{5}$
    QQ号码^[1-9]d{4,10}$ 
    邮箱^[a-zA-Z_]{1,}[0-9]{0,}@(([a-zA-z0-9]-*){1,}.){1,3}[a-zA-z-]{1,}$ 
    用户名(字母开头 + 数字/字母/下划线)^[A-Za-z][A-Za-z1-9_-]+$
    手机号码^1[3|4|5|8][0-9]d{8}$ 
    URL^((http|https)://)?([w-]+.)+[w-]+(/[w-./?%&=]*)?$ 
    18位身份证号^(d{6})(18|19|20)?(d{2})([01]d)([0123]d)(d{3})(d|X|x)?$



  • 扩展
  • Javascript

    实现目的?

    实现框架与JavaScript文件相互调用

  • 正向调用

    Java调用Javascript

    boolean jsinit(String jstr)//jstr:javascript文件路径或javascript字符串,如果是文件路径,必须以.js结尾

    boolean jsinit(String[] jstrs)

    boolean jsinitFile(String jsfile)//jsfile:javascript文件路径或;多个文件用逗号隔开

    boolean jsinitFile(String[] jsfiles)//多个文件

    String jscall(String method,Object param1,Object param2,...,Object paramn)//执行js方法

     

    举例:

    字符串方式:

    String jstr="function(a,b){return a+b}";
       jsinit(jstr);

       echo(jscall("add",1,2));

     

    文件方式:

    String jsfile="f:/a.js";
       jsinit(jsfile);

       echo(jscall("add",1,2));
       echo(jscall("getNum"));

     

    f:/a.js内容如下:

    function add(a,b)
    {return a+getNum();
    }

    function getNum()
    {var a=562;
     return a;
    }


  • 逆向调用

    JavaScript里面调用框架函数方法

    前提:必须先经过正向调用步骤

    jkas.函数名(参数...) 即可调用

     

    如:

    jkas.jmd5("123456");

     

    可在JS文件调用的框架函数:

    String jC(String k)//配置读取
    String jsys(String k)//系统参数
    String jgetCharset()//框架字符编码
    void jlog(String logmsg)//日志写入
    String jmd5(String str)//md5生成
    String jsha(String str)//sha生成
    String jget(String url)//网络get请求
    String jpost(String url,String params)//网络post请求


  • Ucenter

    作用描述

    统一用户管理系统

  • Uclient

    说明及注意事项

    为了统一用户登录,特开发Uclient插件

    先在配置文件对UC参数进行配置好才能使用


    1、导入类


    import com.z.uclient.Uclient;


    2、实例化


    Uclient()//所有参数自动从配置文件读取

    Uclient(String appid,String authkey)//实例化,参数:appid,和authkey(密钥),此参数从配置文件读取,由用户中心系统分配,该方式通过数据库接口进行

    Uclient(String appid,String authkey,String apiurl)//参数apiurl,指用户中心接口域名,该试通过网络接口进行

    Uclient(String appid,String authkey,String apiurl,int type)

    void setIp(String ip)//设置客户端用户来源IP

    void setType(int type)

    void setAppid(String appid)

    void setAuthkey(String authkey)


    3、登录


    HashMap<String,String> login(String username,String password)//传入用户名密码

    返回值(json):

    {"code":-4,"msg":"invalid access"}//无效访问

    {"code":-1,"msg":"invalid username"}//用户名无效

    {"code":7,"msg":"wrong password"}//密码不正确

    {"code":2,"msg":"username don't exists"}//用户不存在

    {"code":1,"msg":"success","uid":"uid","user_id":"user_id","username":"username"}//登录成功,返回用户信息


    4、注册


    HashMap<String,String> register(String username,String password)//用户名和密码

    HashMap<String,String> register(String username,String password,String mobile)//用户名、密码和手机号

    HashMap<String,String> register(String username,String password,String mobile,String email)//用户名、密码、手机号和邮箱

     

    返回值(json):

    {"code":-4,"msg":"invalid access"}//无效访问

    {"code":-1,"msg":"invalid username"}//用户名无效

    {"code":3,"msg":"mobile exists"}//手机号已经存在

    {"code":5,"msg":"wrong mobile"}//手机号码格式不正确
    {"code":4,"msg":"email exists"}//邮件地址已经存在
    {"code":6,"msg":"wrong email"}//邮件格式不正确
    {"code":-2,"msg":"failed"}//注册失败
    {"code":2,"msg":"username exists"}//用户名已经存在
    {"code":1,"msg":"success","uid":"nuid"}//注册成功


    5、更新


    HashMap<String,String> modify(String username,String password,String oldpassword)

    HashMap<String,String> modify(String username,String password,String oldpassword,String mobile)

    HashMap<String,String> modify(String username,String password,String oldpassword,String mobile,String email)

    HashMap<String,String> modify(String username,String password,String oldpassword,String mobile,String email,boolean force)//force为true时,强制修改,不用校验旧密码

     

    返回值 :

    {"code":-4,"msg":"invalid access"}//无效访问

    {"code":2,"msg":"username not found"}
    {"code":3,"msg":"mobile exists"}
    {"code":5,"msg":"wrong mobile"}
    {"code":4,"msg":"email exists"}
    {"code":6,"msg":"wrong email"}
    {"code":8,"msg":"wrong old password"}
    {"code":-2,"msg":"faild"}
    {"code":1,"msg":"success"}


    6、删除


    HashMap<String,String> drop(String username)

    返回值(json):

    {"code":-4,"msg":"invalid access"}//无效访问

    {"code":-2,"msg":"failed"}
    {"code":1,"msg":"success"}


    7、查询


    HashMap<String,String> check(String username)

    HashMap<String,String> check(String value,String column) //value:值 column :列名(只能是username,mobiel,email 之一)

     

    返回值:

    {"code":-1,"msg":"invalid username"}
    {"code":5,"msg":"wrong mobile"}
    {"code":6,"msg":"wrong email"}
    {"code":-3,"msg":"invalid check"}
    {"code":1,"msg":"success","uid":uid,"username":"username"}
    {"code":2,"msg":"column don't exists"}

    {"code":0,"msg":"unknown error"}


  • Userver

    接口描述

    统一POST请求参数:appid,authkey 必须

    appid:应用id

    authkey:验证密钥


    1、登录请求接口:login

    参数:

    username //用户名

    password //密码

     

    返回值:

    {"code":-4,"msg":"invalid access"}//无效访问

    {"code":-1,"msg":"invalid username"}//用户名无效

    {"code":7,"msg":"wrong password"}//密码不正确

    {"code":2,"msg":"username d2on't exists"}//用户不存在

    {"code":1,"msg":"success","user":{"uid":"uid","username":"username"}}//登录成功,返回用户信息


    2、注册请求接口:register

     

    参数:

    username //用户名

    password  //密码

    mobile //手机

    email //邮件

    ip //客户端IP地址

     

    返回值:

    {"code":-4,"msg":"invalid access"}//无效访问

    {"code":-1,"msg":"invalid username"}//用户名无效

    {"code":3,"msg":"mobile exists"}//手机号已经存在

    {"code":5,"msg":"wrong mobile"}//手机号码格式不正确
    {"code":4,"msg":"email exists"}//邮件地址已经存在
    {"code":6,"msg":"wrong email"}//邮件格式不正确
    {"code":-2,"msg":"failed"}//注册失败
    {"code":2,"msg":"username exists"}//用户名已经存在
    {"code":1,"msg":"success","user":{"uid":"nuid"}}//注册成功


    3、修改请求接口:modify

     

    参数:

    username //用户名

    password //密码

    oldpassword

    mobile //手机

    email //邮件

    ip //客户端IP地址

    force //是否强制修改 true|false

     

    返回值:

    {"code":-4,"msg":"invalid access"}//无效访问

    {"code":2,"msg":"username not found"}
    {"code":3,"msg":"mobile exists"}
    {"code":5,"msg":"wrong mobile"}
    {"code":4,"msg":"email exists"}
    {"code":6,"msg":"wrong email"}
    {"code":8,"msg":"wrong old password"}"
    {"code":-2,"msg":"failed"}
    {"code":1,"msg":"success"}


    4、删除请求接口:drop

     

    参数:

    username //用户名

    ip //客户端IP地址

     

    返回值:

    {"code":-4,"msg":"invalid access"}//无效访问

    {"code":-2,"msg":"failed"}
    {"code":1,"msg":"success"}


    5、查询请求接口:check

     

    参数:

    value //值

    column //列名(只能是username,mobiel,email 之一)

    ip //客户端IP地址

     

    返回值:

    {"code":-1,"msg":"invalid username"}
    {"code":5,"msg":"wrong mobile"}
    {"code":6,"msg":"wrong email"}
    {"code":-3,"msg":"invalid check"}
    {"code":1,"msg":"success","uid":uid,"username":"username"}
    {"code":2,"msg":"column don't exists"}


©2016-今 版权所有 Powered by Joe.zhou

欢迎交流学习 QQ:421361697 微信:soonec