首先你的类要继承于Applet
package com.app.applet;
import java.applet.Applet;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.security.AccessController;
import java.security.PrivilegedAction;
public class ReadFile extends Applet {
private static final long serialVersionUID = 1L;
private StringBuffer sb = null;
public String readFile() {
String str = getParameter("arr");
sb = new StringBuffer();
AccessController.doPrivileged(new PrivilegedAction() {
@Override
public Object run() {
InputStream is = ReadFile.this.getClass().getResourceAsStream(
"outFile");
BufferedReader br = null;
String temp = null;
try {
br = new BufferedReader(new InputStreamReader(is, "UTF-8"));
while ((temp = br.readLine()) != null) {
sb.append(temp + "\n");
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
is.close();
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
});
return str;
}
/**
* 请求远程服务器页面 并把服务器相应页面写成本地文件
* @param path
* @return
*/
public String getConection(final String path) {
sb = new StringBuffer();
// 同过js调用这个不能少AccessControlException 就是你没有执行这段代码的权限,
AccessController.doPrivileged(new PrivilegedAction() {
@Override
public Object run() {
URL url;
BufferedReader br = null;
try {
System.out.print(getCodeBase());
url = new URL(getCodeBase(), path);
URLConnection con = url.openConnection();
con.setUseCaches(false);
InputStream in = con.getInputStream();
br = new BufferedReader(new InputStreamReader(in, "UTF-8"));
String temp = null;
while ((temp = br.readLine()) != null) {
sb.append(temp + "\n");
}
File file = new File("E:\\test\\test.html");
BufferedWriter bw = new BufferedWriter(new FileWriter(file));
bw.write(sb.toString());
bw.flush();
bw.close();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
});
return sb.toString();
}
}
接着我们将上边的Java类编译
打成jar包
打jar包时有几点注意的package com.app.applet;其实对应的是我们jar文件中的文件夹com\app\applet,还有就是我们可能会引用外部的jar包,这时要修改MANIFEST.MF Manifest-Version: 1.0 Class-Path 外部.jar,外部jar包没有必要放在jar文件里,只要保持和相对目录即可
接着我们还要给jar文件来一个签名,不然我们还是没有权限去操作
完成了
至此我们的jar包可以被浏览器JS访问 访问看看
html中使用Applet标签
javascript中调用readFile和applet标签中的name属性值一样getConection("")和我们Java类中的方法名参数是对应着的
至此OK