SSH编程中遇到的问题

标签: SSH

 

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 中添加如下配置:

  1. <context-param>
  2. <param-name>contextConfigLocation</param-name>
  3. <param-value>/WEB-INF/applicationContext*.xml,classpath*:/context/applicationContext*.xml</param-value>
  4. </context-param>

如果 applicationContext.xml 存入在 WEB-INF 目录下,请在web.xml下删掉或注释掉以下配置:

  1. <context-param>
  2. <param-name>contextConfigLocation</param-name>
  3. <param-value>/WEB-INF/applicationContext*.xml,classpath*:/context/applicationContext*.xml</param-value>
  4. </context-param>



 

版权声明:本文为weixin_38676276原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_38676276/article/details/80866159