java web 开发问题总结4 原创-胡志广
121.Data truncation: Data too long for column 'variable' at row 1解决方法
在保存blob类型文件的时候,如果报出了上面的错误,则把数据库中的类型改变longblob类型就可以,原来的类型为blob
122.清空文件域的值
<input name="f" type="file" id="f" size="120">
//用下面的代码可以清空文件域的值
<input name="clear" type="button" id="clear" value="清空" onclick="document.getElementById('f').outerHTML=document.getElementById('f').outerHTML">
主要是这段代码:
document.getElementById('f').outerHTML=document.getElementById('f').outerHTML
123.freemarker变量赋值
<#assign x>${list?size}</#assign>
只要把需要赋的值放在<#assign x></#assign>中间就可以了,一定要注意啊!!!!
取list的size:
${list?size}这里的list为集合
在范围内循环list:
<#list attachmentList[1..x] as list>
</#list>
这里的1是下标开始的位置
X是结束的下标,在上面我们可以定义一个变量给x赋值
注意:这里的X的类型必须为number类型,所以如果为其他类型这里需要把X转换为number可以这样[1..(x?number)],其次这里的X是list的总数-1,所以不要越界,这里也需要注意,下面举个例子:
<#if sendAttachment??>
<#assign y>${sendAttachment?size}</#assign>
<#list sendAttachment[1..(y?number-1)] as c>
${c}
</#list></#if>
上面语句的意思:
<#if sendAttachment??>这句的意思为判断集合是否存在
<#assign y>${sendAttachment?size}</#assign>为变量y赋值
<#list sendAttachment[1..(y?number-1)] as c>的意思为:[1..(y?number-1)]
这里1的意思是下标从1开始循环,然后y?number-1的意思是把y转换为number类型然后-1
集合循环生成序列方式:
<#list listValue as list>
${list_index}
</#list>
<#assign x=1><#if sendAttachment??><#assign y>${sendAttachment?size}</#assign><#if y?number<=1><#else><#list sendAttachment[1..(y?number-1)] as c>
<#assign x=x+1>${x}.${c}
</#list></#if></#if>
<#if y?number<=1>判断集合长度是否小于等于1
判断一个值是否存在,存在则读值,否则读默认值
<#if speedlevel?exists>${speedlevel}<#else>普通</#if>
判断是否为空
${name?if_exists}
124.powerDesigner反向生成库
右键库模型->properties->proview
这里面就是数据库的源代码了
125.使整个页面变灰的css样式(默哀天)
body{filter:Gray;}
在css中加入该样式即可
126.文件输出流刷新
当用
FileOutputStream fos = new FileOutputStream("E:/3.zip"); BufferedOutputStream bs=newBufferedOutputStream(fos);
byte[] buffer = new byte[1024];
while(true){
try {
int k = bi.read(buffer);
File newfile=new File("E:\\3.zip");
System.out.println(newfile.length()+"+++++++++++++++++++++");
// System.out.println(k+"_______________________________________");
if(k==-1){
break;
}else{
bs.write(buffer);
}
} catch (IOException e) {
e.printStackTrace();
}
}
try {
bs.flush();
bs.close();
bi.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
输出流进行输出时
最好在最后的时候刷新输出流
bs.flush();
否则有时候会在最后的时候少一些文件流的信息。
127.用freemarker生成动态页面时,最好用shtml
用freemarker生成动态页面时,最好不用把扩展名定义为html,除非生成真正的静态页(.html),否则最好应用shtml,或者其他扩展名
128.Freemarker 的if用法
<#if sendName?exists>${sendName}<#else></#if>
sendName?exists或sendName??判断是否为null
129.outlook保留服务器副本
然后点击更改->
选择其他设置->高级->勾选上“在服务器上保留邮件副本”
如果需要发送邮件需要进行如下设置:
在发送服务器中设置上用户名和密码
130.抛异常处理,直接输出到指定文件位置
try {
list = this.getHibernateTemplate().find(hql);
} catch (Exception e) {
e.printStackTrace(new PrintStream(new File("E:\\1.txt")));
}
131.mailto 传参数乱码
如果直接
<a href="mailto:?subject=中文">联系我们</a>
用utf-8编码,传到outlook中将会是乱码,如果传中文的话,那么需要将页面的编码改为gb2312就没有问题了
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
</head>
<body>
<a href="mailto:?subject=中文">联系我们</a>
</body>
</html>
132.Extjs图片路径问题
如页面是http://localhost:8080/caep/index.html
Extjs的文件夹在caep/js下
那么设置图片路径为:
Ext.BLANK_IMAGE_URL="js/resources/images/default/s.gif";
取相对路径就可以了。
133.在PPT和word中添加阴影效果
134.对象比较用equals
Integer类型和Integer 类型做比较时,如果2个数值很大,如1802和1802用“==”来比较则会有问题,所以用equals比较,是通过对象比较则没有问题;或者就用原始类型int类比较也可以
135.Js动态写json的 key
needWomanRes[key]
136.在eclipse中导入jar包
右键项目属性,打开窗口:
然后点击Add JARs…
可以添加本项目的jar包
137.Js函数参数调用
在js的函数中,将函数作为参数,则需要如下进行解析
eval(函数名);
例:
function test(way){
//解析后就可以执行way方法了
eval(way);
}
在页面中调用方法时:
onClick=”test(‘test1(/’aaaa/’)’)”
在进行传递参数时,有时需要进行字符转义/’/’
138.spring 事务处理异常回滚
在service中,已经注册了事务代理
在service中A方法调用B方法时
必须A()和B(),这2个方法都进行throws Exception,抛异常处理,在控制器中才可以获取到异常;
如果A进行了try catch的形式进行自定义处理则不能进行捕获异常进行回滚。
139.表单项的NAME属性无法进行赋值
在页面中如果不进行添加上这一行:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
那么如果用
document.getElementById("111").setAttribute("name","single");
对表单项的name属性进行赋值时,通过下面的语句变获取不到name属性
alert(document.body.innerHTML);
所以如果需要对name属性进行操作时,需要加上w3c标准
140. JS 比较字符串忽略大小写
Var a=”Abc”;
Var b=”aBc”;
因为在js中比较只能用==
所以:
Alert(a==b);
输出结果是false
因为他们的值不一样,有大写有小写
所以我们就将他们统一转换为小写进行比较:
a =a. toLowerCase();
b=b. toLowerCase();
alert(a==b);
输出为true
所以我们如果要忽略大小写比较时,最好先将字符穿进行大小写统一转换在js中,刚才用的就是将字符穿统一转换为小写:toLowerCase()
141.fck_docprops.html报错解决
在Java的工程中加入fck时MyEclipse会包fck_docprops.html错误,原因是因为用了怪异的标签,没有告诉MyEclipse,解决方法:
选中当前工程—properties—MyEclipse—validation—Excluded Resource下找到fck_docprops.html打钩就可以不检查该文件了,然后就不报错了!
142.FCK配置
在web.xml中配置上:
<servlet>
<servlet-name>Connector</servlet-name>
<servlet-class>
net.fckeditor.connector.ConnectorServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Connector</servlet-name>
<url-pattern>/fckeditor/editor/filemanager/connectors/*</url-pattern>
</servlet-mapping>
然后在classpath下配置上:
fckeditor.properties文件
内容为:
connector.userActionImpl=net.fckeditor.requestcycle.impl.UserActionImpl
然后需要在lib中引入这么些包
Java-core-2.4.1.jar是fck的核心包,web.xml中配置中也是引入的该包内容,如果不进行该包配置,那么启动项目时会找不到相应的类,如报错:
找不到net.fckeditor.connector.ConnectorServlet类
143.Mysql #1005 - Can't create table '.\anykorea\anykorea_feedback.frm' (errno: 121)错误解决办法
#1005 - Can't create table '.\anykorea\anykorea_feedback.frm' (errno: 121)在创建表时如果mysql报了上面的错误,那么是因为在创建表时的外键的名称与以前表的外键名称一样了,所以改下外键的名称重新创建表就可以了。
144对象未注入ID,无法找到对象引起的HIBERNATE问题解决方法
org.springframework.dao.InvalidDataAccessApiUsageException: object references an unsaved transient instance - save the transient instance before flushing: com.ecoinfo.caep_auth.vo.AuthMenuModel; nested exception isorg.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: com.ecoinfo.caep_auth.vo.AuthMenuModel
在一个对象(POJO)进行保存关联对象时,需要进行注入,而注入时,对象不能是个无索引的对象,上面的错误就是AuthMenuModel这个类,因为没有注入ID,所以在库中找不到,所以被定义为一个未保存的临时对象,所以在new了一个临时对象后,如果需要外键插入一定要setID,否则会找不到,就会报这个问题了,无法出现临时对象,所以将AuthMenuModel注入ID后,再插入到对象中,然后保存就没有问题了。
例:
AuthUserPermission authUserPermission=new AuthUserPermission();
AuthMenuModel authMenuModel=new AuthMenuModel();
authDao.saveObject(authUserPermission);
这样执行后,就会报上面的错误,因为authMenuModel是个临时对象,在库中没有找到;
AuthUserPermission authUserPermission=new AuthUserPermission();
AuthMenuModel authMenuModel=new AuthMenuModel();
authMenuModel.setId(menuModelKey);
authDao.saveObject(authUserPermission);
这样注入ID后,对象就有了索引,根据索引可以注入了,所以就不会出现问题了。
145 union 和union all 用法总结
大概的思想是用union 和union all
--合并重复行
select * from A
union
select * from B
--不合并重复行
select * from A
union all
select * from B
按某个字段排序
--合并重复行
select *
from (
select * from A
union
select * from B) AS T
order by 字段名
--不合并重复行
select *
from (
select * from A
union all
select * from B) AS T
order by 字段名
146 hibernate 父类获取子类类型
在hibernate 中配置类子类后,其中用一表多类的方式进行配置后,那么将会有一个是隐性字段,那么我们如何通过父类获取子类类型呢?并且在hql中进行查询,那么在下面举个例子来看一下:
其中hbm.xml配置如下:
<class name="com.ecoinfo.caep_auth.vo.AuthAuthGU" table="auth_auth_g_u">
<id name="id" type="long">
<column name="id" />
<generator class="identity" />
</id>
<discriminator type="java.lang.String" column="type" />
<many-to-one name="authMenuModel" fetch="select">
<column name="menu_model_id" />
</many-to-one>
<many-to-one name="permissions">
<column name="permission_id"></column>
</many-to-one>
<property name="status" type="java.lang.Integer">
<column name="status" />
</property>
<subclass name="com.ecoinfo.caep_auth.vo.AuthUserPermission" discriminator-value="user">
<many-to-one name="user" fetch="select">
<column name="auth_id" />
</many-to-one>
</subclass>
<subclass name="com.ecoinfo.caep_auth.vo.AuthUserGroupPermission" discriminator-value="group">
<many-to-one name="group" fetch="select">
<column name="auth_id" />
</many-to-one>
</subclass>
</class>
那么如果我们通过父类要查询该类是属于哪种类型如何进行判断呢?
那么就用反射的机制进行判断
如:
String hql=”from AuthAuthGU aag where aag.class= AuthUserPermission”;
那么也就是类型为AuthUserPermission类的被查询出来(也就是type类型为user)
147.FCK 工具栏创建、修改和引用
在fckconfig.js中找到FCKConfig.ToolbarSets 段,默认有两个工具条样式,一个是Default,一个是Basic
如:
FCKConfig.ToolbarSets["Default"] = [
['Source','DocProps','-','Save','NewPage','Preview','-','Templates'],
['Cut','Copy','Paste','PasteText','PasteWord','-','Print','SpellCheck'],
['Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'],
['Form','Checkbox','Radio','TextField','Textarea','Select','Button','ImageButton','HiddenField'],
'/',
['Bold','Italic','Underline','StrikeThrough','-','Subscript','Superscript'],
['OrderedList','UnorderedList','-','Outdent','Indent','Blockquote','CreateDiv'],
['JustifyLeft','JustifyCenter','JustifyRight','JustifyFull'],
['Link','Unlink','Anchor'],
['Image','Flash','Table','Rule','Smiley','SpecialChar','PageBreak'],
'/',
['Style','FontFormat','FontName','FontSize'],
['TextColor','BGColor'],
['FitWindow','ShowBlocks','-','About'] // No comma for the last row.
] ;
FCKConfig.ToolbarSets["Basic"] = [
['Bold','Italic','-','OrderedList','UnorderedList','-','Link','Unlink','-','About']
] ;
其中语法:
其定制语法很简单
[] 表示一个工具条,
[] 中的短横线'-'表示一个垂直分割线
'' 两个单引号中间加一个标识符表示一个工具栏按钮,具体的对应关系可以自己找。
'/' 作用类似于一个回车。使该符号后面的工具栏新起一行排列。
如果需要新建一个工具栏样式则:
FCKConfig.ToolbarSets["Train"] = [
['Bold','Italic','-','OrderedList','UnorderedList','-','Link','Unlink','-','About']
] ;
我新建了一个工具栏Train,并且里面有相应的按钮属性
然后在我们的页面中进行调用,如:
<FCK:editor id="content" basePath="/china-eia/FCKEditor/" toolbarSet="Train" width="100%" height="270">${content }
</FCK:editor>
将toolbarSet="Train"为新建的工具栏就可以了,由于版本和调用方式不同,可能使用上有不一致,但是只要将页面中的toobarSet设置为相应的名称就OK了。
148 sql中exists与in的效率区别
两张表——用户表TDefUser(userid,address,phone)和消费表 TAccConsume(userid,time,amount),需要查消费超过5000的用户记录。
用exists:
select * from TDefUser
where exists (select 1 from TAccConsume where TDefUser.userid=TAccConsume.userid and TAccConsume.amount>5000)
用in:
select * from TDefUser
where userid in (select userid from TAccConsume where TAccConsume.amount>5000)
通常情况下采用exists要比in效率高。
exists()后面的子查询被称做相关子查询 他是不返回列表的值的.只是返回一个ture或false的结果(这也是为什么子查询里是"select 1"的原因,换成"select 6"完全一样,当然也可以select字段,但是明显效率低些)
其运行方式是先运行主查询一次 再去子查询里查询与其对应的结果 如果是ture则输出,反之则不输出.再根据主查询中的每一行去子查询里去查询.
in()后面的子查询 是返回结果集的,换句话说执行次序和exists()不一样.子查询先产生结果集,然后主查询再去结果集里去找符合要求的字段列表去.符合要求的输出,反之则不输出.
149 MySql#1166 - Incorrect column name 的解决方法
今天在用phpMyAdmin给数据库中的表添加一个字段时报如下的错误
错误
SQL 查询:
CREATE TABLE `abc`.`html_content` (
`category_id` INT NULL ,
`h_status ` TINYINT NULL
) ENGINE = MYISAM ;
MySQL 返回:
#1166 - Incorrect column name 'h_status '
解决方法,字段是复制的吧,复制的里面是不是有空格?去掉就可以了,嗯
150运行Rose 提示错误: 未找到 suite objects.dll
我在win7上安装的目录是E:\Program Files\Rational
suite objects.dll在Common(大写)下,
打开环境变量(如下说明)查看到rose的路径下Common是大写的common,于是重新把path里的路径重写了一下。这次再运行····OK了··
其实suite objects.dll 还在你的电脑中,只是环境变量错了或者没设置,造成找不到。我安装的地址是E:\Program Files\Rational\,suite objects.dll在E:\Program Files\Rational\Common文件夹下。解决步骤如下:
1.右击 我的电脑
2.选择 高级->环境变量
3.编辑path,在原path添加 ";E:\Program Files\Rational\Common"(引号内添加,引号不用加进去)
4.启动rose,OK。
151 sql合并表,标识字段来源
select id,name,englisheName, 1 as "table" from tab1
UNION
select id,name,englisheName, 2 as "table" from tab2
合并后,在每个查询语句中加入标识判断合并字段来源
152.动态加载图像
<script language="JavaScript">
myImage = new Image;
myImage.src = "Tellers1.jpg";
</script>
153 网页关闭时调用js
<script language="JavaScript">
function a(){
alert();
}
window.onunload = a; //注册关闭后的事件
</script>
154当链接(a)触发单击事件时进行监听
document.onclick = function(e){
var e = e || event;
var element = e.target || e.srcElement;
if(element.tagName.toLowerCase() == "a"){
element.isVisited = true;
}
}
155 Js获取当前url
location.href
156 Js获取父页url
If window.opener.!=undefined){
window.opener.location.href
}
157 jsp中获取前一个页面的url包括参数
假如有两个页面 index.jsp 和indexto.jsp
一 index.jsp中有如下链接
<a href="indexto.jsp">indexto</a>
二 indexto.jsp中
<%
String url = request.getHeader("Referer");
System.out.println(url);
%>
当我们访问 ../index.jsp?id=2 时进入index页面, 点击indexto链接.
在控制台将输出../index.jsp?id=2 也就是说在indexto.jsp页面获取了,index的url包括参数.
158 win7下安装oracle10g的方法 (Forward)
win7下安装oracle10g的方法
查找安装文件夹中的refhost.xml文件. (Oracle 10g客户端\stage\prereq\client\refhost.xml;oracle10g服务端\stage\prereq\db\refhost.xml)在此文件中 添加如下内容 |
159 Js弹开窗口方式
Window.open();
window.showModalDialog();
160 Referrer ie 获取不到的几种解决方法
(1) window.open方式打开新窗口
示例:
<a href="#" onclick="window.open('http://www.google.com')">访问Google</a>点击此链接会在新窗口打开Google网站,我们在地址栏中输入以下js代码就可以看到发送的referrer了。
javascript:alert(document.referrer)测试结果:
IE5.5+ 下返回空字符串
Chrome3.0+,Firefox3.5,Opera9.6,Safari3.2.2均正常返回来源网页
如果是同个域名下通过此方式跳转的,那么我们可以通过访问windoww.opener对象去获取丢失的referrer信息。代码如下:
<script type="text/javascript">
var referrer = document.referrer;
if (!referrer) {
try {
if (window.opener) {
// IE下如果跨域则抛出权限异常
// Safari和Chrome下window.opener.location没有任何属性
referrer = window.opener.location.href;
}
}
catch (e) {}
}
</script>跨域的话则没辙了~
161 Js获取系统分辨率
<script type="text/javascript" language="javascript">
document.write('您显示器的分辨率为:\n' + screen.width + '×' + screen.height + ' 像素');
</script>
screen.width
screen.height
162. powerDesigner只显示表不显示字段和类型的解决方法
点tools->Display Proferences….弹出如下窗口
选择table
勾选Column
选择all Column
然后选择Column下的data type
然后选择set as Default
点击Advance
点击ok
弹出窗口:
然后选择all symbols
这样就可以应用全部了,然后显示结果如下:
这样就会显示字段名称和类型了
163 Linux 创建shell
Linux中有好多中不同的shell,但是通常我们使用bash (bourne again shell) 进行shell编程.
这里举一个创建执行shell脚本的例子供我们学习交流。
假设现在是在:/home/rhythm/test 这样一个目录下
#创建一个脚本文件,shell脚本的后缀名一般都是.sh,类似于windows下的.bat
:touch test.sh
#让我们的文件可执行
:chmod +x test.sh
#vim命令进入文件编辑(查看可以用cat filename)
:vim test.sh
#点击"A"进入编辑模式,并输入内容
#定义变量
HOMEDIR=/home/rhythm/home
FILENAME=test.war
#[ -f "somefile" ] :判断是否是存在这样的文件。注意这里的空格很重要,要确保方括号的空格。
if [ -f $HOMEDIR/$FILENAME ]; then
echo "正在部署新版本..."
echo "请稍等30秒..."
mv $HOMEDIR/$FILENAME
sleep 30
echo "新版本已经部署..."
else
echo "没有要部署的..."
fi
#点击"Esc"然后"Shift+:"进入命令行模式
#保存并推出
:wq
#加上软链接,以便运行。
:ln -s /home/rhythm/test/test.sh /usr/bin/test.sh
#运行并调试
:sudo test.sh
更多:http://hi.baidu.com/lipeng_tsinghua/blog/item/0dc816fa8c05b59759ee903a.html
164虚拟64位linux系统,cpu不支持解决方法
今天在笔记本上试图虚拟一个64位LINUX系统,VMWARE报错。
尝试虚拟的操作系统是Oracle的Enterprise Linux 4 for X86-64,因此在系统选项中选择了Other Linux 64bit,尝试系统后系统报错:
This CPU is VT-capable, but VT is not enabled (check your BIOS settings).
You have configured this virtual machine as a 64-bit guest operating system. However, this host's CPU is not capable of running 64-bit virtual machines or this virtual machine has 64-bit support disabled.
For more detailed information, see http://www.vmware.com/info?id=152
点击确定,屏幕显示错误信息为:
Your CPU does not support long mode. Use a 32bit distribution.
对于这种情况,需要设置BIOS将Inter Virtualization Technology设置为ENABLE,然后重启系统,就可以了。
如果BIOS设置了没有类似的设置,那么系统就无法虚拟64位的系统了。
165 Centos 分区
经过长时间的使用CentOS,对CentOS分区有一定的总结。本人在这里所要说的,是个人在安装Centos时候对CentOS分区所得的心得。
在CentOS分区的时候有按自动分区的,这样子CentOS分区虽不会出现什么错误,但是对于个人自己的要求不同就会出现这样子或那样的问题。根据我的地盘我做主的原则,我们还是要对CentOS分区有一定的了解。
在这里我的硬盘是80G,内存是1G。我的分区原则是:
上面我的分区方式,下面是一些网友的方式:
166 解决centos putty ssh 和终端乱码的方法
#vi /etc/sysconfig/i18n
LANG="zh_CN.GB18030"
LANGUAGE="zh_CN.GB18030:zh_CN.GB2312:zh_CN"
SUPPORTED="zh_CN.UTF-8:zh_CN:zh:en_US.UTF-8:en_US:en"
SYSFONT="latarcyrheb-sun16"
保存
#source /etc/sysconfig/i18n
重新启动机器(这点很重要,如果不重起,那么终端则显示为乱码)
167 linux rpm
rpm –ihv [名称].rpm
安装文件显示进度
在linux下安装rpm包时经常会遇到下面这个问题:
error: Failed dependencies:
.....................................................
省略号表示安装此rpm缺少的包。
遇到此问题时可以在安装rpm包命令的后面加两个参数,如:
rpm -ivh libstdc++5.0-3.3.3-62745cl.i386.rpm
改成:
rpm -ivh libstdc++5.0-3.3.3-62745cl.i386.rpm --nodeps –force
加上那两个参数的意义就在于,
安装时不再分析包之间的依赖关系而直接安装,
也就不会再提示error: Failed dependencies:这样的错误了
168 Linux 下安装oracle 11g 问题解决方法
报“无法使用命令/usr/bin/xdpyinfo自动检查显示器颜色”
解决方法:
xhost +
在root下执行
执行./runInstall 时报权限不够,那么则将database oracle11g的安装目录改变权限
Chown –R 775 database
169 Linux 下启动oracle 监听报错解决方法
切换到oracle用户下
su - oracle
启动监听:
lsnrctl start
报如下错误:
TNSLSNR for Linux: Version 11.2.0.1.0 - Production
System parameter file is /u01/oracle/product/11.2.0/dbhome_1/network/admin/listner.ora
Log messages written to /u01/oracle/diag/tnslsnr/oracle11g/listener/alert/log.xl
Error listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
TNS-12555: TNS:permission denied
TNS-12560: TNS:protocol adapter error
TNS-00525: Insufficient privilege for operation
Linux Error: 1: Operation not permitted
Listener failed to start. See the error message(s) above...
解决方法:
通过日志错误信息可知,应该跟权限有关,最后发现了一个隐藏的信息,
/var/tmp/.oracle这个目录比较特殊,如果oracle没有对此目录的操作权限的话,oracle用户就无法进入/var/tmp/.oracle文件夹.
方法很简单,执行:chmod 777 /var/tmp/.oracle
之后就ok了.
170 本地监听无法连接服务解决方法
当连接服务器时,报如下错误
ORA-12154
首先,测试服务器的监听是否开启,如果开了的话,那么测试本地
点击
前2项都默认就ok
进行本地网络服务名配置时需要注意
服务名也就是oracle的hostname
主机名则是ip,如192.168.110.128
进行测试
测试成功
171 Ssh 上传报错解决方法
提示encountered 1 errors during the transfer错误的解决方法:
我在用ssh 往服务器上传文件时,系统报错:
encountered 1 errors during the transfer
文件怎么也传输不上去,经过实验终于找到了解决方法,
那就是:
將要传输的文件拷贝到其他的分区上,然后再传就可以了。
172 配置svn权限
[/]
*=rw
[/]根目录
*所有用户
r 读
w 写
[jdodrc:/saa/]
admin=r
huzhg=rw
Jdodrc是库
jdodrc:/saa/是库下的/saa/文件夹
admin可对jdodrc下的saa进行读
huzhg可对jdodrc下的saa进行读和写
173 spring3 整合 hibernate3.3和struts2的解决方法
(1)Cannot proxy target class because CGLIB2 is not available. Add CGLIB to the class path or specify proxy interfaces
需要加上:cglib-2.1.3.jar
加上cglib-2.1.3.jar包后,又会出现如下错误:
nested exception is java.lang.NoClassDefFoundError: org/objectweb/asm/Type
原因是Spring中的cglib-nodep-2.1.3.jar与Hibernate中的cglib-2.2.jar相冲突!
两种框架整合时Spring中的cglib-nodep-2.1.3.jar是必须的,取消Hibernate中的cglib-2.1.3.jar即可
所以删掉cglib-2.1.3.jar,加上cglib-nodep-2.1.3.jar就可以了
(2) Xlint:invalidAbsoluteTypeName异常
这个异常是因为aop的配置出现了错误,请仔细检查aop路径
<aop:pointcut id="txServices" expression="execution(* dao.*.*(..))"/>
第一个*是范围(public,private等)
后面的*代表路径也可以写详细的路径
..是任何参数
(3) 用tx标签配置事务代理
<!-- 配置事务管理器 -->
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="sessionFactory"/>
</property>
</bean>
<!-- 配置事务特性 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="add*" propagation="REQUIRED"/>
<tx:method name="insert" propagation="REQUIRED"/>
<tx:method name="save" propagation="REQUIRED"/>
<tx:method name="modify*" propagation="REQUIRED"/>
<tx:method name="delete*" propagation="REQUIRED"/>
<tx:method name="*" read-only="true" propagation="NEVER"/>
</tx:attributes>
</tx:advice>
<!-- 配置那些类的方法进行事务管理 -->
<aop:config proxy-target-class="true">
<aop:pointcut id="allManagerMethod" expression="execution (* org.lxh.ssh.PersonDAOImpl.*(..))"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="allManagerMethod"/>
</aop:config>
(4) 整合spring和struts2
Struts.properties 文件:
struts.objectFactory = org.apache.struts2.spring.StrutsSpringObjectFactory
struts.xml:
<struts>
<constant
name="struts.objectFactory" value="org.apache.struts2.spring.StrutsSpringObjectFactory" />
...
</struts>
(5) 解决java.lang.NoClassDefFoundError: javax/transaction/TransactionManager问题办法是:
下个jta.jar就可以了。很不好意思做了上面错误的回答。
下载地址:http://java.sun.com/products/jta/
(6) Struts2.1.8.1 Unable to load configuration 解决方案
导入fileupload包
174 启动oracle监听错误解决方法
[oracle@localhost ~]$ lsnrctl start
lsnrctl:error while loading shared libraries: /u01/app/oracle/product/11.2.0/dbhome_1/lib/libclntsh.so.11.1: cannot restore segment prot after reloc: Permission denied
解决方法:
关闭 selinux :编辑 /etc/selinux/config 文件,添加 SELINUX=disabled
或者修改 libclntsh.so.11.1 文件的权限(这个可以)
chcon -t texrel_shlib_t /u01/app/oracle/product/11.2.0/dbhome_1/lib/libclntsh.so.11.1
175 解决oracle数据启动不了
lsnrctl: lsnrctl: cannot execute binary file
这个不是oracle的问题,而是在改linux编码方式时,vi /etc/sysconfig/i18n,我少了个引号,在切换用户时,可以看到如下错误:
-bash: /etc/sysconfig/i18n: line 3: unexpected EOF while looking for matching `"'
-bash: /etc/sysconfig/i18n: line 4: syntax error: unexpected end of file
然后我们检查/etc/sysconfig/i18n这个文件,检查好内容保存后,在重新启动oracle监听就可以了,这些都是出自不细心的问题,而且问题在linux不在oracle的配置
176 linux下安装oracle报错:./runInstaller:line 55
运行./runInstaller,它直接给我报权限不够。
解决方法:
chmod -R 755 安装包所在路径
177.调整linux分辨率
178 Hibernate SQL方言 (hibernate.dialect)
如果出现如下错误,则可能是Hibernate SQL方言 (hibernate.dialect)设置不正确。
Caused by: java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]'last_insert_id' 不是可以识别的 函数名。
RDBMS |
方言 |
DB2 |
org.hibernate.dialect.DB2Dialect |
DB2 AS/400 |
org.hibernate.dialect.DB2400Dialect |
DB2 OS390 |
org.hibernate.dialect.DB2390Dialect |
PostgreSQL |
org.hibernate.dialect.PostgreSQLDialect |
MySQL |
org.hibernate.dialect.MySQLDialect |
MySQL with InnoDB |
org.hibernate.dialect.MySQLInnoDBDialect |
MySQL with MyISAM |
org.hibernate.dialect.MySQLMyISAMDialect |
Oracle (any version) |
org.hibernate.dialect.OracleDialect |
Oracle 9i/10g |
org.hibernate.dialect.Oracle9Dialect |
Sybase |
org.hibernate.dialect.SybaseDialect |
Sybase Anywhere |
org.hibernate.dialect.SybaseAnywhereDialect |
Microsoft SQL Server |
org.hibernate.dialect.SQLServerDialect |
SAP DB |
org.hibernate.dialect.SAPDBDialect |
Informix |
org.hibernate.dialect.InformixDialect |
HypersonicSQL |
org.hibernate.dialect.HSQLDialect |
Ingres |
org.hibernate.dialect.IngresDialect |
Progress |
org.hibernate.dialect.ProgressDialect |
Mckoi SQL |
org.hibernate.dialect.MckoiDialect |
Interbase |
org.hibernate.dialect.InterbaseDialect |
Pointbase |
org.hibernate.dialect.PointbaseDialect |
FrontBase |
org.hibernate.dialect.FrontbaseDialect |
Firebird |
org.hibernate.dialect.FirebirdDialect |
jdbc连接各种数据库方式列表
下面罗列了各种数据库使用JDBC连接的方式,可以作为一个手册使用。
1、Oracle8/8i/9i数据库(thin模式)
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
String url="jdbc:oracle:thin:@localhost:1521:orcl"; //orcl为数据库的SID
String user="test";
String password="test";
Connection conn= DriverManager.getConnection(url,user,password);
2、DB2数据库
Class.forName("com.ibm.db2.jdbc.app.DB2Driver ").newInstance();
String url="jdbc:db2://localhost:5000/sample"; //sample为你的数据库名
String user="admin";
String password="";
Connection conn= DriverManager.getConnection(url,user,password);
3、Sql Server7.0/2000数据库
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mydb";
//mydb为数据库
String user="sa";
String password="";
Connection conn= DriverManager.getConnection(url,user,password);
4、Sybase数据库
Class.forName("com.sybase.jdbc.SybDriver").newInstance();
String url =" jdbc:sybase:Tds:localhost:5007/myDB";//myDB为你的数据库名
Properties sysProps = System.getProperties();
SysProps.put("user","userid");
SysProps.put("password","user_password");
Connection conn= DriverManager.getConnection(url, SysProps);
5、Informix数据库
Class.forName("com.informix.jdbc.IfxDriver").newInstance();
String url = "jdbc:informix-sqli://123.45.67.89:1533/myDB:INFORMIXSERVER=myserver;
user=testuser;password=testpassword"; //myDB为数据库名
Connection conn= DriverManager.getConnection(url);
6、MySQL数据库
Class.forName("org.gjt.mm.mysql.Driver").newInstance();
//或者Class.forName("com.mysql.jdbc.Driver");
String url ="jdbc:mysql://localhost/myDB?user=soft&password=soft1234&useUnicode=true&characterEncoding=8859_1"
//myDB为数据库名
Connection conn= DriverManager.getConnection(url);
7、PostgreSQL数据库
Class.forName("org.postgresql.Driver").newInstance();
String url ="jdbc:postgresql://localhost/myDB" //myDB为数据库名
String user="myuser";
String password="mypassword";
Connection conn= DriverManager.getConnection(url,user,password);
8、access数据库直连用ODBC的
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver") ;
String url="jdbc:odbc:Driver={MicroSoft Access Driver (*.mdb)};DBQ="+application.getRealPath("/Data/ReportDemo.mdb");
Connection conn = DriverManager.getConnection(url,"","");
Statement stmtNew=conn.createStatement() ;
179 Spring 3.0 初始化错误
报如下错误:
java.lang.NoClassDefFoundError: org/springframework/expression/PropertyAccessor
少org.springframework.expression-3.0.5.RELEASE.jar包,加到lib下即可
180 删除存在的表时,提示“ORA-00942”错误
删除存在表时报“ORA-00942”错误,那么请查看你的表名中是否有小写?如果有小写,那么删除时请在删除表上加上引号,例:
Drop table “test
上一篇: Impala首个正式版本发布(Spring 的动态模块)
下一篇: 带超时的涵数装饰器py版