Java核心编程十四:Applet与Web

1 Applet基础
1.1 Applet简介
Applet是一种将Java程序,通常为UI程序加载进web浏览器,在用户的浏览器中执行的一套转换机制。因而HTML页面中必须支持相关的标签,告诉浏览器下载哪些类文件,以及如何在网页上进行显示的信息。如果一切就绪,则由浏览器中的java-plugin来执行。
将java类封装成applet比较简单,只需要继承自JApplet,然后将我们UI组件add到其中即可。
import javax.swing.*;
/*
 *  <applet code="TestApplet.class" width="300" height="300"></applet>
 */

public class TestApplet extends JApplet
{
    public void init()
    {
	JLabel label = new JLabel("Hello world",SwingConstants.CENTER);
	add(label);
    }
}

java.applet.Applet
void init() 第一次加载applet时调用的方法,进行初始化操作
void start()  开始执行
void stop()  停止执行
void destory() 释放资源
1.2 安全相关
Applet提供了安全机制,以防止未授权的applet访问本地环境。通常它可以在沙箱中下载服务器上的数据,显示图片、播放音乐、取得用户的输入并返回给服务器。
当在沙箱中执行时,它不能访问本地可执行程序和资源;只能与当前服务器通信;只能极少数的系统信息如OS名称与版本等;如果希望获得更大的能力,则需要通过证书认证,以可以像本地应用一样访问系统。

1.3 HTML标记
<applet code="com.aaa.bbb.TestApplet.class",weight="300",height="300"></applet>
除了上面的标记与属性外,还支持以下的属性:
align   用于处理与周围文字的位置关系
archive 用于指定代码依赖的存储文件位置
object  用于指定序列化的对象的文件位置
name    起个名字,方便用js访问
alt     如果不支持applet,则浏览器应显示的内容
如果希望向applet传递参数,则可以在apple标记中,增加<param name="",value="">标记来进行。如果需要传递多个参数,则增加多个标记即可。参数可以通过getParameter(key)来获取。

1.4 处理多媒体
如今的浏览器已经支持img和audio等标签,用applet来处理已无必要。
AudioClip getAudioClip(URL u)  从指定位置获取音频,URL最好是服务器本地路径
Image getImage(URL u)  获取图片
void play(URL u)

1.5 与浏览器通信
通过applet的getAppletContext()方法可以获得浏览器环境的一个句柄。
通过AppletContext可以和浏览器进行通信。

Applet getApplet(String name)  获取当前网页指定名字的applet
Enumeration getApplets()   获取当前网页所有applet
void showStatus(String s)  在浏览的状态栏显示字符串
void showDocument(URL u)   通知浏览器加载指定的url

通过提供main,我们可以让程序,即可以在浏览器上运行,也可以本地执行。

2 应用程序打包与jar文件
2.1 jar简介
jar包可以方便的将多个class文件以及其他的资源,如图片、声音等打到一个包里,压缩传输,比较高效,使用上也比较方便。jdk的许多库都以jar包的形式存在。此外applet的archive属性也可以引用jar包。

工具jar用来创建jar包,jar其语法和tar类似,而jar文件本质是个ZIP文件。

2.2 包描述信息
jar包中包含类文件、程序需要的相关文件以及最重要的描述存档特性的清单文件-MANIFEST.MF。它在META-INF子目录中。manifest文件由多个节构成,用于描述版本、类文件、包信息等。jar工具提供了m参数,可以向manifest文件中增加新信息。

manifest中可以定义包是密封性,如果设置了Sealed:true,则其他人无法再将文件放入此包中。

2.3 创建自运行jar文件
将相关文件打到包中,在manifest文件中说明主类即可。
假设我们生成了测试类Test.class,则在manifest中,增加Main-Class:path/of/class/Test
然后可以在命令行下运行java -jar app.jar即可
如果使用Eclipse,则可以通过工程的export操作,自动化的创建一个jar包。

2.4 资源
资源是程序需要使用的如图标、声音等文件,在Java中资源的定位和使用由程序自己来决定。而在微软的开发环境下,资源通常是在程序内部,由IDE生成和管理。

如果要使用资源,首先获得具有资源的对象的Class实例,然后调用getResource(String res/Path/Name)获得资源URL路径,最后通过URL来读取资源流。如果资源是文本,则可以直接读入;如果资源是图像或声音,则使用getImage或getAudioClip来读取。这个过程可以简化为直接调用getResourceAsStream(resName)。

java.lang.Class
URL getResource(String name) 找到与类位于同一位置的资源,返回一个URL
InputStream getResourceAsStream(String name)

3 WebStart
Java web start用于通过网络发布Java应用。用户只是通过浏览器下载程序jnlp,并支持浏览器调用,但调用后并不运行在浏览器内,而是在浏览器外运行。jnlp程序连网后会下载所需要的资源,并独立运行,用户后续再次使用jnlp程序时,会使用之前下载的缓存。

创建jnlp应用,应该将包打到jar中,然后创建一个jnlp格式的描述符文件。把文件放在web服务器上供用户下载,需要确保web服务器支持MIME类型application/x-java-jnlp-file。

javax.jnlp包中提供了供jnlp程序使用的一些API。不在此描述。

4 程序配置存储
4.1 Properties
在容器一节中,简单介绍了Properties类。其可以方便的进行平坦配置的存储和读取。
java.util.Properties
String getProperty(String key)
void setProperty(Strig key,String val)

java.lang.system
Properties getProperties() 返回java的默认配置类
String getProperty(String key) 返回指定key的配置项

4.2 Preference
Properties不适合存储结构化的数据,而Preference类则比较适合。
Java将所有的配置集中存放到配置中心,并采用树形结构进行存储,所有程序都可以共用。每个结点的路径名以/path/name的形式出现。每个结点都有一个独立的表来存放键/值对。

java.util.prefs.Preferences
static Preferences userRoot()   获取用户的配置根结点
static Preferences systemRoot() 获取系统配置的根结点
Preferences node(String path)   获取指定路径的配置
Preferences userNodeForPackage(Class c)   以当前类名路径查找配置

String get(String key,String default)  获取指定的键值,必须指定在未查找时的默认值
int getInt(String key,int default)
XXX getXXX(String key,Xxx default)  XXX为long/float/double/bool/byte[]

void put(String key,String value)
void putInt(String key,int value)

String[] keys()  枚举节点中全部键

void exportSubtree(OutputStream out)   导出配置
void exportNode(OutputStream out)
void importPreference(InputStream in)   导入配置

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值