`
yinbinhome
  • 浏览: 120726 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

(转) Jsp中调用DLL(使用JNI)

阅读更多

我的环境: --------

1. java编译器:MyEclipse 5.5

2. web服务器: tomcat 5.5

3. C编译器: VC++6.0

4. 操作系统: winxp

5. java源文件目录: d:\study\src

6. java编译后的class文件目录: d:\study\bin

7. tomcat目录: d:\tomcat41

1.编写java文件: //Util.java

package com.jni;



public class Util {

	public native static int add(int x,int y);

	static{

		System.loadLibrary("Util");

	}

}

编译这个文件,生成Util.class文件.

2.生成对应的头文件: 打开一个dos窗口,进入存放class文件的目录:

在编译class文件时一定要在最顶级包外,在类名上要把包名加上javah com.jni.Util d:\>cd d:\study\bin d:\study\bin\>javah com.jni.Util

这样,会在d:\study\bin目录下生成com_jni_Util.h文件.

3. 编写c文件: 在VC++6.0中:File->New->Projects->Win32 Dynamic-link Library,Project name 为Util, 创建一个empty DLL project. 把2所生成的com_jni_Util.h文件和C:\j2sdk1.4.2\include目录下的jni.h, C:\j2sdk1.4.2\include\win32目录下的jni_md.h复制到Util工程目录下. (C:\j2sdk1.4.2为我的jsdk的安装路径).

在Util工程中创建一个c源文件,名为Util.c. //Util.c #include "com_jni_Util.h"

JNIEXPORT jint JNICALL Java_com_jni_Util_add (JNIEnv *env, jclass jc, jint x, jint y) { return x+y; }

4. 生成Util.dll: 编译3中的Util.c文件后,会生成Util.dll文件. /********************************************************************** 如果有如下错误: fatal error C1083: Cannot open include file: 'jni.h': No such file or directory\jdk\include\jni.h \jdk\include\win32\jawt_md.h \jdk\include\win32\jni_md.h 复制到Visual Studio.net的安装目录下的\Vc7\include目录中 ***********************************************************************/

5. 生成jar包: 把Util.class文件打成jar包,名为myutil.jar.

6. 编写jsp文件: //test.jsp <%@ page import="com.jni.Util" %>

<html> <head></head>

<body> <h3>5+7=<%=Util.add( 5, 7 )%></h3> </body> </html>

7. 把myutil.jar包复制到d:\tomcat41\common\lib目录下; 把Util.dll文件复制到d:\tomcat41\bin目录下(也可以是环境变量path的所设定的任何一个目录下); 把test.jsp复制到d:\tomcat41\webapp\test目录下.

8. 启动tomcat.

9. 在ie中输入: http://localhost:8080/test/test.jsp. 如果你能看到: 5+7=12 就成功了.

分享到:
评论

相关推荐

    使用JNI,vs2010 生成dll, JSP中调用dll

    使用JNI,vs2010 生成dll, JSP中调用dll 中创建的工程和vs2010下用于生成dll的工程代码

    jni_java_dll_jsp.zip_Java调用dll_applet_java Applet_java dll jsp_j

    java 调用dll文件相关 资料 ,applet调用本地资源的解决方案 等;整合了网上主流的解决方法

    JNI技术小结

    http://blog.csdn.net/zddmail/article/details/8661095同名博客源码文档 资源包括Java 通过JNI调用DLL,返回ArrayList. Jsp 通过JNI调用DLL. JNI资源传递

    word源码java-jniwebshell:jniwebshel​​l

    java技术栈中的jni的原理是使用java调用c、c++函数,具体实现的思路是jsp编译为class文件,该class通过jni技术调用另外一处dll来执行命令函数绕过黑名单执行命令获取回显,即可实现rasp和安全防护软件的绕过。...

    java开源包1

    开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...

    JAVA上百实例源码以及开源项目

     Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。  设定字符串为“张三,你好,我是李四”  产生张三的密钥对(keyPairZhang)  张三生成公钥(publicKeyZhang...

    JAVA上百实例源码以及开源项目源代码

     Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。  设定字符串为“张三,你好,我是李四”  产生张三的密钥对(keyPairZhang)  张三生成公钥(publicKeyZhang...

    java开源包8

    开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...

    java开源包11

    开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...

    java开源包2

    开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...

    java开源包3

    开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...

    java开源包6

    开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...

    java开源包5

    开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...

    java开源包10

    开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...

    java开源包4

    开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...

    java开源包7

    开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...

    java开源包9

    开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...

    java开源包101

    开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...

    Java资源包01

    开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...

Global site tag (gtag.js) - Google Analytics