1、找不到hibernate.cfg.xml
configuration 默认的寻找的 hibernate 配置文件是在 src 目录下的 hibernate.cfg.xml,别把它放在 src 的其他目录里
2、Failed to load class "org.slf4j.impl.StaticLoggerBinder".
这个错误是当org.slf4j.impl报道。StaticLoggerBinder类不能被加载到内存中。发生这种情况时,无法找到合适的SLF4J绑定类路径。
放置一个(且只有一个)slf4j-nop.jar, slf4j-simple.jar,slf4j-log4j12.jar, slf4j-jdk14.jar or logback-classic.jar在类路径可以解决这个问题。
3、java.lang.reflect.InvocationTargetException
Hibernate和struts2 自动导包 会有冲突,因为Hibernate导入antlr.jar而struts2也会导入antlr.jar。只要把低版本的删去就好。
4、已经注入了,再次调用时为空
struts.xml 的Action的class应为 applicationcontext.xml 的对应的id
5、想在jsp页面显示的效果如:1991-07-07,但实际在jsp显示的效果是:7/7/91 (或其他格式)
方法1.可以返回格式化后的String
方法2,可以在jsp里面
SimpleDateFormat formatter=newSimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dates=formatter.format(mydate);
来显示dates
如果是struts2标签,可以
<s:date name="#UserInfo.birthday(你所要输出的值)" format="yyyy-MM-dd" />
6、tomcat 中有多个log4j
在项目的web.xml里加
<context-param>
<param-name>webAppRootKey</param-name>
<param-value> 不同的名字.root</param-value>
</context-param>
7、过滤器 重定向循环
跳转的页面在需要过滤的文件夹下
8、SSH整合, Hibernate正确执行了save方法,但是数据没有保存到数据库
Srping的配置文件里的Hibernate的属性配置必须加上
<propkey="hibernate.connection.autocommit">true</prop>
Spring配置文件里加上模型驱动
<tx:annotation-driventransaction-manager="transactionManager"/>
在Service的实现类上添加事务注释@Transactional,如下:
@Transactional
public classUserServiceImplimplements UserService {}
在DAO中获取session的时候应该采用sessionFactory.getCurrentSession();不能采用
sessionFactory.openSession();,否则事务不能自动提交,同时session也不能自动关闭。
9、save()方法添加数据了,可是delete()和Update()方法总是没有效果
原因:session是个一级缓存,当你save的时候,不会存放在缓存中,直接添加到数据库!
update和delete时,会先将session缓存的数据删除,然后提交到数据库,但是你这个时候
已经将session关闭了!要加session.flush()
解决办法一:
在delete()和update()方法后面加入flush()即可
public void delete(Long id) {
Object obj = findById(id);
if(obj!=null)
getSession().delete(obj);
getSession().flush();
}
public void update(T entity) {
getSession().update(entity);
getSession().flush();
}
解决办法二:
使用事务管理@Transactional
10、Ajax上传图片
给后台传图片时,你传的是一个文件而不再是普通的string类型的值。而是file类型,也就是文件类型
我这里说的是用ajax实现的图片上传
10.1.在ajax中加上processData : false,
10.2.在ajax中加上contentType : false,
10.3.在ajax中加上async:false,
10.4.主要是改变ajax中的data这个属性:看代码
function uploadImg() {
var img_file =document.getElementById("imgName");//获取type为file的input元素
var fileObj =img_file.files[0]; //使用files获取该文件,这时已经获取到了文件,可以打印试试
var formData = newFormData(); //使用formData实现图片上传
formData.append("menuImgFile",fileObj); //给formData用append添加这个文件, menuImgFile为type为file的input元素的name
//如果有其他参数,也这样加进去
$.ajax({
type :'POST',
url :url,
data :formData, //不能写键值对形式
processData :false,
contentType :false,
async:false,
dataType :'json',
success :function(data) {
console.debug("data="+ data);
layer.msg('上传成功!', {
icon: 6,
time: 2000
});
},
error :function(data) {
console.log(data);
layer.msg('上传失败!', {
icon: 5,
time: 2000
});
},
});
}
11、编码不同,占的字节不同。
ASCII码:一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间。
UTF-8编码:一个英文字符等于一个字节,一个中文(含繁体)等于三个字节。中文标点占三个字节,英文标点占一个字节
Unicode编码:一个英文等于两个字节,一个中文(含繁体)等于两个字节。中文标点占两个字节,英文标点占两个字节
12
Unable to instantiate Action, xxxAction, defined for 'xxxAction' in namespace '/'xxx
最近写SSH2的项目时,遇到一些小问题,action得不到service实例,遂将struct2委托给spring进行管理,然后修改了bean的id和action的class,但是运行后发现找不到action.
报了这个错误
Unable to instantiate Action, roomtypeAction, defined for 'roomtypeAction' in namespace '/'roomtypeAction
上网找了好久才发现原来原因是这个:
找不到 applicationContext.xml 中 bean id="xxxxx"
解决办法:
首先确认下 applicationContext.xml 文件存放路径
如果 applicationContext.xml 存入在 src 目录下 , 请在 web.xml 中添加如下配置:
-
<context-param>
-
<param-name>contextConfigLocation </param-name>
-
<param-value>/WEB-INF/applicationContext*.xml,classpath*:/context/applicationContext*.xml </param-value>
-
</context-param>
如果 applicationContext.xml 存入在 WEB-INF 目录下,请在web.xml下删掉或注释掉以下配置:
-
<context-param>
-
<param-name>contextConfigLocation </param-name>
-
<param-value>/WEB-INF/applicationContext*.xml,classpath*:/context/applicationContext*.xml </param-value>
-
</context-param>