您的位置:

java怎么实现php,JAVA怎么实现换行

本文目录一览:

java系统和php系统整合,如何实现单点登陆

1、直接网上找一个单点登录系统,把这2个系统整合到一起,

2、自己写一个单点登录系统,借助中间表,比如你以java系统为主,在java系统里面嵌入了php系统,当点击php系统的栏目时就先去中间表check一下,然后直接跳到你的php系统上面就好,

3、如果没有权限啥的,你就直接放一个连接传用户名和密码直接登录访问也行。

php开发的对数据库的操作,用Java怎么实现

比较PHP和JSP这两个Web开发技术,在目前的情况是其实是比较PHP和Java的Web开发。以下是我就几个主要方面进行的比较:

一、 语言比较

PHP是解释执行的服务器脚本语言,首先php有简单容易上手的特点。语法和c语言比较象,所以学过c语言的程序员可以很快的熟悉php的开发。而java需要先学好java的语法和熟悉一些核心的类库,懂得面向对象的程序设计方法。所以java不如php好学。

Java首先要编译成字节码.class文件,然后在java虚拟机上解释执行。Java的Web开发首先最容易想到的就是JSP(现在已经到JSP2.0),原来的java的Web开发都是用servlet来实现的,用servlet来开发需要程序员在java的源文件中嵌入大量的html代码。所以后来就出现了JSP,JSP可以方便的嵌入到html文件当中,其实jsp文件在服务器上执行的时候首先会被应用服务器转换成servlet,然后再编译执行。Jsp可以通过servlet和JavaBean的支持产生强大的功能。JavaBean 是一种可复用的、跨平台的软件组件。使用javabean可以方便的实现java代码和html的分离,能够增强系统的功能和软件的复用性。

Java的Web开发属于SUN公司定义的J2EE其中的规范。而且在J2EE中包括了java的Web开发的所有方面,如:JSP、Servlet、JDBC、JNDI、JAVABEAN、EJB等等。J2EE就特别适合于做大型的企业级的应用。

二、 数据库访问比较

Java通过JDBC来访问数据库,通过不同的数据库厂商提供的数据库驱动方便地访问数据库。访问数据库的接口比较统一。

PHP对于不同的数据库采用不同的数据库访问接口,所以数据库访问代码的通用性不强。例如:用Java开发的Web应用从MySQL数据库转到Oracle数据库只需要做很少的修改。而PHP则需要做大量的修改工作。

三、 系统设计架构比较

采用Java的Web开发技术,需要使用的是面向对象的系统设计方法,而PHP还是采用面向过程的开发方法。所以用Java进行开发前期需要做大量的系统分析和设计的工作。

四、 跨平台性

Java和PHP都有很好的跨平台的特性。几乎都可以在不作任何修改的情况下运行在Linux或者Windows等不同的操作系统上。

五、 开发成本比较

PHP最经典的组合就是:PHP + MySQL + Apache。非常适合开发中小型的Web应用,开发的速度比较快。而且所有的软件都是开源免费的,可以减少投入。

Java的Web应用服务器有免费Tomcat、JBoss等,如果需要更好的商业化的服务有:Web Sphere和 Web logic。

六、 分布式多层架构比较

PHP只能实现简单的分布式两层或三层的架构,而JAVA在这方面就比较强大,可以实现多层的网络架构。数据库层(持久化层)、应用(业务)逻辑层、表示逻辑层彼此分开,而且现在不同的层都已经有一些成熟的开发框架的支持。例如Struts就是利用java的Web开发技术实现了MVC的设计模式,而在业务逻辑层也有Spring框架,数据库持久化层有Hibernate等框架。这些框架可以方便开发者高效、合理、科学得架构多层的商业应用。

下面简要的说一下Struts,它实质上是在JSP Model2的基础上实现的一个MVC(Model、View、Controler)框架。JSP Model2体系结构是一种联合使用JSP 与Servlet 来提供动态内容的方法。在Struts框架中,模型由实现业务逻辑的JavaBean或EJB组件构成,控制器由Servlet实现的,视图由一组JSP文件组成。采用Struts可以明确角色的定义和开发者与网页设计者的分工。而且项目越复杂,其优势越明显。

七、 源代码安全

PHP开发的程序的源代码都是公开的,他人拿到php开发的程序后都可以进行修改。

Java开发的程序,最后用户拿到的是只是一些编译好的class类,无法看到完整的源代码,安全性高。

八、性能比较

有人做过试验,对这两种种语言分别做回圈性能测试及存取Oracle数据库测试。

在循环性能测试中,JSP只用了令人吃惊的四秒钟就结束了20000*20000的回圈。而PHP测试的是2000*2000循环(少一个数量级),却分别用了63秒。

数据库测试中,二者分别对 Oracle 8 进行 1000 次 Insert,Update,Select和Delete: JSP 需要 13 秒,PHP 需要 69 秒。

综上所述,我个人认为,PHP适合于快速开发,中小型应用系统,开发成本低,能够对变动的需求作出快速的反应。而Java适合于开发大型的应用系统,应用的前景比较广阔,系统易维护、可复用性较好。还有,同样功能的系统用Java开发的系统要比PHP开发的系统的价格要高。

java怎么实现php 的crypt

/****************************************************************************

 * JCrypt.java

 *

 * Java-based implementation of the unix crypt command

 *

 * Based upon C source code written by Eric Young, eay@psych.uq.oz.au

 *

 ****************************************************************************/

public class JCrypt

{

   private JCrypt() {}

   private static final int ITERATIONS = 16;

   private static final int con_salt[] =

   {

      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 

      0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 

      0x0A, 0x0B, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 

      0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 

      0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 

      0x1B, 0x1C, 0x1D, 0x1E, 0x1F, 0x20, 0x21, 0x22, 

      0x23, 0x24, 0x25, 0x20, 0x21, 0x22, 0x23, 0x24, 

      0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 

      0x2D, 0x2E, 0x2F, 0x30, 0x31, 0x32, 0x33, 0x34, 

      0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 

      0x3D, 0x3E, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 

   };

   private static final int cov_2char[] =

   {

      0x2E, 0x2F, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 

      0x36, 0x37, 0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 

      0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 

      0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, 0x54, 

      0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x61, 0x62, 

      0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 

      0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 

      0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A

   };

   private static final int byteToUnsigned(byte b)

   {

      int value = (int)b;

      return(value = 0 ? value : value + 256);

   }

   private static int fourBytesToInt(byte b[], int offset)

   {

      int value;

      value  =  byteToUnsigned(b[offset++]);

      value |= (byteToUnsigned(b[offset++])   8);

      value |= (byteToUnsigned(b[offset++])  16);

      value |= (byteToUnsigned(b[offset++])  24);

      return(value);

   }

   private static final void intToFourBytes(int iValue, byte b[], int offset)

   {

      b[offset++] = (byte)((iValue)         0xff);

      b[offset++] = (byte)((iValue  8 )  0xff);

      b[offset++] = (byte)((iValue  16)  0xff);

      b[offset++] = (byte)((iValue  24)  0xff);

   }

   private static final void PERM_OP(int a, int b, int n, int m, int results[])

   {

      int t;

      t = ((a  n) ^ b)  m;

      a ^= t  n;

      b ^= t;

      results[0] = a;

      results[1] = b;

   }

   private static final int HPERM_OP(int a, int n, int m)

   {

      int t;

      t = ((a  (16 - n)) ^ a)  m;

      a = a ^ t ^ (t  (16 - n));

      return(a);

   }

   private static int [] des_set_key(byte key[])

   {

      int schedule[] = new int[ITERATIONS * 2];

      int c = fourBytesToInt(key, 0);

      int d = fourBytesToInt(key, 4);

      int results[] = new int[2];

      PERM_OP(d, c, 4, 0x0f0f0f0f, results);

      d = results[0]; c = results[1];

      c = HPERM_OP(c, -2, 0xcccc0000);

      d = HPERM_OP(d, -2, 0xcccc0000);

      PERM_OP(d, c, 1, 0x55555555, results);

      d = results[0]; c = results[1];

      PERM_OP(c, d, 8, 0x00ff00ff, results);

      c = results[0]; d = results[1];

      PERM_OP(d, c, 1, 0x55555555, results);

      d = results[0]; c = results[1];

      d = (((d  0x000000ff)   16) |  (d  0x0000ff00)     |

           ((d  0x00ff0000)  16) | ((c  0xf0000000)  4));

      c = 0x0fffffff;

      int s, t;

      int j = 0;

      for(int i = 0; i  ITERATIONS; i ++)

      {

         if(shifts2[i])

         {

            c = (c  2) | (c  26);

            d = (d  2) | (d  26);

         }

         else

         {

            c = (c  1) | (c  27);

            d = (d  1) | (d  27);

         }

         c = 0x0fffffff;

         d = 0x0fffffff;

         s = skb[0][ (c       )  0x3f                       ]|

             skb[1][((c   6)  0x03) | ((c   7)  0x3c)]|

             skb[2][((c  13)  0x0f) | ((c  14)  0x30)]|

             skb[3][((c  20)  0x01) | ((c  21)  0x06) |

                                          ((c  22)  0x38)];

         t = skb[4][ (d     )   0x3f                       ]|

             skb[5][((d  7)  0x03) | ((d   8)  0x3c)]|

             skb[6][ (d 15)  0x3f                       ]|

             skb[7][((d 21)  0x0f) | ((d  22)  0x30)];

         schedule[j++] = ((t   16) | (s  0x0000ffff))  0xffffffff;

         s             = ((s  16) | (t  0xffff0000));

         s             = (s  4) | (s  28);

         schedule[j++] = s  0xffffffff;

      }

      return(schedule);

   }

   private static final int D_ENCRYPT

   (

      int L, int R, int S, int E0, int E1, int s[]

   )

   {

      int t, u, v;

      v = R ^ (R  16);

      u = v  E0;

      v = v  E1;

      u = (u ^ (u  16)) ^ R ^ s[S];

      t = (v ^ (v  16)) ^ R ^ s[S + 1];

      t = (t  4) | (t  28);

      L ^= SPtrans[1][(t       )  0x3f] |

           SPtrans[3][(t   8)  0x3f] |

           SPtrans[5][(t  16)  0x3f] |

           SPtrans[7][(t  24)  0x3f] |

           SPtrans[0][(u       )  0x3f] |

           SPtrans[2][(u   8)  0x3f] |

           SPtrans[4][(u  16)  0x3f] |

           SPtrans[6][(u  24)  0x3f];

      return(L);

   }

   private static final int [] body(int schedule[], int Eswap0, int Eswap1)

   {

      int left = 0;

      int right = 0;

      int t     = 0;

      for(int j = 0; j  25; j ++)

      {

         for(int i = 0; i  ITERATIONS * 2; i += 4)

         {

            left  = D_ENCRYPT(left,  right, i,     Eswap0, Eswap1, schedule);

            right = D_ENCRYPT(right, left,  i + 2, Eswap0, Eswap1, schedule);

         }

         t     = left; 

         left  = right; 

         right = t;

      }

      t = right;

      right = (left  1) | (left  31);

      left  = (t     1) | (t     31);

      left  = 0xffffffff;

      right = 0xffffffff;

      int results[] = new int[2];

      PERM_OP(right, left, 1, 0x55555555, results); 

      right = results[0]; left = results[1];

      PERM_OP(left, right, 8, 0x00ff00ff, results); 

      left = results[0]; right = results[1];

      PERM_OP(right, left, 2, 0x33333333, results); 

      right = results[0]; left = results[1];

      PERM_OP(left, right, 16, 0x0000ffff, results);

      left = results[0]; right = results[1];

      PERM_OP(right, left, 4, 0x0f0f0f0f, results);

      right = results[0]; left = results[1];

      int out[] = new int[2];

      out[0] = left; out[1] = right;

      return(out);

   }

   public static final String crypt(String salt, String original)

   {

      while(salt.length()  2)

         salt += "A";

      StringBuffer buffer = new StringBuffer("             ");

      char charZero = salt.charAt(0);

      char charOne  = salt.charAt(1);

      buffer.setCharAt(0, charZero);

      buffer.setCharAt(1, charOne);

      int Eswap0 = con_salt[(int)charZero];

      int Eswap1 = con_salt[(int)charOne]  4;

 

      byte key[] = new byte[8];

      for(int i = 0; i  key.length; i ++)

         key[i] = (byte)0;

      for(int i = 0; i  key.length  i  original.length(); i ++)

      {

         int iChar = (int)original.charAt(i);

         key[i] = (byte)(iChar  1);

      }

      int schedule[] = des_set_key(key);

      int out[]      = body(schedule, Eswap0, Eswap1);

      byte b[] = new byte[9];

      intToFourBytes(out[0], b, 0);

      intToFourBytes(out[1], b, 4);

      b[8] = 0;

      for(int i = 2, y = 0, u = 0x80; i  13; i ++)

      {

         for(int j = 0, c = 0; j  6; j ++)

         {

            c = 1;

            if(((int)b[y]  u) != 0)

               c |= 1;

            u = 1;

            if(u == 0)

            {

               y++;

               u = 0x80;

            }

            buffer.setCharAt(i, (char)cov_2char[c]);

         }

      }

      return(buffer.toString());

   }

   public static void main(String args[])

   {

      if(args.length = 2)

      {

         System.out.println

         (

            "[" + args[0] + "] [" + args[1] + "] = [" +

            JCrypt.crypt(args[0], args[1]) + "]"

         );

      }

   }

}

java怎么调用php的语句是什么

PHP调用JAVA方式

1. 背景

在开发招商银行信用卡分期付款功能过程中,在支付成功之后需要对银行的返回数据进行签名验证,因签名加密方式招商银行是不提供的,只提供了相应的JAVA验证类测试例子,而本项目采用的是PHP架构方式,因此需要PHP调用JAVA的验证类来测试签名是否正确。

2. 目的

本文档提供一种PHP调用JAVA类的方式来进行招行的支付成功签名验证,本方法也可用于其他银行的JAVA签名验证方式。

3. 名词解释

名词

解释说明

php-java-bridge

PHP和JAVA的连接桥

4. php-java-bridge安装和配置介绍

4.1 安装

Php-java-bridge下载路径:

最新php-java-bridge版本是php-java-bridge_6.2.1.tar.gz解压之后采用/usr/local/php/phpize进行模块编译,提示Cannot find config.m4,版本过高问题,采用了5.4.4.2版本。

编译及安装:

tar zxvf php-java-bridge_5.4.4.2.tar.gz

cd php-java-bridge-5.4.4.2/

/usr/local/php/bin/phpize

./configure --disable-servlet --with-java=/usr/local/java/,/usr/local/java/jre --with-php-config=/usr/local/php/bin/php-configmake make install

4.2 配置

vim /usr/local/php/etc/php.ini

[新增]

extension=java.so

[java]

java.java_home="/usr/local/java/"

java.java="/usr/local/java/jre/bin/java"

java.log_file="/var/log/php-java-bridge.log"java.classpath="/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/JavaBridge.jar"java.libpath="/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/"java.log_level="3"

java.hosts="10.204.79.232:8081"

4.3 启动

重新启动nginx或者apache,输入?php phpinfo();?可以看到java support

Enabled

java bridge

5.4.4.2

java.log_level

2

手动启动javaBridge

java -jar JavaBridge.jar SERVLET:8080

也可以尝试使用java -jar JavaBridge.jar SERVLET_LOCAL:80814.4 测试

解压javaBridge.jar,取出java目录下相关的Java.inc文件测试代码:

require_once("java/Java.inc");

$string = new Java("java.lang.String", "HelloWorld");echo $string;

$system=new Java("java.lang.System");

echo "Java version=".$system-getProperty("java.version")." ";注意:java/Java.inc记得从javaBridge.jar解压出来放在相关php代码中注意取值:java_is_true java_is_false java_values5. 注意事项及配置过程中的问题

下述描述在实际配置测试过程中可能会碰到的问题及解决方法:

5.1 问题

问题1:

configure: error: host_alias is not set. Make sure to run config.guessBack-end configuration failed.

Please install the recommended autoconf, libtool and automake versionsor disable back-end configuration and use the pre-compiled J2EE back-end:

./configure --disable-backend --with-java=JAVA_HOME

configure: error: ./configure.gnu failed for server安装yum install libtool即可

5.2 注意事项

事项1:

远程调用require_once(‘‘);需要设置php.ini的allow_url_include参数为on,同时编辑 JavaBridge 部署的 Web 应用程序目录中的 web.xml 文件,如下:

取消对这个部分的注释,以便允许对您的 Java 类进行远程访问init-param

param-namepromiscuous/param-name

param-valueOn/param-value

/init-param

事项2:

在实际生产环境中,考虑到如果每台机器都部署一个JavaBridge服务的话,不好维护。故考虑在单台或2台左右机器上部署,其他机器连接到部署机器上,可以做分流承压的功效并且易监控。在外网环境下发现在调用部署环境的内外网IP都无法获取到指定文档。实际require_once本质就是调用部署环境的java.inc文件,可以考虑把相关文件放在本地生产环境上,但在引用Java_require相关JAR包会提示连接不到JavaBridge服务,阅读Java.inc可以查看它会通过几个地方设置JAVA_HOST宏变量,第一种是通过require_once里面的IP或者域名和端口,另外一种是在未设置JAVA_HOST宏变量的前提下读取php.ini,如果都没有java.hosts参数则默认为127.0.0.1:8080。

排除第一种方式如果采用读取php.ini的话,因为本身java.hosts参数不属于PHP可人为设置的参数,采用ini_set函数并不能指定java.hosts的值,所以一种方式是在所有项目的生产环境的php.ini都指定内网IP和端口,如java.hosts=10.204.79.231:8080。还有一种方式,查阅Java.inc可以看到是在未设置JAVA_HOST变量的前提下是去读取php.ini,我们可以在require_once(‘java/Java.inc‘)之前新增一行define ("JAVA_HOSTS", $host)。

5.3 参考例子

个人的实际测试代码如下:

private function _checkSign($strText, $strSign){$ret = false;

try{

$host = ConfigWrapper::load()-services-phpjava-host;if($host != NULL){

define ("JAVA_HOSTS", $host);

}

require_once(‘java/Java.inc‘);

java_require(self::CMBJAR);

$pay = new Java(‘testCdpaySign‘, self::CERFILE);$result = $pay-checkSign((string)$strText, (string)$strSign);if(java_is_true($result) == 1){

$ret = true;

}

}catch (\Exception $e) {

Logger::debug("_checkSign = " . $e-getMessage());}

return $ret;

}