如何调用基础代码java 如何调用方法java

java jsp页面怎么写java类?怎么调用java代码?jsp中写java代码成为scriptlet,写在%%之间就可以了 。
Scriptlet是包含在%和%之间的Java代码,在Web容器处理JSP页面时执行,通常会产生输出,并将输出发送到客户的输出流里 。Scriptlet除了不能定义类和方法、不能用import引入类外,可以包含任何有效的Java代码 。(Java类在Jsp外部定义,可用page指令的import属性引入 , 也可以Java Bean的形式使用 。Java中的方法必须在类内定义 , 但Jsp允许使用声明定义方法 。窗体(GUI)设计代码在Jsp中无效) 。
Scriptlet例程:
%@ page contentType="text/html; charset=gb2312" %
html
head
titleJSP基本语法/title
/head
body
h1Scriptlet示例页面/h1
table border="1"
caption乘法口诀表/caption
%-- 在网页中嵌入Java代码的主要方法 --%
%
for(int i=1; i=9; i) {
int j=1;
//out是JSP的一个内部对象,print方法用于向客户端输出数据
out.println("tr");
for(; j=i; j) {
out.print("td"j"*"i"="j*i"/td");
}
for(;j=9;j) {
out.print("td /td");
}
out.println("/tr");
}
%
/table
/body
/html
JSP如何调用java代码首先,在服务端定义了一个类和静态方法:
public class Test {
public static String sayHello(String name){
return "hello, "name;
}
}
注意:必须是公开的静态方法 。
ajax分为同步、异步调用,如果没有传递回调函数 , 则是同步调用;
如果传递回调函数,则是异步调用 。
同步调用
script type="text/javascript"
......
try{
var obj = Test.sayHello('world!');
......
}catch(e){
//e.error 错误码
//e.message 错误描述
}
......
/script
不传递回调函数,以try…catch来处理错误 。
在同步调用模式下 , 如果有网络错误、业务逻辑错误等,会抛出一个异常 。
异步调用
script type="text/javascript"
......
Test.sayHello('world!',
function(obj){//success callback function
......
},
function(error, message){//fail callback function
}
);
......
/script
传递回调函数作为参数 。如果只有一个回调函数, 则默认是成功的回调函数 。
Excel中的VBA如何调用Java呀?VBA中调用Java程序
1、创建一个Java Class代码可以简单如下
public class Test {
public static void main(String[] args) {
System.out.println("Test");
}
}
2、编译Class
3、在VBA中通过如下代码调用java
Dim ws As WshShell
Dim we As WshExec
Dim i As Integer
Set ws = New WshShell
Set we = ws.Exec("javawe:\Test")
MsgBox we.StdOut.ReadAll
Set ws = Nothing
Set we = Nothing
4、执行上面VBA代码会弹出对话框显示Test字样
注意要点:
(1)VBA工程中药引用Windows Script Host Object Model
(2)机器上要安装JRE,而且要将JRE Bin路径写入到环境变量PATH中,否则需要指出JAVAW的完整路径
其实可以使用 VBA中的Shell调用JAVA , 但是这样就只能是执行java,没有返回值,使用如上方法可以通过System.out.print输出字符作为返回结果被获取到
Java是一种可以撰写跨平台应用程序的面向对象的程序设计语言 。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群 。
如何从使用 JNI Java 调用本机 代码JNI是Java Native Interface的缩写,中文为JAVA本地调用 。从Java 1.1 开始 , Java Native Interface (JNI)标准成为java平台的一部分 , 它允许Java代码和其他语言写的代码进行交互 。JNI一开始是为了本地已编译语言 , 尤其是C和C而设计的,但是它并不妨碍你使用其他语言,只要调用约定受支持就可以了 。
使用java与本地已编译的代码交互,通常会丧失平台可移植性 。但是,有些情况下这样做是可以接受的,甚至是必须的 , 比如,使用一些旧的库,与硬件、操作系统进行交互,或者为了提高程序的性能 。JNI标准至少保证本地代码能工作在任何Java 虚拟机实现下 。
------------------------------------------------------------------
编写带有native声明的方法的java类
·使用javac命令编译所编写的java类
·使用javah ?jni java类名生成扩展名为h的头文件
·使用C/C实现本地方法
·将C/C编写的文件生成动态连接库
·ok
1) 编写java程序:这里以HelloWorld为例 。
代码1:
class HelloWorld {
public native void displayHelloWorld();
static {
System.loadLibrary("hello");
}
public static void main(String[] args) {
new HelloWorld().displayHelloWorld();
}
}
声明native方法:如果你想将一个方法做为一个本地方法的话 , 那么你就必须声明改方法为 native的,并且不能实现 。其中方法的参数和返回值在后面讲述 。Load动态库:System.loadLibrary("hello");加载动态库(我们可以这样理解:我们的方法 displayHelloWorld()没有实现,但是我们在下面就直接使用了,所以必须在使用之前对它进行初始化)这里一般是以static块进行加载的 。同时需要注意的是System.loadLibrary();的参数“hello”是动态库的名字 。
2) 编译
没有什么好说的了 javac HelloWorld.java
3) 生成扩展名为h的头文件 javah ?
jni HelloWorld 头文件的内容: /* DO NOT EDIT THIS FILE - it is machine generated */
1. include
/* Header for class HelloWorld */
1. ifndef _Included_HelloWorld
2. define _Included_HelloWorld
3. ifdef __cplusplus
extern "C" {
1. endif
/*
* Class: HelloWorld
* Method: displayHelloWorld
* Signature: ()V
* /
JNIEXPORT void JNICALL Java_HelloWorld_displayHelloWorld (JNIEnv *, jobject);
1. ifdef __cplusplus
}
1. endif
2. endif
(这里我们可以这样理解:这个h文件相当于我们在java里面的接口 , 这里声明了一个 Java_HelloWorld_displayHelloWorld (JNIEnv *, jobject);方法,然后在我们的本地方法里面实现这个方法,也就是说我们在编写C/C程序的时候所使用的方法名必须和这里的一致) 。
4) 编写本地方法实现和由javah命令生成的头文件里面声明的方法名相同的方法 。
代码2:
1 #include "jni.h"
2 #include "HelloWorld.h"
3 //#include other headers
4 JNIEXPORT void JNICALL Java_HelloWorld_displayHelloWorld(JNIEnv *env, jobject obj)
{
【如何调用基础代码java 如何调用方法java】printf("Hello world!\n");
return;
}
注意代码2中的第1行 , 需要将jni.h(该文件可以在%JAVA_HOME%/include文件夹下面找到)文件引入,因为在程序中的JNIEnv、 jobject等类型都是在该头文件中定义的;另外在第2行需要将HelloWorld.h头文件引入(我是这么理解的:相当于我们在编写java程序的时候,实现一个接口的话需要声明才可以,这里就是将HelloWorld.h头文件里面声明的方法加以实现 。当然不一定是这样) 。然后保存为 HelloWorldImpl.c就ok了 。
5) 生成动态库
这里以在Windows中为例 , 需要生成dll文件 。在保存HelloWorldImpl.c 文件夹下面,使用VC的编译器cl成 。cl -I%java_home%\include -I%java_home%\include\win32 -LD HelloWorldImp.c -Fehello.dll 注意:生成的dll文件名在选项-Fe后面配置,这里是hello,因为在HelloWorld.java文件中我们loadLibary的时候使用的名字是hello 。当然这里修改之后那里也需要修改 。另外需要将-I%java_home%\include -I%java_home%\include\win32参数加上,因为在第四步里面编写本地方法的时候引入了jni.h文件 。
6) 运行程序 java HelloWorld就ok.
---------------------------------------------------------------
下面是一个简单的例子实现打印一句话的功能,但是用的c的printf最终实现 。一般提供给java的jni接口包括一个so文件(封装了c函数的实现)和一个java文件(需要调用path的类) 。
1. JNI的目的是使java方法中能够调用c实现的一些函数 , 比如以下的java类,就需要调用一个本地函数testjni(一般声明为private native类型) , 首先需要创建文件weiqiong.java,内容如下:
class weiqiong { static { System.loadLibrary("testjni");//载入静态库 , test函数在其中实现 } private native void testjni(); //声明本地调用 public void test() { testjni(); } public static void main(String args[]) { weiqiong haha = new weiqiong(); haha.test(); } }
2.然后执行javac weiqiong.java,如果没有报错,会生成一个weiqiong.class 。
3.然后设置classpath为你当前的工作目录 , 如直接输入命令行:set classpath = weiqiong.class所在的完整目录(如 c:\test)再执行javah weiqiong,会生成一个文件weiqiong.h文件,其中有一个函数的声明如下:
JNIEXPORT void JNICALL Java_weiqiong_testjni (JNIEnv *, jobject);
4.创建文件testjni.c将上面那个函数实现,内容如下:
1. include
2. include
JNIEXPORT void JNICALL Java_weiqiong_testjni (JNIEnv *env, jobject obj) { printf("haha---------go into c!!!\n"); }
5.为了生成.so文件 , 创建makefile文件如下:
libtestjni.so:testjni.o makefile gcc -Wall -rdynamic -shared -o libtestjni.so testjni.o testjni.o:testjni.c weiqiong.h gcc -Wall -c testjni.c -I./ -I/usr/java/j2sdk1.4.0/include -I/usr/java/j2sdk1.4.0/include/linux cl: rm -rf *.o *.so 注意:gcc前面是tab空,j2sdk的目录根据自己装的j2sdk的具体版本来写,生成的so文件的名字必须是loadLibrary的参数名前加 “lib” 。
6.export LD_LIBRARY_PATH=. , 由此设置library路径为当前目录,这样java文件才能找到so文件 。一般的做法是将so文件copy到本机的LD_LIBRARY_PATH目录下 。
7.执行java weiqiong,打印出结果:“haha---------go into c!!!”
html里怎么调用java代码?在html页面中,使用js调用java类要使用ajax,具体方法步骤如下:
1、将要调用的类名和方法名作为参数传给某个servlet.这一步的方法有许多种,用框架,或者直接用xmlHttpRequest对象;
2、要调用的类名和类的完整包路径最好写在配置文件里,这里假设类名为Hello,方法名为sayHello,并且sayHello方法不带参数,类路径为com.demo.Hello 。
3、配置文件AjaxConfig.properties
Hello = com.demo.Hello
4、传入的参数设置为 class=Hellomethod=sayHello
在servlet中作如下处理:
String className=request.getParameter("classname");
String methodName=request.getParameter("method");
String classPath=null;
5、读取配置文件,取出className所对应的值放入classPath变量中,
Class c=Class.forName(classPath);//加载你所指定的类
Class param[]=new Class[0];//方法的参数为0个
Method m=null;
String returnValue=https://www.04ip.com/post/null;//返回值
try {
m = c.getMethod("sayHello",param);//获取你所指定的类中的指定方法
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchMethodException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
returnValue=https://www.04ip.com/post/(String)m.invoke(c.newInstance(), new Object[0]);//调用你所指定的方法
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
6、将returnValue的值返回给客户端即可
类Hello.java
public class Hello
{
public String sayHello()
{
return "hello";
}
}
如何在c中调用java代码对于本地函数
JNIEXPORT void JNICALL Java_video1_TestNative_sayHello(JNIEnv * env, jobject obj)
{
cout"Hello Native Test !"endl;
}
JNIEnv类型代表Java环境 。通过这个JNIEnv*指针,就可以对Java端的代码进行操作 。如,创建Java类得对象,调用Java对象的方法 , 获取Java对象的属性等 。
JNIEnv的指针会被JNI传送到本地方法的实现函数中来对Java端的代码进行操作
JNIEnv类中的函数:
NewObject/NewString/NewTYPEArray:new新对象
Get/SetTYPEField:获取属性
Get/SetStaticTYPEField :获取静态属性
CallTYPEMethod/CallStaticTYPEMethod
关于如何调用基础代码java和如何调用方法java的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

    推荐阅读