您的位置  > 互联网

(百科)关于包中嵌入JSP/HTML的一些问题

其大部分属性与标签相同,这里不再赘述。

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文件进行更改,则需要重新签名!