2008年7月27日
一、编写helloworld程序
从helloworld开始,在JQuery库中,$为JQuery的简写形式。
<html>
<head>
<script src="../jquery-1.3.1.js" type="text/javascript"></script>
<script type="text/javascript">
//其中$(document).ready(function(){}),可以简写为$(function(){});
$(document).ready(function(){ //dom加载完毕后执行,类似于window.onload
alert('helloworld !');
});
</script>
</head>
<body><body>
</html>
二、$(document).ready与window.onload比较。
1、执行时机,window.onload为必须等待网页所有内容加载完毕后(包括图片)后才能执行。
而$(document).ready则在网页DOM结构绘制完毕后就执行,可能内容没有加载完毕。
2、编写个数,window.onload不能进行多次编写,后面编写的将覆盖前面编写的。$(document).ready可以进行多次编写。
每次都能够执行。
解决方法:
1、修改ext-all.css,找到.x-grid3-header-offset,修改为.x-grid3-header-offset{padding-left:1px;/*width:10000px;*/width:auto;}
2、在grid中加入下面代码:
复制代码 代码如下:
monitorResize: true,
doLayout: function() {
this.setSize(Ext.get(this.getEl().dom.parentNode).getSize(true));
Ext.grid.GridPanel.prototype.doLayout.call(this);
}
转http://www.fengfly.com/plus/view-165078-1.html
今天在做JAVASCRIPT的时候,发现老是出现”未结束的字符串常量”.
自己找了下应该是传参数的时候,有特殊字符引起的.网上也找了下,也有好多出现这种情况.做下总结,以方便以后查阅.
1.JAVASCRIPT引用时,使用的字符语言不一致.
比如:<script type=”text/javascript” src=”xxx.js” charset=”UTF-8″>.xxx.js文件内部使用的是GB2312的格式,外面调用使用的是UTF-8,所以文件内部部分特殊字符因为格式不一致,出现乱码,造成此原因.
2.JAVASCRIPT输出HTML字符时,前后标记不匹配.
这种比较常见,往往在输出字符串时,出现单引号(’)或双引号(”)不配对,或者是在document.write()的时候,没有正确输出单引号(’)或双引号(”)
3.参数内出现HTML标记语言或包含换行符
我今天所遇到的是这种情况.因为我所得到的数据以参数形式传给一函数,结果该数据里包含换行符,造成了此错误.
如:一般测试时只使用单行的数据,是正常的,未出现这个错误,.
当测试时使用多行数据,并使用回车链换行,就出行了此错误.因为里面包含了换行符
对于第3种情况,我的解决方法是:不直接将该数据以参数形式传递,而是先将其赋值在一个隐藏的文本内,需要调用的函数里只需读取该文本里的内容即可.
转 http://www.javaeye.com/topic/400721
Weblogic和hibernate3异常:ClassNotFoundException: org.hibernate.hql.ast.HqlToken
2009年08月25日 星期二 12:37
在做项目的时候,我用weblogic跑了一下自己的程序(开发一直在tomcat下),发现出现了这样的问题,
ClassNotFoundException: org.hibernate.hql.ast.HqlToken ,郁闷了半天,在tomcat下没有任何错误,为何到weblogic就有问题了呢?
在百度和google上搜了好久,换了n个关键词,才搜到原因如下:
原因:
Hibernate3.0 采用新的基于ANTLR的HQL/SQL查询翻译器,在Hibernate的配置文件中,hibernate.query.factory_class属性用来选择查询翻译器。
(1)选择Hibernate3.0的查询翻译器:
hibernate.query.factory_class= org.hibernate.hql.ast.ASTQueryTranslatorFactory
(2)选择Hibernate2.1的查询翻译器
hibernate.query.factory_class= org.hibernate.hql.classic.ClassicQueryTranslatorFactory
为了使用3.0的批量更新和删除功能,只能选择(1)否则不能解释批量更新的语句,当使用的时候出现了不支持条件输入中文的情况。
选择(2)可以支持输入中文,但没法解释批量更新语句了
在hibernate3中需要用到antlr,然而这个包在weblogic.jar中已经包含了antrl类库,就会产生一些类加载的错误,
无法找到在war或者ear中的hibernate3.jar。
出现这个错误之后,antlr会调用System.exit(),这样weblogic就会中止服务。
原来是冲突了,解决方法也很简单,就是添加
<prop key="hibernate.query.factory_class">org.hibernate.hql.classic.ClassicQueryTranslatorFactory
</prop>
这个属性后,就可以解决这个问题了。
有一个人的博客上写的也是也这个方法,不过他的org.hibernate.hql.classic.ClassicQueryTranslatorFactory写错了,
害的我以为这个方法不能用了,结果看看了,是他上面写错了,下面的是正确的,郁闷的是我拷贝的是上面的,最总还是被我发现了。
转 http://hi.baidu.com/lei55022033/blog/item/b20ad52c8c9f7ae58b139940.html
|
Red Hat Enterprise 5 序列号2007年03月29日 星期四 上午 02:06作系统版本的第四次重要版本发布, Red Hat 酝酿发布 RHEL 5 已经超过了两年, 主要变化包括 Linux 内核由
2.6.9 升级为 2.6.18, 支持 Xen 虚拟化技术, 集群存储等.
RHEL5的版本主要分为 Sever 和 Desktop 两个版本。
具体来说,Server版本分为:
· Red Hat Enterprise Linux Advanced Platform - 对应以前的 Red Hat Enterprise Linux AS
· Red Hat Enterprise Linux - 对应以前的 Red Hat Enterprise Linux ES
Desktop 版本分为:
· Red Hat Enterprise Linux Desktop - 对应以前的Red Hat Desktop
· Red Hat Enterprise Linux Desktop with Workstation option - 对应以前的Red Hat Enterprise
Linux WS
主要的功能包括:
1. 虚拟化技术
在各种平台上支持虚拟化技术
在 Red Hat Enterprise Linux Advanced Platform 支持存储与扩展的服务器虚拟化技术
Red Hat Network 提供各种虚拟化系统的支持
virt-manager, libvirt/virsh管理工具
2. 内核与性能
基于 Linux 2.6.18 内核
支持多核处理器
广泛的新硬件支持
更新的基于 Kexec/Kdump 的 Dump 支持
支持 Intel Network Accelerator Technology (IOAT)
对于大型SMP系统技持的增强
增强的管道缓存
内核缓存接合能力用于改进IO缓存操作
3. 安全
SELinux 增强
图形化 SELinux 管理界面
集成的目录和安全机制
增强的 IPESEC 提高安全与性能
新的审计机制用于提供新的搜索、报表和实时监控的能力
4. 网络与互操作性
支持 Autofs, FS-Cache 和 iSCSI
增强的 IPv6 支持
改进的 Microsoft 文件/打印和Active Directory集成
5. 桌面
更新的管理工具、应用程序和对笔记本的支持
改进的 ACPI (一种高级的电源管理)支持,包括 Suspend to Disk
智能卡登录,包括 PKI/Kerberos 认证
集成的多媒体支持
增强的即插即用支持
Network Manager 提供自动的有线和无线网络配置
基于 AIGLX/Compiz 的图形化界面(支持淡化、透明等效果)
6. 开发环境
增强的开发工具,包括 System Tap 和 Frysk
GCC4.1 和 glibc 2.5 工具链
7. 存储
支持根设置多路 IO ( MPIO ),提高可用性
服务器产品中包含单系统/客户的 Red Hat Global File System 支持
块设备数据加密支持
8. 管理
安装过程更新简化系统配
基于 Yum/Pup 的 Red Hat Network 更新
Conga 集群和存储管理
ISO 的内容和注册
与产品相关套件的软件组件包的结构与以前版本的 红帽企业 Linux 有所不同。不同种类的媒介套件和 ISO 映像被减少到两种:
红帽企业 Linux 5 服务器
红帽企业 Linux 5 客户端
ISO 映像包含大量的可选软件包,它提供了核心分发版本外的其他功能,如:虚拟化、群集和群集存储。关于服务器套件、客户端套件和可选套件的更多信息,请参考 http://www.redhat.com/rhel/
因为可选的内容也存在在相同的树或 ISO 映像中,所以应该特别注意不要使安装的组件和订阅所提供的组件不匹配。如果这种情况发生了,系统存在错误或安全漏洞的可能性将会增加。
为了保证安装的组件和订阅相匹配,红帽企业 Linux 5 需要输入一个 安装号。它被用来配置安装程序来提供正确的软件包。安装号码包含在你的订阅里。
如果您没有输入安装号码,只有核心服务器或 Desktop 将会被安装。其它功能可以在以后被手工安装。关于安装号码的更多信息,请参考 http://www.redhat.com/apps/support/in.html
在安装过程中被使用的安装号码将被存放在 /etc/sysconfig/rhn/install-num 里。当在 红帽网络 注册时,这个文件将自动被 rhn_register 引用,来决定系统应该订阅到哪个合适的子通道。
RHEL 5 安装 序列号
服务器:
* Red Hat Enterprise Linux (Server including virtualization):
2515dd4e215225dd
+ Red Hat Enterprise Linux Virtualization Platform:
49af89414d147589
客户端:
* Red Hat Enterprise Linux Desktop:
660266e267419c67
+ Red Hat Enterprise Linux Desktop + Workstation Option:
da3122afdb7edd23
+ Red Hat Enterprise Linux Desktop + Workstation + DualOS Option
(Virtualization):
7fcc43557e9bbc42
+ Red Hat Enterprise Linux Desktop + DualOS Option (Virtualization):
fed67649ff918c77
|
1.什么是数据库事务,以及作用?
数据库事务:
事务是由相关操作构成的一个完整的操作单元,在一个事物内,数据的修改一起提交或撤销,如果发生故障或系统错误,
整个事物也会自动撤销。
优点:
把逻辑相关的操作分成了一个组
在数据永久改变前,可以预览数据变化
能过保证数据的读一致性
1. 介绍
1)DOM(JAXP Crimson解析器)
DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准。DOM是以层次结构组织的节点或信息片断的集合。这个层次结构允许开发人员在树中寻找特定信息。分析该结构通常需要加载整个文档和构造层次结构,然后才能做任何工作。由于它是基于信息层次的,因而DOM被认为是基于树或基于对象的。DOM以及广义的基于树的处理具有几个优点。首先,由于树在内存中是持久的,因此可以修改它以便应用程序能对数据和结构作出更改。它还可以在任何时候在树中上下导航,而不是像SAX那样是一次性的处理。DOM使用起来也要简单得多。
2)SAX
SAX处理的优点非常类似于流媒体的优点。分析能够立即开始,而不是等待所有的数据被处理。而且,由于应用程序只是在读取数据时检查数据,因此不需要将数据存储在内存中。这对于大型文档来说是个巨大的优点。事实上,应用程序甚至不必解析整个文档;它可以在某个条件得到满足时停止解析。一般来说,SAX还比它的替代者DOM快许多。
选择DOM还是选择SAX? 对于需要自己编写代码来处理XML文档的开发人员来说, 选择DOM还是SAX解析模型是一个非常重要的设计决策。 DOM采用建立树形结构的方式访问XML文档,而SAX采用的事件模型。
DOM解析器把XML文档转化为一个包含其内容的树,并可以对树进行遍历。用DOM解析模型的优点是编程容易,开发人员只需要调用建树的指令,然后利用navigation APIs访问所需的树节点来完成任务。可以很容易的添加和修改树中的元素。然而由于使用DOM解析器的时候需要处理整个XML文档,所以对性能和内存的要求比较高,尤其是遇到很大的XML文件的时候。由于它的遍历能力,DOM解析器常用于XML文档需要频繁的改变的服务中。
SAX解析器采用了基于事件的模型,它在解析XML文档的时候可以触发一系列的事件,当发现给定的tag的时候,它可以激活一个回调方法,告诉该方法制定的标签已经找到。SAX对内存的要求通常会比较低,因为它让开发人员自己来决定所要处理的tag。特别是当开发人员只需要处理文档中所包含的部分数据时,SAX这种扩展能力得到了更好的体现。但用SAX解析器的时候编码工作会比较困难,而且很难同时访问同一个文档中的多处不同数据。
3)JDOM http://www.jdom.org/
JDOM的目的是成为Java特定文档模型,它简化与XML的交互并且比使用DOM实现更快。由于是第一个Java特定模型,JDOM一直得到大力推广和促进。正在考虑通过“Java规范请求JSR-102”将它最终用作“Java标准扩展”。从2000年初就已经开始了JDOM开发。
JDOM与DOM主要有两方面不同。首先,JDOM仅使用具体类而不使用接口。这在某些方面简化了API,但是也限制了灵活性。第二,API大量使用了Collections类,简化了那些已经熟悉这些类的Java开发者的使用。
JDOM文档声明其目的是“使用20%(或更少)的精力解决80%(或更多)Java/XML问题”(根据学习曲线假定为20%)。JDOM对于大多数Java/XML应用程序来说当然是有用的,并且大多数开发者发现API比DOM容易理解得多。JDOM还包括对程序行为的相当广泛检查以防止用户做任何在XML中无意义的事。然而,它仍需要您充分理解XML以便做一些超出基本的工作(或者甚至理解某些情况下的错误)。这也许是比学习DOM或JDOM接口都更有意义的工作。
JDOM自身不包含解析器。它通常使用SAX2解析器来解析和验证输入XML文档(尽管它还可以将以前构造的DOM表示作为输入)。它包含一些转换器以将JDOM表示输出成SAX2事件流、DOM模型或XML文本文档。JDOM是在Apache许可证变体下发布的开放源码。
4)DOM4J http://dom4j.sourceforge.net/
虽然DOM4J代表了完全独立的开发结果,但最初,它是JDOM的一种智能分支。它合并了许多超出基本XML文档表示的功能,包括集成的XPath支持、XML Schema支持以及用于大文档或流化文档的基于事件的处理。它还提供了构建文档表示的选项,它通过DOM4J API和标准DOM接口具有并行访问功能。从2000下半年开始,它就一直处于开发之中。
为支持所有这些功能,DOM4J使用接口和抽象基本类方法。DOM4J大量使用了API中的Collections类,但是在许多情况下,它还提供一些替代方法以允许更好的性能或更直接的编码方法。直接好处是,虽然DOM4J付出了更复杂的API的代价,但是它提供了比JDOM大得多的灵活性。
在添加灵活性、XPath集成和对大文档处理的目标时,DOM4J的目标与JDOM是一样的:针对Java开发者的易用性和直观操作。它还致力于成为比JDOM更完整的解决方案,实现在本质上处理所有Java/XML问题的目标。在完成该目标时,它比JDOM更少强调防止不正确的应用程序行为。
DOM4J是一个非常非常优秀的Java XML API,具有性能优异、功能强大和极端易用使用的特点,同时它也是一个开放源代码的软件。如今你可以看到越来越多的Java软件都在使用DOM4J来读写XML,特别值得一提的是连Sun的JAXM也在用DOM4J。
2.. 比较
1)DOM4J性能最好,连Sun的JAXM也在用DOM4J。目前许多开源项目中大量采用DOM4J,例如大名鼎鼎的Hibernate也用DOM4J来读取XML配置文件。如果不考虑可移植性,那就采用DOM4J.
2)JDOM和DOM在性能测试时表现不佳,在测试10M文档时内存溢出。在小文档情况下还值得考虑使用DOM和JDOM。虽然JDOM的开发者已经说明他们期望在正式发行版前专注性能问题,但是从性能观点来看,它确实没有值得推荐之处。另外,DOM仍是一个非常好的选择。DOM实现广泛应用于多种编程语言。它还是许多其它与XML相关的标准的基础,因为它正式获得W3C推荐(与基于非标准的Java模型相对),所以在某些类型的项目中可能也需要它(如在JavaScript中使用DOM)。
3)SAX表现较好,这要依赖于它特定的解析方式-事件驱动。一个SAX检测即将到来的XML流,但并没有载入到内存(当然当XML流被读入时,会有部分文档暂时隐藏在内存中)。
3. 四种xml操作方式的基本使用方法
xml文件:
<?xml version="1.0" encoding="utf-8" ?>
<Result>
<VALUE>
<NO DATE="2005">A1</NO>
<ADDR>GZ</ADDR>
</VALUE>
<VALUE>
<NO DATE="2004">A2</NO>
<ADDR>XG</ADDR>
</VALUE>
</Result>
1)DOM
import java.io.*;
import java.util.*;
import org.w3c.dom.*;
import javax.xml.parsers.*;
public class MyXMLReader{
public static void main(String arge[]){
long lasting =System.currentTimeMillis();
try{
File f=new File("data_10k.xml");
DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
DocumentBuilder builder=factory.newDocumentBuilder();
Document doc = builder.parse(f);
NodeList nl = doc.getElementsByTagName("VALUE");
for (int i=0;i<nl.getLength();i++){
System.out.print("车牌号码:" + doc.getElementsByTagName("NO").item(i).getFirstChild().getNodeValue());
System.out.println("车主地址:" + doc.getElementsByTagName("ADDR").item(i).getFirstChild().getNodeValue());
}
}catch(Exception e){
e.printStackTrace();
}
2)SAX
import org.xml.sax.*;
import org.xml.sax.helpers.*;
import javax.xml.parsers.*;
public class MyXMLReader extends DefaultHandler {
java.util.Stack tags = new java.util.Stack();
public MyXMLReader() {
super();
}
public static void main(String args[]) {
long lasting = System.currentTimeMillis();
try {
SAXParserFactory sf = SAXParserFactory.newInstance();
SAXParser sp = sf.newSAXParser();
MyXMLReader reader = new MyXMLReader();
sp.parse(new InputSource("data_10k.xml"), reader);
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("运行时间:" + (System.currentTimeMillis() - lasting) + "毫秒");}
public void characters(char ch[], int start, int length) throws SAXException {
String tag = (String) tags.peek();
if (tag.equals("NO")) {
System.out.print("车牌号码:" + new String(ch, start, length));
}
if (tag.equals("ADDR")) {
System.out.println("地址:" + new String(ch, start, length));
}
}
public void startElement(String uri,String localName,String qName,Attributes attrs) {
tags.push(qName);}
}
3) JDOM
import java.io.*;
import java.util.*;
import org.jdom.*;
import org.jdom.input.*;
public class MyXMLReader {
public static void main(String arge[]) {
long lasting = System.currentTimeMillis();
try {
SAXBuilder builder = new SAXBuilder();
Document doc = builder.build(new File("data_10k.xml"));
Element foo = doc.getRootElement();
List allChildren = foo.getChildren();
for(int i=0;i<allChildren.size();i++) {
System.out.print("车牌号码:" + ((Element)allChildren.get(i)).getChild("NO").getText());
System.out.println("车主地址:" + ((Element)allChildren.get(i)).getChild("ADDR").getText());
}
} catch (Exception e) {
e.printStackTrace();
}
}
4)DOM4J
import java.io.*;
import java.util.*;
import org.dom4j.*;
import org.dom4j.io.*;
public class MyXMLReader {
public static void main(String arge[]) {
long lasting = System.currentTimeMillis();
try {
File f = new File("data_10k.xml");
SAXReader reader = new SAXReader();
Document doc = reader.read(f);
Element root = doc.getRootElement();
Element foo;
for (Iterator i = root.elementIterator("VALUE"); i.hasNext();) {
foo = (Element) i.next();
System.out.print("车牌号码:" + foo.elementText("NO"));
System.out.println("车主地址:" + foo.elementText("ADDR"));
}
} catch (Exception e) {
e.printStackTrace();
}
}
转自:http://blog.chinaunix.net/u/25176/showart_379827.html
定制的Spring Security(Acegi)的并发会话过滤器(ConcurrentSessionFilter)的编码过程
Wed, 10/29/2008 - 08:33 — Fuller
上一帖述及使用ConcurrentSessionFilter限制同帐号登录多次的方法,同帐号多次登录限制是运行系统必需的功能,所以作者对其深入测试,在上一帖中也列举了Spring Security的ConcurrentSessionFilter和ConcurrentSessionControllerImpl类的几个限制。做一下简单的总结,下面假设同时使用DigestProcessingFilter和辅助类:
- 如果exceptionIfMaximumExceeded = true,即第二个发起的会话被禁止,如果一个用户重新启动浏览器,再次登录失败,因为前一个会话没有超时,被当成了多次登录。
- 如果exceptionIfMaximumExceeded = false,如果两个人使用同一个帐号登录,将出现交互将对方踢出去的现象,实际上并没有禁止任何人登录,只是每次要先将另一个人踢下去。
需求
我想使用exceptionIfMaximumExceeded = true,同时允许同一个用户在同一台机器上连续登录多次,我采取了编写定制的ConcurrentSessionController实现类的方法。
原理
ConcurrentSessionController是一个接口,有两个需要实现的方法:checkAuthenticationAllowed()和registerSuccessfulAuthentication(),Spring Security提供了一个实现类ConcurrentSessionControllerImpl,经过分析缺省的实现类,发现方法allowableSessionsExceeded()处理多次并发会话,在SecurityRegistry中保存每个会话的信息,主要是用户帐号对应的会话ID(sessionId)和最后发起时间,在并发发生时,从SecurityRegistry中取出关于某个用户帐号的所有会话,如果exceptionIfMaximumExceeded = false,找到最早一个会话,将其释放掉,腾出空间给新会话,如果exceptionIfMaximumExceeded = true,将发出一个异常。
所以,需要改进allowableSessionsExceeded(),如果exceptionIfMaximumExceeded = true让程序判断客户地址,如果同一个IP,则允许登录,将最早的会话释放掉,如果不是同一个IP在发出异常。
在SecurityRegistry中,用户帐号信息存在一个对象中,名字是principal,当前是一个Object对象,实际上只是存了一个字符串,所以需要扩展principal,写一个定制的类(我的类含有两个属性:username和userip),里面保存客户IP信息。allowableSessionsExceeded()只是使用SecurityRegistry,SecurityRegistry中的内容是由registerSuccessfulAuthentication()方法写入的,所以,在该方法中需要将原来的pricipal对象替换成定制的Principal类的对象。同时checkAuthenticationAllowed()方法也要修改,因为这个方法要查询SecurityRegistry,查询条件替换成定制的Principal类的对象。
注意事项
定制的Principal类要实现equals()和hashCode()和toString()三个方法,在equals()方法中只要username相同就表示两个对象相同,而在hashCode()中只需要将username的hashcode计算在内,因为SecurityRegistry是以principal为关键字的Map容器,这两个方法决定了对Map的查询。toString()方法可以根据自己的需要写,我只是将username输出。
测试
将定制的ConcurrentSessionController对象编制(wire)到应用系统中,经过测试,能够达到预想目的。
存在的问题
原来想省点劲,只要继承ConcurrentSessionControllerImpl并重载上述三个方法就行了,但是不知道为什么securityRegistery属性一直注入不了,一气之下,写了一个直接实现ConcurrentSessionController接口的新类。实际上也不是从头写,将ConcurrentSessionControllerImpl代码改吧该吧即可,用不了几分钟,这就是开源的好处。
转自 http://www.gooseeker.com/cn/node/517
/*********************
* 四舍五入到小数点后两位
燃料子系统有很多数据都要求是固定的格式,并要求四舍五入,一般都是number(12, 2),
如果画面出现数据: 3.1230032..此类可以用myRound(arg1, arg2)处理。
例:
var num = 3.1260032;
var result = myRound(num, 2); // result = 3.13
若num = 1,则结果为1.00
*********************/
/*
* 四舍五入到指定位数
*
* num 要处理的数字
* n 小数点后几位
*/
function myRound(num,n){
var dd=1;
var tempnum;
for(i=0;i<n;i++){
dd*=10;
}
tempnum=num*dd;
// 如果参数非数字,将值置为0
// modified by liyj 2008/6/16 PM
if (tempnum+""=="NaN") {
return formatnumber(0,n);
}
tempnum=Math.round(tempnum);
return formatnumber(tempnum/dd,n);
}
/*
* 格式化数字
*
* value 数值
* num 位数
*/
function formatnumber(value, num) {
var a, b, c, i;
a = value.toString();
b = a.indexOf(".");
c = a.length;
if (num == 0) {
if (b != -1) {
a = a.substring(0, b);
}
} else {
if (b == -1) {
a = a + ".";
for (i = 1; i <= num; i++) {
a = a + "0";
}
} else {
a = a.substring(0, b + num + 1);
for (i = c; i <= b + num; i++) {
a = a + "0";
}
}
}
return a;
}
测试….
<html>
<head>
</head>
<body>
<form action="" method="post" enctype="multipart/form-data" name="form1">
<input name="attach" type="file" onchange="javascript:ShowImg(this.value);" onKeyDown="javascript:return(false);" size="20">
<script language="JavaScript">
function ShowImg(src)
{
document.getElementById("imgDiv").innerHTML="图片预览:<br><img id='imgObj' onerror='javascript:GetError()' onload='javascript:GetSize()' src='file:///" + src + "'>";
}
function GetSize()
{
var width,height;
var imgObj=document.getElementById("imgObj");
width=imgObj.width;
height=imgObj.height;
document.getElementById("err_msg").innerHTML="图片大小(宽×高):<font color=red>" + width + "×" + height + "</font>";
if(width>164){
imgObj.width=164;
imgObj.height=imgObj.height/(imgObj.width/164);
}
}
function GetError()
{
document.getElementById("err_msg").innerHTML="图片大小(宽×高):<font color=red>NaN</font>";
document.getElementById("imgDiv").innerHTML="";
document.getElementById("err_msg").innerHTML="图片文件不存在或格式错误!"
}
</script>
<div id="imgDiv" align="center"></div>
<div id="err_msg" align="center"></div>
</form>
</body>
</html>
申明:此代码来自互联网。
运行
sqlplus回车
longon as sysdba回车
回车
通过上面步骤登陆后修改密码
alter user system identified by pwd
Jsp页面引入js文件注意:
引入的js文件路径要采用绝对路径,在forward的情况下相对路径可能会出错,这是由于jsp页面最终将被便以为servlet,为class,
这时class的路径与原来js文件的相对路径将有所改变。
- 引入的js文件不能识别标签(如:jstl ),如果需要用标签,可以将js文件更改为jspf文件。
始めまして、どうぞよろしくお願いします、まず、自己紹介させていただきます。
オウセイメイ と申します、二十二歳,湖南省の出身です、今年八月に 中国石油大学に卒業しました、コンピューターの専門です。
今年三月に 自習生として、新思ソフト会社に入って、電路プロジェクトの電力チームを入って、開発をしています、
今まで、半年となりました。なお、八月に UMLと関連のUMTP資格を取りました。
得意言語はC++、ジャーバーです、学校に、C++で、軌道交通アナログシステムを開発した、一等賞を得ました。
対日開発会社の関係ので、入社してから、日本語の勉強を始めました、勉強時間が不足なので、日本語のレベルが下手だと思いますが、
でも日本語システム環境で 仕事をやることができるし、日本仕様書も読めます。日本語が難しいですけど、これから、
全力を入れて、勉強していきたいと思います、ぜひ、機会があれば、日本にいって、勉強したいと思います。
どうぞよろしくお願いします。
QueryException: ClassNotFoundException
解决方法:在hibernate.properties上,或是在spring的conext xml中,加上一个属性hibernate.query.factory_class,值为org.hibernate.hql.classic.ClassicQueryTranslatorFactory。
原因:从网上获知,weblogic.jar中已经有了一个antlr.jar的版本,导致应用中hibernate3.jar中用到的antlr.jar不能找到,导致异常。
被这个问题缠绕了一整天,使我的OA项目毫无进展,终于解决了~~
hibernate 查询对象为空
没有主键导致的
在数据库对应的表中设置主键。
Lazy 只有在session初始化
打开状态下才有效,如果session关闭将报proxy can't initialize错误
Jdk 的代理只能对接口进行代理
Cglib 能对类进行代理。
一级缓存之缓存实体化对象,
Get load iterator save都是用了一级缓存。
一级缓存与session的生命周期是一样的。
二级缓存和sessionFactory的生命周期是一致的。
前一段时间有好几个问题,提到怎么判断session是否过期。
接触jspo已经很久了,但是还真没有想过这个问题,当时也就没有找到一个满意的答案给人家。
当时,我提到一个方法,就是实现HttpSessionListener接口,然后在sessionDestroyed()方法中执行一些操作,表示session要过期了,因为这个方法是session.invalidate()之前监听器调用的方法。这个判断的方法显然不能让人满意。
我当时问了些人,但是也没有得到一个准确的答案。
正好偶然间看到,request.getSeesion(boolean)方法,一下子让我恍然大悟。这个方法里面传了一个boolean值,这个值如果是true,那么如果当前的request的session不可用,那么就创建新的会话,如果存在就返回当前的会话。如果参数是false,那么在request的当前会话不存在的时候就返回null。
这样我们就可以很容易的联想到这个所谓的request的当前会话是否存在和session过期的联系,所以我们就可以“近似地”认为session不存在就是session过期了,那么我们就可以很容易地判断session是否过期了。方法如下:
if(request.getSession(false)==null)
System.out.println("Session has been invalidated!");
else
System.out.println("Session is active!");
可能大家注意到我上面有一个“近似地”字眼,也就是说存在特别情况。
这个特殊情况就是第一次请求还没有创建会话的时候,那么用这个方法返回的仍然是null,原因我想大家应该是显然的。
以上是个人拙见,希望大家指正。
原文:http://topic.csdn.net/t/20050225/08/3804877.html