其大部分属性与标签相同,这里不再赘述。
6.嵌入JSP/HTML时的问题
在嵌入到网页中时,我们经常会遇到找不到类的问题,因为所有编译好的类文件(.class文件)都位于WEB-INF目录下,但是WEB-INF目录比较特殊,只能找到被重定向到页面上。 随时都可以访问,所以初始化时无法加载.class文件,所以报异常。 因此,我们可以在该目录下新建一个与WEB-INF同级的目录来存放编译好的class文件。
写的时候可以有包结构也可以没有,也可以做成jar包。 现将已知的解决方案分为几类,记录如下:
6.1. 包中未定义
嵌入标签中,code属性只写类文件名(类名+.class); 该属性设置为类文件所在的目录。
例子:
假设有一个未定义的包结构。 其编译后的.class文件放在 目录下,jsp文件放在 的jsp目录下。 此时标记写法如下:
该属性的意思是从JSP所在位置返回一级到目录,然后进入该目录。
6.2. 定义在某个包中,首先创建一个与WEB-INF同级的目录(假设是一个目录),将WEB-INF中所有编译好的类文件复制到其中(不要破坏包组织结构),并指定代码属性。 全限定类名(即包名+类名)加.class,嵌入标签与上面类似。
例子:
假设有一个名称为cn..zyh.的包结构,其对应的.class文件自然位于cn\\zyh\目录下,该目录位于下面的目录中,而JSP文件位于目录下的jsp目录。 那么嵌入的标签就是:
6.3. 将其打入jar包中。 如果应用程序中将.class文件打入jar包,则该属性设置为jar包所在目录,code属性同上,是类的全名加上.班级形式; 但是这时候你需要指定一个属性,它的值就是jar名称。
例子
如果打入app.jar包,并且jar包放在下面的目录下,那么此时的标记应该这样定义:
七、参数
嵌入标签内的嵌套参数标签
可以传递数据,可以通过()获取。 该方法需要一个类型的键值,即
标签中的名称,方法返回
标签中的value值。
如果使用标签嵌入,参数传递应定义如下:
例子:
("") // 获取tom,是字符串类型
注:()方法是类或类的方法,可以直接调用。
8. IE 中的问题
8.1. 问题描述
有时,有些浏览器在其他浏览器上运行正常,但在IE上无法正确运行,导致浏览器死机、不显示、对其他浏览器操作无响应。
经过多方查询,这个问题可能是由于IE对Java版本的支持较低造成的。 当使用的Java版本高于其支持的版本时就会出现问题。 比如应用了Java2中swing包下的东西,就会出现在IE下。 如果出现以上问题,一般不使用就可以了。
8.2. 解决方案:
首先,不是用标签来嵌入,而是用标签代替标签。 经测试,IE下也可以显示。
其次,使用JDK中的工具来转换标签。 这些工具位于 %%\bin 目录中。
注:参考网上的方法,解决这里的问题。 无法保证问题会得到解决。
8.3. 使用步骤:
首先用标签写好*.html、*.jsp等嵌入页面,运行它(即%%\bin\.exe可执行文件),指定要转换的文件或者所在目录,点击生成转换后的文件,稍作修改即可使用。
工具运行界面如下:
8.4. 原理说明:
Java2增加了很多功能,特别是swing提供的界面控件,但并不是所有浏览器都能完全支持(上面的问题很可能是IE不支持造成的。既然 和 都可以正确运行swing组件,也许它们已经支持了),因此可以使用Java插件来弥补不支持Java 2(Java Plug-in)的浏览器。
最初,这个概念很简单,只需在网页中添加一个 < > 标签即可。 当浏览器遇到这个标签时,它会下载相应的类文件并启动自己的解释器来运行它。 浏览器在这个过程中扮演着非常重要的角色。 特别是必须具备运行Java的能力。 同时,浏览器的虚拟机也决定了可接受的Java代码版本。
由于有些浏览器不提供对高版本Java的支持,所以必须使用Java插件来解析用高版本Java开发的程序。
使用Java插件的基本目标是分离显示网页和运行Java这两个任务。 浏览器的主要任务是负责各种页面组件(如图片、文本等)的布局。 这种机制在IE中很早就存在,被称为浏览器插件。
所谓插件,就是负责渲染特定页面区域的代码模块。
假设一个页面包含一个影片剪辑。 浏览器只需要知道它应该保留的大小,然后就可以像图像或其他页面元素一样排列它。 页面这块区域的显示就交给插件了。
它可以与视频同等对待。 这时,浏览器只需要知道显示区域的大小,就可以像对待其他页面元素一样对待它,而运行任务则由Java插件来处理。
那么在IE中该怎么办呢? IE也有完全相同的特点:浏览器将对页面某一区域的控制权交给其他代码。 虽然它们被称为插件和控件,但两者名称不同,但它们都允许网络浏览器运行真正的Java2代码。
这种方式最大的好处就是可以让IE和Sun的Java运行环境不再依赖浏览器对Java的支持,更不用说浏览器支持什么Java版本了。
但这种方式也有缺点,主要有以下两个方面:一是这种运行方式需要下载安装Java插件;二是这种方式运行需要下载安装Java插件。 其次,一个简单的标签已经不够了,带有插件运行的网页需要更多的HTML代码(至少你需要告诉浏览器需要加载哪些插件……)。
对于第一个问题,您可以预先从Sun站点()下载并安装插件包,或者让浏览器在遇到或标记(如果已连接)时自动下载。
由于不同浏览器使用的插件标记不同,问题稍微复杂一些。 虽然IE的插件机制和技术很相似,但是在网页中调用它们的方法却完全不同:插件是使用标签来引入的,在IE中具有类似功能的标签称为标签。
如果您熟悉HTML,并且很少有页面需要引用Java2,您可以手动将标签嵌入到标签对中,以便页面在两种浏览器中都能正常显示。
假设要运行test.,通过Java插件运行的HTML代码如下(即将原来的标签替换为以下代码):
更方便的方法是使用Sun提供的HTML工具,它可以自动将标签转换为上述标签。 如果您有大量页面,此工具尤其值得。
注:虽然上面只描述了两种浏览器和IE,但这个理论并不局限于这两种浏览器,而是指两类浏览器(使用IE核心的浏览器和非IE核心的浏览器)。 所以上面的描述基本上适用于市面上所有主流浏览器。
9.访问本地资源时的数字签名问题----
默认情况下,客户端的沙箱机制无法操作客户端的本地资源(比如读写文件等),但我们有时需要这些操作,所以为了打破Java安全系统的限制,我们需要数字签名。
这里的数字签名主要涉及到两个命令(都位于%%\bin目录下)
下面讲一下如何使用这两个命令来完成jar包的数字签名:
假设我们的在temp.jar包下。
9.1. 使用工具生成密钥库
keytool -genkey -keystore temp.store -validity 365 -alias temp
注意:
temp.store是密钥库的名称,可以随意修改,但是后缀不能修改!
- 365 – 是设置签名证书有效期的选项,这里设置为1年
temp是一个别名,这个也可以改成你自己的名字
执行上述命令后,会在DOS窗口中提示输入密码、姓名、组织单位、地区、国家代码等信息。 随便输入即可,但要注意记住密码,因为后面会用到。 。
然后,为了确认输入是否正确,我们输入y并回车确认信息。
最后,要求我们输入temp的主密码(只需按回车即可将temp的主密码设置为与商店密码相同)!
9.2. 使用该工具导出用于签名的证书。
keytool -export -keystore temp.store -alias temp -file temp.cert
注意:
temp.store是第一步生成的名称
temp 也是我们在第一步中指定的别名
temp.cert 是我们生成的证书的名称。 您可以自行修改名称。 注意不要更改后缀。
命令执行成功后,我们会在当前目录下发现一个temp.cert文件。 这是我们刚刚生成的证书。
9.3. 使用工具对jar压缩文档进行签名
jarsigner -keystore temp.store temp.jar temp
注意:
temp.store是我们在第一步中生成的密钥库名称
temp.jar 是我们在第一步中压缩的 jar 文件。
temp 是提供者的名称,我们在这里将其设置为别名
9.4. 创建.文件
在当前目录中创建一个包含以下内容的 .file:
keystore"file:temp.store","JKS";
grantsignedBy"temp"
{
permission java.io.FilePermission"<>","read";
};
该文件的含义是所有经过temp签名的文件都可以读取所有本地文件。
经过上述操作后,我们会在当前目录下找到以下文件:
temp.jar 签名的 jar 文档
临时存储密钥库
临时证书
温度。 访问策略文件
如果没有这些文件,数字签名过程就无法正确完成。
以后如果对打包的java文件进行更改,则需要重新签名!