由于采用了 Access 数据库,数据库文件的绝对路径是获取数据库连接时的关键参数,而本例中又同时采用了 JSF 框架,JSF 页面调用 JavaBean 中的方法时与普通 JSP 页面不同,要想将 request 对象直接传递到 JavaBean 的相关方法中来获取站点路径是比较麻烦的。前后思索想到一个笨方法,可以直接在获取连接的方法中获得路径,无需从 JSF 页面获取参数。代码如下:
public static Connection getConnection() {// 获得当前 JSF 上下文环境
FacesContext context = FacesContextgetCurrentInstance();
// 获得 FacesContext 的 Application 对象
Application application = contextgetApplication();
// 获得 classes 目录的绝对路径
URL classesUrl = applicationgetClass()getResource("/");
// 获得数据库文件的绝对路径
String dbpath = classesUrltoString() + "//data/blogDatamdb";
// 截去 URL 前端文件访问协议 file:// 字符串
dbpath = dbpathsubstring(6);
String url = "jdbc:odbc:driver={Microsoft Access Driver (mdb)};DBQ="
+ dbpath;
Connection conn = null;
try {
ClassforName("sunjdbcodbcJdbcOdbcDriver");
conn = DriverManagergetConnection(url, "", "");
}catch(Exception ex) {
exprintStackTrace();
}
return conn;
}
问题:你需要清空并且关闭流对象。
我提供两种解决方案,并且解决了中文文件名乱码问题,兼容IE和火狐两种浏览器。
你可以选择。
方案一:代码写在一个jsp文件中。
下载请求页面传递过来的参数(当然具体看你要几个参数)
<rich:column>
<h:outputLink value="filejsp" rendered="true">
<f:param name="docId" value="#{itemiddocId}" / >
<f:param name="revNo" value="#{itemidrevNo}" />
<f:param name="attachmentNo" value="#{itemidattachmentNo}" />
<f:param name="filename" value="#{itemfileName}" />
<f:param name="storageName" value="#{itemstorageName}" />
<h:outputText value="#{itemfileName}" />
</h:outputLink>
</rich:column>
filejsp 文件代码:
<%@page language="java" contentType="application/octet-stream"pageEncoding="utf-8"%>
<%@page import="javaio,javautil,javanetURLEncoder"%>
<%responsereset();
String ATTACHMENTSTOREPATH = 已经上传了的附件的路径,自己应该知道?
int docId = 0;
int revNo = -1;
int attachmentNo = 0;
String filename = null;
String storageName = null;
try {
docId = IntegerparseInt(requestgetParameter("docId"));
revNo = IntegerparseInt(requestgetParameter("revNo"));
attachmentNo = IntegerparseInt(requestgetParameter("attachmentNo"));
//在火狐浏览器下载,含空格的文件名会出现异常,于是将空格用下划线代替
filename = (new String(requestgetParameter("filename")
getBytes("ISO-8859-1"),"UTF-8"))replace(" ", "_");
//将空格转化为下划线后重新对文件名进行UTF-8编码
filename = javanetURLEncoderencode(filename, "UTF-8"); storageName = requestgetParameter("storageName");
} catch (NumberFormatException nfe) {
}
if (docId >= 0 && revNo > -1 && attachmentNo >= 0) {
String filePath = null;
filePath = ATTACHMENTSTOREPATH + Fileseparator + storageName;
responsesetContentType("application/octet-stream");
//因为浏览器会将字符GBK编码,所以从数据库获得的UTF-8需要转换成GBK
//UTF-8一个汉字24位,GBK一个汉字16位
//Start UTF-8 to GBK(相对以前的程序主要就是修改了这里)
String str=filename;
StringBuffer sb = new StringBuffer();
for(int i=0; i<strlength(); i++) {
char c = strcharAt(i);
switch (c) {
case '+':
sbappend(' ');
break;
case '%':
try {
sbappend((char)IntegerparseInt(
strsubstring(i+1,i+3),16));
}
catch (NumberFormatException e) {
throw new IllegalArgumentException();
}
i += 2;
break;
default:
sbappend(c);
break;
}
}
String result = sbtoString();
result= new String(resultgetBytes("ISO-8859-1"),"UTF-8");
responseaddHeader("Content-Disposition", "attachment; filename=" + new String(resultgetBytes("GBK"),"ISO-8859-1"));
//End UTF-8 to GBK
BufferedOutputStream bos = null;
BufferedInputStream bis = null;
try {
bos = new BufferedOutputStream(responsegetOutputStream());
bis = new BufferedInputStream(new FileInputStream(filePath));
byte[] buffer = new byte[1024];
int n = -1;
while ((n = bisread(buffer)) > -1) {
boswrite(buffer, 0, n);
}
} catch (Exception e) {
eprintStackTrace();
} finally {
if (bis != null)
bisclose();
if (bos != null){
outclear(); out = pageContextpushBody(); bosclose(); } bis = null;
bos = null;
}
}
%>
此方案中如果你去掉:outclear();
out = pageContextpushBody();
报的错将和你的一模一样,不信你试试?
方案二:用Servlet下载,和你的是一样的。
还是页面过来的参数: <h:outputLink value="//">其中//是你调用的Servlet
<rich:column>
<h:outputLink value="//">
<f:param name="storage" value="#{liststorageName}" />
<f:param name="display" value="#{listdisplayName}" />
<f:param name="status" value="#{liststatus}" />
<h:outputText styleClass="input1_9pt_ul" value="#{listdisplayName}" />
</h:outputLink>
</rich:column>
public class PrFileServlet extends >
通常如果使用ajax的话,并不是特别需要提交表单,只需要在提交按钮上添加onclick事件,然后传入参数,交给后台处理就可以了。
如果不实用ajax的话, 需要设置form 的action属性,action=“XXjsp”,这样的话,在提交的时候,通过Request能够获取到表单中,相应项的值。
1,首先你要确定你在后台查出来的数据是否是你需要的,测试方法:可以把相关JPA中的sql语句放到mysql图形 *** 作界面查询。如果这里查出数据是你需要的,那么可以在调用方法的地方看看是否传的参数不对(参数位置传的不对应)。如果确定对:那么在此打印出你查出来的数据。对比之前在图形界面查出来的数据。看看是否一致。如果一致:确定是否将数据绑定到后台。
2:以上都正确的话,检验JSF页面上遍历或者显示的变量名字是否与你后台绑定的变量名字相同。
如果一样,检查JSF页面上是否有条件不然某些数据显示。
3:如果还有问题可以再问我。我之前的工作环境也是JSF,JPA MYSQL
美国联合攻击战斗机(JSF)是20世纪最后一个重大的军用飞机研制和采购项目洛马中标。
2005年4月26日美国空军公布了正式服役的首批次的F/A-22EMD猛禽战斗机部分性能
机全长:189米
机全高: 508米
翼展宽:1356米
翼面积:7803平方米
机空重:16000公斤(最新推估)
全备起飞:≥35000公斤
内载燃油:机密, 一说14375L
搭载d量:2270公斤(全内载)
搭载d量:≥9000公斤(含外挂,一说可达12tons)
机身材料重量比:42%钛合金,23%复合材料,15%铝合金,20%其它
升限:18288米
可控迎角机动:超过正负60度
实际超音速巡航速度:172马赫 (超过YF22指标15%)
最大速度:20马赫
加速能力:54秒(超过YF22指标2%)
海平面爬升率:350米/秒以上
最大G限:-3G/+9G(人体正常 *** 作限度)
瞬间盘旋角速率:30度/秒
加速能力:(自200节加速至1马赫) 小于30秒
美国FA22采用了比美国F117A的分段模拟后合成隐身设计更先进、更全面和精确的设计技术。
美国FA22正面雷达反射率为0065平方米(俄制苏27正面反射为10平方米)
FA22正面雷达反射率为2~3平方米,仅为苏27侧面雷达反射率的1/100。
FA22同样使用了先进的红外隐身技术,通过喷流冷却矩形喷口,垂尾、平尾、尾撑向后延伸,可遮蔽发动机喷口的红外线辐射,蒙皮采用波音公司的TopCOAT红外抑制涂料,有效降低了超音速巡航时产生的红外辐射。F119发动机也才有了红外抑制措施,在推力下降2%-3%的情况下就能将红外辐射强度下降80%,可使红外辐射波瓣宽度变窄,有效缩小了红外制导导d的可攻击范围。
优于FA22采用了新式隐身设计,使得雷达波散射中心和红外辐射中心改变,使得敌方的雷达制导导d和红外制导导d脱靶量增加,此外FA22也装备了新式智能红外诱饵d,和先进拖拽式雷达诱饵d。
洛马工程师声称,F-22的隐形性能将能使其安全接近S-300级防空单位至约24-25公里左右的距离,但是如果使用JDAM的话,其能攻击S-300的有效距离也差不多就是如此(所以美军目前才在积极开发能自F/A-22d舱发射,射程从400-600公里至1000-1850公里不等的高低配巡航导d)
澳大利亚国防部的评估:
俄制NO11相控阵雷达(SU-35/SU-37/SU-47的雷达配备)能侦测的最大距离/R-77空对空导d寻标器(AGAT9B-1103M / 9B134能追踪到的最大距离 / R-77寻标器能锁定的最大距离
F15/SU27 (正面RCS: 5-10m2): 180-200KM / 70-80KM / 15-20KM
F/A-18 C (正面RCS: 1-2m2) : 140-165KM / 45-55KM / 10-15KM
RAFALE B/C (正面RCS: 05m2): 90-95KM / 25-35KM / 8-10KM
F/A-18 E/F (正面RCS: 01m2): 75-85KM / 20-25KM / 7-8KM
F-22A (正面RCS : 0001m2以下): 15-18KM / 5-6KM / 1-2KM
■FA-22的射频管理技术--敌方不要指望截获FA22的雷达波束来探测它的存在
美国FA22战斗机除了采用隐身和抑制红外辐射的方法隐身外,还采用了先进的电磁波射频管理抑制技术,因为如果不采用先进的电磁波射频管理抑制技术将反而更容易被敌方发现。
FA-22采用先进的APG-77有源相控阵雷达,美国APG-77雷达除了传统的雷达功能外,还集成了情报侦查、电子干扰、通信等功能,并支持无源定位探测能力。APG-77雷达的扫描速度极快,减小了被敌方截获和识别的概率,同时符合美军低可截获(LPI)要求。APG-77采用的低可截获技术包括根据目标探测需要控制发射功率,伪装码扩谱等。
APG-77雷达还具有非合作目标识别能力(NCTR),可不通过容易被截获的敌我识别问答装置对远方目标进行识别分类。非合作目标识别能力(NCTR)原理是,依靠APG-77雷达的逆向合成孔径技术的极高分辨率(达到30厘米)对远方迎头飞行的战斗机的发动机转动叶片的回波进行分析处理,计算远方战斗机的发动机的叶片数量和转速进行敌我识别。
另外,美国FA22战斗机还采用了综合电子战系统中的ALR-94雷达警告接收机与先进的APG-77雷达配合实现了荫蔽接敌能力。ALR-94雷达警告接收机可探测范围可达460公里、360度全方位探测。能为为APG77雷达提供185公里距离内的目标位置指示。在ALR-94雷达警告接收机的指示下,APG-77雷达可采用22度针状波束对指向的目标进行扫描,提高了搜索效率外,还使得敌方几乎无法截获F22的雷达信号,ALR-94雷达警告接收机还可直接向AIM-120空对空导d实时输入目标数据,同时通过APG-77雷达的针状波束对指向为导d提供目标距离和速度参数。从而实现隐身进行打击能力,这就技术被美军称为“窄波束交错搜索与跟踪”技术(NBILST)。ALR-94雷达警告接收机也可以为反辐射导d提供目标指示。
FA-22还采用传感器孔径综合设计,机上布置的20多个电磁天线就能完成原来第三代F15战斗机上60多个天线才能完成的功能。
FA22采用了敌方无法截获的激光综合飞行数据链,能实现16机编队协调作战。可分为4个4机编队作战。每个小队都能实现信息共享。
机载雷达:AN/APG-77主动数组雷达
GaAs T/R单元数:1500 --2200单元
最大输出功率:≥ 15千瓦
侦测距离(最大距离):400公里--460公里
侦测距离(一般战机):240公里
空对空侦测距离:
在隐形模式下:192公里 LPI标准--美军低可截获标准
在非隐形模式下:260-270公里
UHR分辨率模式下:可获致距离160公里目标物高达30厘米级分辨率雷达影像
最多可同步追踪100个目标
简单举例:如果在没有预警机或者地面引导预警支援的情况下,可以选择16机编队其中2架FA22雷达开机,其他FA22保持静默,发现敌方目标后,前方2个编队发射AIM120导d发动超视距攻击后机动脱离,后续4机编队接替进行中段制导,以此形成轮流攻击、制导,实现强大的超视距攻击能力。事实上,隐身超视距攻击的空战战术不只这种简单的描述,根据战场要求还有非常多的战术选择。
■FA22过失速机动与超音速巡航能力--长空霸王■■
美国FA22相对于以前的战斗机,最大的突破就是其过失速机动与实战环境下的超音速巡航能力了。
超音速巡航指得是飞机速度超过14马赫以上,并持续飞行30分钟以上的飞行能力,美国FA22战斗机不开加力,实际巡航速度高达172马赫。这主要得益于其出色的低阻气动外形、武器内置、和大推力小涵道比的F119发动机。
FA22先进的气动外形和机体结构,使它具有大幅度的放静宽稳定度,具有非常优秀的可持续超音速飞行能力,而在亚音速飞行时FA22具有高度的纵向静不稳定度,据有关评估可达35%(中国J8主动控制验证机为4%,美国F-16/俄国Su27为5%)和中立稳定度水平。
过失速机动(PSM)指得是飞机在失速状态下仍然可以进行可控的机动能力。美国FA22的过失速机动能力源于其先进的气动布局、矢量推力控制能力、可靠的大推力发动机和飞行控制系统控制律。使FA22在空战的近距格斗中可以迅速改变机头指向,转换敌我态势。
FA22在正负60度的超大迎角状态下进行翻滚时,机头指向可瞬间改变速率达到90度/秒;在正负40度大迎角飞行下还能进行360度横滚,在正负20度迎角下的翻滚速率有50度/秒,提高到100度/秒。FA22的电传控制系统还能实现多种直接力控制机动模式,改善了飞机对地攻击时瞄准的精度,减小了飞行员的疲劳,提高了低空飞行品质。
FA22的超音速巡航使它具有快速外推拦截线、快速接敌,快速占位,大幅增加导d攻击区域、快速脱离战场,摆脱攻击的能力。计算机模拟计算,FA22的空战效能比在跨音速下提高了200%,超视距空战效能提高500%。在战场上FA22的可控制区域面积比现役第三代战斗机扩大11倍。
英国方面的计算机仿真则显示: 在和Su-35/37等级的对手交锋时, F-22的的获胜机率高达91%, 换算成交换比的话则高达102:1。
完善的隐身能力使得FA22能轻易识别锁定,并在50至80公里(使用AIM-120C/D)乃至100至200公里(使用AADRM)的距离外朝他国敌机发动视距外攻击时,敌国战机的雷达却难以在20至30公里距离外有效锁定猛禽;至于在红外线隐形方面,目前仅知道有洛马工程师曾声称:其表现较猛禽战机的雷达隐形性"不惶多让"。
FA22和F-15与F-16等上代战机相较,其超越群伦的实战高速飞行性能与超音速机动性使得同样的空对空导d在其手中,有效射程可望延伸50-100%,并使敌方AAM/SAM的有效迎击距离缩短25-75%。
依照猛禽中队飞行员说法,近来其已经与空军F-15和F-16比试过多次,而截至目前,尚未有任何一架F-15或F-16找到在被猛禽"击落"前,先行发现猛禽战机存在的方法;在过去一年来,猛禽战机和F-15C间的多次空中仿真较量,取得104:0之压倒性综合仿真战果,其中包括那次"以一敌五,三分解决"的经典传奇.在和F-16间的典型仿真测试中,通常是以一对猛禽战机对抗6-8架F-16战隼,在隐形与15马赫级超音速巡航功能下,战斗的结局几乎总是一面倒。F-22在开战后4-5分钟内将所有茫然不知的F-16机群全数屠杀。
网页有错误,可能是病毒造成的,也可能是浏览器的原因造成网页有错误,还有可能就是自身网页的问题造成网页错误
解决办法
1、打开浏览器,点“工具”→“管理加载项”那里禁用所有可疑插件,或者你能准确知道没问题的保留。然后→工具→INTERNET选项→常规页面→删除cookies→删除文件→钩选删除所有脱机内容→确定→设置使用的磁盘空间为:8MB或以下(我自己使用1MB)→确定→清除历史纪录→网页保存在历史记录中的天数:3以下→应用确定(我自己使用的设置是0天)。
2、还原浏览器高级设置默认值:工具→INTERNET选项→高级→还原默认设置。
3、恢复默认浏览器的方法“工具”→Internet选项→程序→最下面有个“检查Internet Explorer是否为默认的浏览器”把前面的钩选上,确定。
4、设置主页:“工具”→Internet选项→常规→可以更改主页地址→键入你喜欢的常用网址→应用。
5、如果浏览器中毒就使用金山毒霸系统修复选择系统清理选项,点击立即清理选择安全百宝箱中系统修复,即可解决网页上有错误解问题
如果是手机建议使用免费金山手机卫士,清理你的 手机病毒和垃圾再打开网页
以上就是关于如何取得Bean的class的绝对路径全部的内容,包括:如何取得Bean的class的绝对路径、求解!!!JSF实现下载功能老是报这个错,getOutputStream() has already been called for this response。、javascript如何提交JSF表单等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)